Skip to main content
Atrium ships as a single Docker image (vibralabs/atrium:latest) that bundles the API, web app, Caddy reverse proxy, and an optional built-in PostgreSQL database. One container, one port.

Quick start

The only required environment variable is BETTER_AUTH_SECRET — a random string of at least 32 characters used to sign authentication tokens.
Open http://localhost:8080 and create your account.
The database schema is applied automatically on every startup. You do not need to run migrations manually.

Using an external database

If you already have a PostgreSQL instance, disable the built-in database and provide your connection string:
When USE_BUILT_IN_DB=false, you can omit the /var/lib/postgresql/data volume mount.

Connection poolers (PgBouncer)

If your database connection goes through a pooler like PgBouncer, schema migrations will fail because they require a direct session-mode connection. Set SKIP_DB_PUSH=true to skip the automatic migration, then provide a DIRECT_URL pointing to the non-pooled connection:

Environment variables

Volumes

Always mount these volumes (or use an external database and S3 storage) so your data survives container restarts and image updates. Updating the image does not delete volume data.

Building from source

If you prefer to build the image yourself instead of pulling from Docker Hub: