Deployment
Talaia deploys as two containers built from one image, defined in the repository’s
docker-compose.yml:
talaia-scheduler— runstalaia crontabto 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.
Coolify (primary)
Section titled “Coolify (primary)”- New resource → Docker Compose from the git repo (it picks up
docker-compose.yml). - Set the env vars in Coolify’s UI (see
.env.example):PUSHOVER_*, the per-project credentials,TALAIA_PUBLIC_URL(used for links in alerts), andTALAIA_UI_USERNAME/TALAIA_UI_PASSWORD— the UI is on a public domain, keep basic auth on. - Assign a domain to the ui service → container port 8080 (Traefik routes it;
no host port is published). The
schedulerservice needs no domain. - Deploys on push.
Manual (any server)
Section titled “Manual (any server)”cp .env.example .env && $EDITOR .env# uncomment the `ports:` block on the ui service in docker-compose.ymldocker compose up -d --buildBasic auth fails closed
Section titled “Basic auth fails closed”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.
Health endpoints — pick the right one
Section titled “Health endpoints — pick the right one”GET /healthzis 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/statusreflects the actual suite states (and returns 503 while the store is not ready). Point external monitors here.
Retention
Section titled “Retention”After each suite run, results older than TALAIA_RETENTION_DAYS (default 90) are
purged automatically. talaia purge does the same on demand.