Self-Hosted v3-engine Console Fails to Load Due to 404/CORS on unpkg.com Assets
Component
c/v3-console
Console -> c/v3-console
What is the current behaviour?
When deploying the v3-engine to a Kubernetes cluster and accessing it via a public HTTPS URL, the Hasura Console UI fails to load. The page remains stuck on "Loading...". The browser's developer console shows critical errors indicating that it's trying to fetch UI assets from unpkg.com. These requests fail with a combination of a 404 Not Found error and a CORS policy error. This prevents the GraphiQL interface from initializing, leading to a fatal ReferenceError: GraphiQL is not defined. The /graphql endpoint itself works correctly for API requests; only the Console UI is affected. The issue has been observed in both v2025.06.26 and v2025.07.02 versions of the v3-engine.
What is the expected behaviour?
The Hasura Console UI should load successfully in a self-hosted Kubernetes environment, just as it does when running locally. The UI assets should be fetched successfully without CORS or 404 errors. Ideally, there should be a configuration option to serve all console assets locally from the container itself, to avoid reliance on external CDNs in a production environment.
How to reproduce the issue?
1.Deploy the ghcr.io/hasura/v3-engine:v2025.07.02 Docker image to a Kubernetes cluster. 2.Configure the necessary environment variables for it to connect to a metadata database. 3.Expose the service on port 8080 via a Kubernetes Service and Ingress controller, configured with a public HTTPS domain. 4.Navigate to the public domain in a web browser. 5.Open the developer console and observe the network and console tabs. The UI will be stuck on "Loading..." and the errors will be present in the console.
Screenshots or Screencast
Please provide any traces or logs that could help here.
The following errors are observed in the browser's JavaScript console: Access to script at 'https://unpkg.com/@graphiql/[email protected]/dist/index.umd.js' (redirected from 'https://unpkg.com/@graphiql/plugin-explorer/dist/index.umd.js') from origin 'https://ddn-dev.kaktu.al' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. GET https://unpkg.com/@graphiql/[email protected]/dist/index.umd.js net::ERR_FAILED 404 (Not Found) Uncaught ReferenceError: GraphiQL is not defined at (index):79:23
Any possible solutions/workarounds you're aware of?
The primary issue seems to be that the v3-engine container has hard-coded URLs to external CDN assets that are now resulting in a 404. A robust solution would be to introduce an environment variable (e.g., HASURA_GRAPHQL_SERVE_CONSOLE_ASSETS=true) that forces the container to serve all console assets locally. This would make deployments self-contained, remove the external dependency on unpkg.com, and inherently solve any CORS issues. This is a common pattern in previous versions of Hasura and other web applications.
Keywords
Hasura v3, Console, UI, CORS, 404 Not Found, unpkg, self-hosted, Kubernetes, Docker, deployment, GraphiQL is not defined, stuck on loading, v3-engine, connector.
Thanks for this, @bbetters — let me check with our SRE and Infra folks who are more familiar with deploying to k8s.
Was heading over here to put up the exact same bug report, but I'd like to add that if there was a variable to make the deployment self-contained, I'd vote for that being the default.
Pinging this topic. I'd like to evaluate using v3 but this is a blocker, and I suspect it'll be a blocker for a lot of people that want to self-host.
As pointed out earlier, becoming self-contained is a perfect solution.
Completely worthless it first of all looks like something about to be priced/gated soon, not open source and therefore not worthed
@ggadwa that GraphiQL page is used for internal development only. In practice, that page should be hidden in production. As you can see in the source code. It's just an HTML page with hard-coded variables. It's useless in production. https://github.com/hasura/graphql-engine/blob/master/v3/crates/engine/src/index.html
We will look into it. Meanwhile, you can use an alternative Graphiql tool. This tool is popular nowadays.