Troubleshooting
Most problems fall into a handful of buckets. Start with the service’s Deployments and Logs tabs — they usually tell you exactly what happened.
A deploy failed
Section titled “A deploy failed”- Build error — open the failed deployment’s build log. Common causes: a missing build/start command (set them in Build & runtime settings), the wrong root directory for a monorepo, or a Dockerfile that doesn’t build. Nothing was switched — your previous version keeps serving.
- Health check failed — the new version started but didn’t pass its check, so traffic never switched. Make sure your app listens on the port Helicarrier expects and responds
2xxon the health path. - Release command failed — a pre-deploy step (e.g. a migration) returned non-zero, which stops the deploy on purpose. Fix the command and redeploy; the old version stayed live throughout.
- Aborting — you can abort an in-flight deploy; it never takes the running version down.
A custom domain won’t go live
Section titled “A custom domain won’t go live”- Add the DNS record your DNS provider requires, pointing the domain at Helicarrier (Domains & TLS).
- TLS is issued automatically on the first request — give it a moment after DNS propagates.
- If the domain is proxied through Cloudflare (orange cloud), verification is Cloudflare-aware; follow the guidance shown when you add the domain if it stays in securing.
Can’t connect to a database
Section titled “Can’t connect to a database”- For service-to-service access, link the app to the database so the connection URL is injected automatically — you don’t need to expose it.
- For external tools (local
psql, a GUI), enable external access on the database first (it’s off by default), then use the external URL. - If you enabled TLS, make sure your client is configured to use it.
An environment variable isn’t taking effect
Section titled “An environment variable isn’t taking effect”- Variables are injected at deploy time — set the variable, then redeploy for it to reach the running container (Environment variables).
- Check precedence: environment group → the service’s own variable → a reference. A reference wins over a directly-set value; remove the reference to edit the value directly.
- Values are masked in the UI; use the reveal (eye) control to confirm what’s stored.
Still stuck?
Section titled “Still stuck?”Read the runtime logs (searchable, 7-day retention), and if you need history longer than that, add a log drain.