Demid
09/02/2025, 1:55 PMMarvin
09/02/2025, 1:55 PMMarvin
09/02/2025, 1:59 PMprefect version
3) Inspect the failing asset request
- In DevTools → Network, click the failing Deployment-*.js
request. Note the Status code and Response headers.
- You can also test from the host:
curl -I <http://localghosts:4200/assets/Deployment-D15xLX-O.js>
What do you see?
- 404: Usually indicates a cache mismatch (old index.html referencing a chunk that no longer exists) or a reverse-proxy rewrite that breaks /assets.
- 200 but Content-Type text/html: A proxy is likely rewriting the path and serving HTML instead of JS.
- 401/403/CORS or Mixed Content: A proxy/auth/cert issue.
4) If you’re behind a reverse proxy or a subpath
- Ensure /assets/* is forwarded directly to the Prefect web server and is not cached or rewritten.
- Disable proxy caching for the UI assets during troubleshooting. Example Nginx stanza:
location /assets/ {
proxy_pass <http://prefect:4200/assets/;>
proxy_set_header Host $host;
proxy_cache_bypass 1;
add_header Cache-Control "no-store";
}
A couple of clarifications that will help me pinpoint this quickly:
- How are you running self-hosted? Docker/Compose, prefect server start
, or something else?
- Are you serving behind a reverse proxy or at a subpath?
- Do other UI pages load, and is it only the Deployments page that fails?
- In the Network tab, what’s the exact status and content-type for that Deployment-*.js
request?
- Is the host name “localghosts” intentional, or is that a typo for “localhost”?
For reference, self-hosted docs: Self-hosted Prefect 3
Releases: Prefect releases
If you can share the response details for that asset and your deployment/proxy setup, I can give you exact next steps.