Host your own instance
The recommended path is Docker Compose: it starts PostgreSQL and the application together, migrations included.
Getting started
docker compose up -d --build — the application listens on port 8787, the database on 5432. The database service starts first, and the application waits until it is healthy before connecting.
Configuration
DATABASE_URL is the only required variable. PORT and APP_URL adjust the listener and generated links; SMTP variables enable notification emails. An example file lists them all.
Migrations and data
Drizzle migrations apply automatically at startup: upgrading does not mean dropping the database. Data lives in a PostgreSQL volume, uploaded files in a separate one.
Development
To work on the code, start only the database through Compose and run the application locally with hot reload. Tests run on PGlite, an in-memory PostgreSQL — no database to provision.