Skip to content

Runbook: Coolify deployment

Coolify v4 manages all container deployments on the Hetzner VPS. The GitHub Actions release workflow triggers deploys via the Coolify deploy webhook API. Operator accesses Coolify UI at the configured COOLIFY_API_URL.

Diagnosis

  • COOLIFY_DEPLOY_TOKEN (GH secret) does not match the kc-ci-deploy token in Coolify.

Fix

  • Regenerate the kc-ci-deploy token in Coolify UI → Teams → API Tokens.
  • Update the COOLIFY_DEPLOY_TOKEN GitHub Actions secret.

Diagnosis

  1. Coolify UI → Application → Deployment → Logs.
  2. Common: missing env var, wrong image tag, DB not reachable.

Fix

  • Missing env var: add it in Coolify UI → Application → Environment Variables; redeploy.
  • Wrong image: check GHCR for the expected tag; ensure IMAGE_TAG is set correctly.
  • DB unreachable: check postgres container is healthy; check PgBouncer.

Diagnosis

  • SSH into the Hetzner VPS (operator action).
  • docker ps — check if the Coolify container is running.

Fix

  • Restart Coolify: docker restart coolify.
  • If VPS is unreachable: operator action — Hetzner console.
  • Coolify backups are in R2 bucket coolify-host-schne-id — do not delete.

Fix

  1. Coolify UI → Application → Deployments → select a previous successful deployment → Redeploy.
  2. Or: push a revert commit to main — the release workflow will rebuild and redeploy.

Coolify is the source of truth for runtime env vars (injected as container env). The encrypted secrets.{env}.env.age files in the repo are the sealed reference — operator decrypts with bun run secrets show {env} to verify.