/data volume into one archive and is the supported default. Restore each
backup to a fresh volume, then open a document, check its version history, and
make a new edit.
What the backup contains
The mounted/data directory contains all durable Workspaces data:
- SQLite metadata;
- bare Git repositories and document history;
- uploaded asset bytes;
- live-edit logs; and
- the ready marker used during boot.
/var/lib/docker. Mount the named
volume in a helper container instead.
Create a cold backup
These examples use a container namedrooms, a volume named ws-data, and a
backup directory at /var/backups/workspaces.
1
Stop Workspaces
2
Archive the full volume
BACKUP_ID has the same value throughout.
The command stops before Docker runs if the destination exists.3
Restart Workspaces
Restore a cold backup
Never unpack a backup over the active volume.1
Create a fresh volume
2
Extract the archive
Set
BACKUP_ARCHIVE to the exact filename created by the backup command.3
Start the matching image
Start a new container with the same protected environment and the image
version that created the backup. Mount
$RESTORE_VOLUME at /data.4
Verify the restore
Check
/healthz, sign in or use a test API key, open a known document,
inspect its versions, and make a new edit. Compare a known file with the
bytes from before the backup.Create a hot backup
Use this method only when you cannot stop the container. Back up the SQLite database first, then the live-edit logs, Git repositories, and assets. Do not copy the live SQLite files directly.Restore a hot backup
Restore a hot backup into a fresh volume. Fix ownership before you write the ready marker. Write that marker last so Workspaces cannot boot from a partial restore. SetHOT_BACKUP_DIR to the exact directory created by the backup
command.
If restore fails
Use Update or roll back the container
when you change image versions.
Reviewed July 22, 2026. Maintained by the Plannotator documentation team.
