Skip to content
Docs menu

Environment variables

The settings of a deployment. Docker Compose takes them from .env, and Coolify sets the required ones for you.

Core

Variable Required Default Description
POSTGRES_PASSWORD Yes — Database password. Use hex (openssl rand -hex 24): it goes into a connection URL
BETTER_AUTH_SECRET Yes — Auth signing secret, min 32 chars (openssl rand -base64 32)
BASE_URL In production http://localhost:3000 Public URL users open in the browser. Auth rejects sign-ins from any other origin
EXCALISELF_VERSION No latest Image tag to run: latest, a release like 1.2.3 or 1.2, or main
EXCALISELF_PORT No 3000 Host port for the app. 127.0.0.1:3000 keeps it local to a reverse proxy
POSTGRES_USER No excaliself Database user
POSTGRES_DB No excaliself Database name

docker-compose.yaml builds DATABASE_URL for the app from the Postgres values. To use your own Postgres, change DATABASE_URL in the compose file.

GET /api/health returns 200 when the app is up and can reach Postgres.

Previews

For throwaway pull request instances. See PR previews.

Variable Description
PREVIEW_MODE true runs an in-memory PGlite instead of Postgres, seeded with an admin and example drawings. It ignores DATABASE_URL and BASE_URL and makes BETTER_AUTH_SECRET optional. Data is lost on restart
PREVIEW_HOSTS Comma-separated hosts a preview answers on, e.g. *.draw.example.com. Auth refuses other hosts; localhost always works

Edit this page on GitHub