Skip to content

Operations

Everyday commands

What Command
Status systemctl status deployer
Logs (JSON lines) journalctl -u deployer -f
Health curl -s http://127.0.0.1:8150/api/health
Database cd /opt/deployer && docker compose ps
Database shell docker exec -it deployer-db psql -U deployer
Integrations the System page: DNS API, Authentik, tool versions

Upgrading

git pull
scripts/build.sh          # type check, vet, tests, then the static binary in dist/
sudo scripts/deploy.sh    # installs it, keeps the previous binary as .prev, restarts, checks health

Database migrations run automatically at start (embedded SQL files, applied once, in order). Rolling back:

sudo mv /opt/deployer/bin/deployer.prev /opt/deployer/bin/deployer && sudo systemctl restart deployer

A migration is never reverted automatically: before upgrading across a migration, take a dump (docker exec deployer-db pg_dump -U deployer -Fc deployer > deployer-$(date +%F).dump).

Backups

What Where How
Deployer database /opt/deployer/backups/deployer-<date>.sql.gz deployer-backup container, daily, 14 days
Master key /etc/deployer/master.key copy it somewhere safe once; without it sealed values are lost
Apps <stacks>/<name>/ (compose, secrets, data) include the stacks folder in your server backup
Deleted apps <stacks>/_archive/<name>-<time>/ kept unless deleted with "delete the data"

Restore the database:

gunzip -c /opt/deployer/backups/deployer-<date>.sql.gz | docker exec -i deployer-db psql -U deployer deployer

What Deployer leaves on the server

Everything is plain and readable without Deployer:

  • cd <stacks>/<name> && docker compose ps|logs|up -d works as usual (the README in each folder says so).
  • The nginx site is a normal file; certbot renews the certificate with its own timer.
  • Authentik objects are named dp-<name> (proxy), dp-<name>-sso (OIDC), dp-<name>-saml (SAML).

If you edit files by hand, the app page shows them as edited by hand and switches the editors to advanced mode instead of overwriting your changes.

Monitoring

  • Each run ends success, failed or rolled-back; the dashboard and the app pages show the last ones.
  • The audit log (admins) lists every acting request with user and IP.
  • After each deploy, "Checking the sign-in" warns if the single sign-on does not answer as expected.

Recovery situations

Situation What to do
Deployer restarted during a run The run is marked failed ("interrupted"); the app is failed and editable. Check the app's files, then redeploy or delete.
A deploy rolled back Read the run log: the failing step is in red, with the last container logs when the app did not become healthy. Fix the draft and deploy again.
nginx refuses to reload Deployer never installs a site that fails nginx -t; check nginx -t for a site edited by hand.
Authentik down during a delete The delete continues and reports what it could not remove; remove the dp-<name>* objects in Authentik afterwards.
Lost admin access Create an admin from the database: set role='admin' for your user, or delete all users to get the setup wizard again (a new setup token is printed).