Updates and tracks
The server never updates itself. It tells you when an update is out. You choose when to take it, by hand or on a timer.
Tracks
Each image tag follows one track:
| Tag | What | When it changes |
|---|---|---|
stable (also latest) |
tested releases | each vX.Y.Z release |
beta |
the next release, for testers | each vX.Y.Z-beta.N |
nightly |
the newest code from main |
every night |
1.2.3, 1.2 |
one version (pinned) | never (1.2 moves to the newest 1.2.x) |
To change track with Compose, set SBLURP_TAG in .env, then:
docker compose pull && docker compose up -d
Go from nightly or beta back to stable only when stable is at the same version or newer. Database migrations only go forward.
The update check
Once a day the server reads releases.json with a plain GET. It sends no data. When its track has a newer version, admins and the owner see "update available" in Community settings. Set SBLURP_UPDATE_CHECK=off to stop the check.
Update by hand
cd /opt/sblurp
docker compose pull
docker compose up -d
People see a few seconds of "reconnecting".
Update on a timer
Pick one. Both check once a day.
Docker. A systemd timer runs docker compose pull and docker compose up -d every night at 04:00, within an hour. Compose restarts the server only when the image changed.
-
Copy the files from
deploy/compose/:cp sblurp-update.service sblurp-update.timer /etc/systemd/system/ systemctl daemon-reload systemctl enable --now sblurp-update.timer -
Run it once now to test it:
systemctl start sblurp-update.service
Podman. Use the Quadlet file. podman-auto-update.timer pulls new images, and goes back to the old one if the new one does not start. See Podman.
Do not use Watchtower. The original project was archived in December 2025.
Roll back
-
Pin the last good version in
.env:SBLURP_TAG=1.2.3 -
Restart:
docker compose up -d
For an exact build, put the digest in docker-compose.yml, such as image: ghcr.io/OWNER/sblurp-server@sha256:.... Each entry in releases.json and each GitHub release shows the digest. A pinned tag or digest stops automatic updates until you change it back.
Roll back only if the newer version did not add a database migration. If it did, restore a backup from before the update. See Backups.
View this page as Markdown · Glossary · API schema.json · openapi.json