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.
Response
Section titled “Response”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.
Example: Docker health check
Section titled “Example: Docker health check”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.
See also
Section titled “See also”- Deploy with Docker Compose: checking a new install
- Configuration needed: when
configuredisfalse