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.
| Resource | Coolify UUID | URL |
|---|---|---|
app | axiwbus6rcnm6gpacfbafzhw | https://app.songcollect.schmiednet.de |
docs | iiulxo4is9ou6tccc4bcxs5u | https://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.