Skip to content

Health endpoint

GET /api/health reports whether the app can serve requests. It needs no sign-in and works before and after first-run setup.

200 OK when the configuration is valid and the database answers; 503 Service Unavailable otherwise.

{
"status": "ok",
"database": "ok",
"configured": true,
"auth": "better-auth",
"setupComplete": true
}
Field Values Meaning
status ok, unhealthy Overall result, matching the HTTP status
database ok, unreachable Whether SELECT 1 succeeded
configured true, false false means the app is showing Configuration needed
auth better-auth, none Which sign-in system is active
setupComplete true, false, null Whether first-run setup is done; null if unknown

It never includes setting values or error details.

healthcheck:
test: ["CMD-SHELL", "node -e \"fetch('http://127.0.0.1:8303/api/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\""]

The container is healthy while the endpoint returns 200. The official Compose files already include this.