Skip to main content
The fastest way to run Atrium is with the pre-built Docker image. It bundles the API, web app, Caddy reverse proxy, and PostgreSQL into a single container on port 8080. The only variable you must provide is BETTER_AUTH_SECRET.
1

Generate a secret

Run this command to generate a secure random secret for signing auth tokens:
Copy the output — you’ll use it in the next step.
2

Start the container

Run Atrium with two persistent volumes: one for the database, one for uploaded files.
Replace your-generated-secret-here with the value from the previous step. The secret must be at least 32 characters long.
3

Open Atrium

Navigate to http://localhost:8080. The app loads in a few seconds while the database initializes on first start.From here, follow the First Steps guide to create your account and set up your first project.

Docker Compose

If you prefer Compose, create a docker-compose.yml with the following content:
Then start it:
Do not use the example value for BETTER_AUTH_SECRET in production. Generate a unique secret with openssl rand -base64 32 before you deploy.

What’s included

The vibralabs/atrium image contains everything you need to run: The database schema is applied automatically on every startup, so upgrades require no manual migration step.

Using an external database

If you already manage a PostgreSQL instance, you can disable the built-in database:
If your database connection goes through a pooler like PgBouncer, set SKIP_DB_PUSH=true and provide a direct connection string via DIRECT_URL so schema sync works correctly.

Common environment variables

For the full list of configuration options, see the self-hosting documentation.