Build artifact expired
Build artifact expired
Pxxl stores build artifacts for a window defined by your plan’s retention policy. The deployment history always remains visible in the dashboard, but once an artifact ages out of the retention window, rollback can no longer recreate the container image from that old build.What artifact retention meansWhen you trigger a rollback, Pxxl needs the original image layers to recreate the container exactly. If those layers have expired, the rollback entry is visible but non-functional — the platform has no image to launch.Your options
- Redeploy the same commit. Push or select the commit again to trigger a fresh build from source. The resulting image will be functionally identical to the expired one.
- Upgrade your plan. Higher-tier plans keep artifacts for longer, giving you more rollback headroom for critical releases.
- Tag releases in Git. Keep a named tag (for example
v2.4.1) on every release commit so you can always find and redeploy the exact version even after the artifact expires.
Changed project port causing 503
Changed project port causing 503
The Pxxl edge proxy routes traffic to the port it registered for your container when the project was last deployed. If you change the port your app listens on — either in your code or in project settings — without redeploying and resyncing, the route points to a port that nothing is listening on, and every request returns 503.Why port alignment mattersPxxl labels the container with the port defined in project settings and configures the upstream target accordingly. If your app process binds to a different port inside the container, TCP connections from the proxy are refused and the upstream is considered unhealthy. Updating the port in settings is necessary but not sufficient — you must also redeploy so the new label reaches the running container, and resync so the proxy picks up the new upstream address.Fix steps
Update the port
Change the port value to match the port your application actually binds to at startup.
Redeploy the project
Trigger a new deployment. This rebuilds or re-pulls the image and starts the container with the updated port label.
Where possible, configure your app to read the
PORT environment variable at startup. This makes it easier to keep the app and Pxxl settings aligned without code changes.Static site returns 404 on nested routes
Static site returns 404 on nested routes
If a static site works fine at
How to fix it
/ but returns 404 when you navigate to a nested path like /blog or /dashboard, the problem is a mismatch between how your build output is structured and how the project is configured to serve it.Plain HTML sites vs. SPAs| Site type | How routing works | What you need |
|---|---|---|
| Plain HTML | The server looks for a real file at the requested path | blog/index.html, dashboard/index.html, etc. must exist in the build output |
| SPA (React, Vue, Svelte, etc.) | The client-side router handles all paths | The server must fall back to index.html for every path that is not a static asset |
- Plain HTML site: Make sure your build step generates a real file for each URL. For example,
/blogrequires eitherblog.htmlorblog/index.htmlin the output directory. - SPA build: Confirm the project was detected as the correct framework (for example React Vite) before deployment. Pxxl uses the framework detection to configure the correct fallback behaviour. If the framework was misidentified, update the framework setting and redeploy.
