Skip to content

Deployment

Talaia deploys as two containers built from one image, defined in the repository’s docker-compose.yml:

  • talaia-scheduler — runs talaia crontab to generate one cron line per enabled suite, then hands the crontab to supercronic, which executes each suite on its schedule and logs to stdout.
  • talaia-ui — the status page (talaia ui) on container port 8080, strictly read-only against the database.

Both mount the same talaia-data named volume, which holds the SQLite store (WAL mode). The scheduler is the only writer; the UI only reads. The data survives redeploys in the volume.

  1. New resource → Docker Compose from the git repo (it picks up docker-compose.yml).
  2. Set the env vars in Coolify’s UI (see .env.example): PUSHOVER_*, the per-project credentials, TALAIA_PUBLIC_URL (used for links in alerts), and TALAIA_UI_USERNAME / TALAIA_UI_PASSWORD — the UI is on a public domain, keep basic auth on.
  3. Assign a domain to the ui service → container port 8080 (Traefik routes it; no host port is published). The scheduler service needs no domain.
  4. Deploys on push.
Terminal window
cp .env.example .env && $EDITOR .env
# uncomment the `ports:` block on the ui service in docker-compose.yml
docker compose up -d --build

Setting both TALAIA_UI_USERNAME and TALAIA_UI_PASSWORD enables HTTP basic auth on the UI. Setting only one of the two is treated as a misconfiguration and fails closed: every page returns 503 until fixed — a mistyped half of the pair must not silently expose a public dashboard. Leaving both empty keeps the UI open, which is fine on private networks.

  • GET /healthz is always open (auth-exempt) and DB-independent. It is the container healthcheck — it only proves the process is up, so don’t point monitors that should see suite status at it.
  • GET /api/status reflects the actual suite states (and returns 503 while the store is not ready). Point external monitors here.

After each suite run, results older than TALAIA_RETENTION_DAYS (default 90) are purged automatically. talaia purge does the same on demand.