Update and recover
Treat server updates as storage migrations: read the release notes, take a coordinated backup, and verify clients after the new container starts.
Update a published image
- Back up
/configand/librarytogether. - Pull the image for the intended release.
- Recreate the service.
- Review logs and health.
docker compose pull
docker compose up -d --no-build
docker compose logs --tail=100 volumd
curl --fail http://127.0.0.1:43821/readyzPrefer a versioned release tag for long-lived deployments once versioned images are published. Use latest only when you intentionally want the newest released server.
Update a source build
Check out the intended release tag, then rebuild:
git fetch --tags
git checkout <release-tag>
docker compose up -d --buildDo not build an unreviewed branch over an important library without a tested rollback path.
Restore a coordinated backup
- Stop
volumd. - Move the current
/configand/libraryaside; do not delete them yet. - Restore both locations from the same recovery point.
- Confirm ownership and permissions.
- Start
volumd. - Check health, logs, server identity, project counts, and several original files.
If restoring the same server configuration, previously paired devices may remain trusted because server authentication state is part of /config. Revoke devices that should no longer have access after recovery.
Failed migration or startup
Keep the container stopped and preserve the failed data directories. Record:
- the previous and attempted server versions;
- the complete startup error without pairing payloads or tokens;
- storage ownership and free space;
- whether
/configand/librarycame from the same recovery point.
Restore the coordinated pre-update backup rather than manually editing SQLite.
For a failed Desktop-to-NAS cutover, also preserve:
/config/library-migrations/and/config/library-migration-activation.json;/config/migration-rollbacks/;/library/.volum-migrations/and/library/.volum-rollbacks/;- the retired Desktop library and its original linked folders.
The active database is switched only after staged media and managed files are in place. A supervisor restart retries an incomplete activation journal. Do not delete either persistent volume to force startup.
Disaster-recovery check
A backup is not proven until a separate test deployment can:
- pass
/readyzso both the process and restored database are ready; - open the restored database;
- list expected projects;
- read representative original files;
- produce or read representative thumbnails;
- pair or authenticate a test client as expected.