Skip to content

Update

An update is a new image digest in .env and a restart. A newer server reads the existing data directory. This release adds a credential recovery table to the account database and an index to actor databases on writable open. The first index build takes a SQLite write lock and extra disk space.

Resolve the main tag to its digest:

Terminal window
docker buildx imagetools inspect ghcr.io/linkjar/pds-server:main --format '{{.Manifest.Digest}}'

Or build it yourself from a fresh checkout, as in the install.

Set PDS_IMAGE in .env to the new digest, then:

Terminal window
docker compose pull
Terminal window
docker compose up -d

Compose replaces the server’s container and leaves Caddy running. On SIGTERM the server stops taking connections, finishes the writes in flight, closes the firehose with a close frame so that the relay resumes at its cursor, and exits. The Compose file gives it 60 seconds.

Check that the new server is up:

Terminal window
docker compose logs --since 2m pds
Terminal window
curl -s https://pds.example.com/xrpc/_health

Put the previous digest back in .env and run docker compose up -d again, subject to the authentication limit below. The additive table and index leave the reference layout readable by older servers.

The reference server and older Candidate images do not enforce credential epochs or the member host’s live session check. They can accept revoked, unexpired legacy tokens after a password recovery. If recovery must remain effective, rotate the token-signing secrets and keys and require sign-in again before serving with an older image. Keep the account database and its recovery table in every backup.