Deploy on EasyPanel
EasyPanel gives you a UI over Docker with managed domains and TLS. Clerq runs on it as two services: a Postgres database and the published app image. The app migrates the database itself on first boot.
1. Create a project
In EasyPanel, create a new project to hold both services (for example,
clerq).
2. Add a Postgres service
Add a service from the Postgres template. Note the credentials and the
internal host EasyPanel assigns it (commonly the service name, e.g.
clerq_postgres) - you will reference them in the app's DATABASE_URL.
3. Add the app service
Add an App service with:
- Source: Docker image
- Image:
ghcr.io/punterdigital/clerq:latest - Port:
3000(the proxy maps your domain to this)
4. Set environment variables
On the app service, set:
DATABASE_URL=postgresql://postgres:PASSWORD@clerq_postgres:5432/postgres
BETTER_AUTH_SECRET=a-32-char-random-secret
BETTER_AUTH_URL=https://clerq.your-domain.com
Use the Postgres host, user, password and database from step 2 in
DATABASE_URL, and set BETTER_AUTH_URL to the domain you attach to the app
service. See
Environment variables for the full
list (including optional Google sign-in).
5. Attach a domain and deploy
Attach a domain to the app service (EasyPanel provisions TLS automatically), then deploy. On first boot the container applies the database migrations and starts serving. Open your domain and create your account.
Upgrading later is a redeploy that pulls the newer image; migrations run again on boot. Set up backups from Backups & upgrades, and review the production checklist.