Guides / Documentation

Production deployment

Where the production application and documentation run, and how they are deployed.

Resources🔗

Production runs in Coolify (https://alpha2.schmiednet.de) under the SongCollect Devs team, project SongCollect, environment production. Both resources deploy to that team's dedicated server songcollect.schmiednet.de. The pull-request previews use the same server in their own pr-previews environment.

ResourceCoolify UUIDURL
appaxiwbus6rcnm6gpacfbafzhwhttps://app.songcollect.schmiednet.de
docsiiulxo4is9ou6tccc4bcxs5uhttps://docs.songcollect.schmiednet.de

Deployment🔗

Both resources build main with the same Dockerfiles as the previews and deploy automatically when main changes, so a merged pull request reaches production. Their source is songcollect/songcollect through the team's songcollect-github-app. Preview deployments are disabled on these resources. Redeploy manually from the resource's Deployments page. The app image runs start, which applies checksum-checked migrations before serving. Take a backup of the volume before merging a migration (see below).

Application configuration and storage🔗

The app resource mounts its own volume axiwbus6rcnm6gpacfbafzhw-songcollect-data at /data. It holds the native Turso database (TURSO_DATABASE_URL=file:/data/songcollect.db) and uploaded files in /data/assets. No other resource uses this volume; the previews in the pr-previews environment on the same server have their own volumes.

Runtime variables: APP_ORIGIN=$COOLIFY_URL (non-literal), HOST=0.0.0.0, PORT=3000, WEB_DIR=/app/web, and TRUSTED_PROXY_IPS=172.18.0.2, the address of the server's coolify-proxy on the coolify network. Recheck that address after recreating the proxy or its network. Production has no PREVIEW_* variables.

Administrator🔗

The environment controls the administrator login. Set ADMIN_EMAIL, ADMIN_PASSWORD (12 to 256 characters) and ADMIN_CHURCH as runtime variables of the app resource and redeploy. On every start the account is created or updated and made Administrator of that church; a fresh installation is initialized with it. Changing ADMIN_PASSWORD replaces the password and signs that account out everywhere. Other accounts are never changed. See the repository README for the exact rules.

Backups🔗

Automated backup bundles are not implemented yet. Until they are, stop the app resource and copy the whole volume (database, journals and assets together) before risky changes, then start it again.

Search documentation

Type to search the documentation.