Skip to content

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.

  • 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 2xx on 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.
  • 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.
  • 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.

Read the runtime logs (searchable, 7-day retention), and if you need history longer than that, add a log drain.