Each backup is one recoverable set: the full database (users, settings, and every asset), the uploaded files, and a manifest that records the exact code version so a restore can never land on the wrong schema.
Backups keep any day in the last 5, plus weekly and monthly copies. Restoring your data is separate from rolling back code: code is handled in git. If a restore needs a newer code version than you are running, this screen tells you before it lets you proceed.
Sets stay on the mounted backups volume. No credentials needed.
No backups yet. Run your first one above - it is safe to do anytime.
| Taken | Size | Status | Restore |
|---|---|---|---|
| {{ formatTaken(set.takenat) }} {{ set.snapshotid }} | {{ formatSize(set.sizebytes) }} | {{ statusLabel(set) }} |
No backup runs recorded yet.
No restore runs recorded yet.
{{ formatTaken(restoreTarget.takenat || restoreTarget.snapshotid) }}
Keep this open until the restore finishes. This can take a moment.
Restoring replaces the current database and uploaded files with the contents of this backup. Code is not changed. This cannot be undone, so it is gated on the compatibility check above.