Sblurp

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.

  1. 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
    
  2. 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

  1. Pin the last good version in .env:

    SBLURP_TAG=1.2.3
    
  2. 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.