Docs Guides
Backups and restore
Your server snapshots every app's data folder each hour into a restic repository on its disk. You restore one project at a time from the dashboard.
Your app
its data folder
every hour
Your server
a restic repository on its disk
encrypted copy, once configured
Bucket
any S3-compatible storage
What is saved
Link to the section What is saved- Each app's data folder,
DATA_DIR. Code and public files come back with the next deploy. - SQLite databases, copied consistently while the app writes.
- The server's own state: secrets, access lists and Caddy's settings, restored by hand only.
The server keeps the newest snapshot of each of the last 24 hours, 7 days and 4 weeks, plus the last 3 taken before a restore. To leave an app out, write "backup": false in its sitesolide.json.
Back up a database server
Link to the section Back up a database serverA running PostgreSQL or MongoDB fails the snapshot rather than being copied file by file. Declare a backup command on its service:
"postgres": {
"start": "/bin/sh /srv/sites/shop/app/postgres.sh",
"port": 3081,
"internal": true,
"backup": { "folder": "postgres", "command": "/bin/sh /srv/sites/shop/app/postgres-backup.sh" }
}
The command leaves a consistent copy in $BACKUP_DIR, which the snapshot keeps instead of the live folder. The PostgreSQL recipe gives both scripts.
List the snapshots
Link to the section List the snapshotsFrom the project's folder, over the owner's SSH:
sitesolide backups
=== backups of notes ===
TAKEN KIND SIZE ADDED WHERE
2026-10-20 13:00 UTC scheduled 12 MB 24 KB server, offsite
2026-10-20 12:00 UTC scheduled 12 MB 3.7 MB server, offsite
Restore a snapshot
Link to the section Restore a snapshotThe owner and the project's Admins restore.
- Open the project's Backups section in the dashboard.
- Click Restore on a snapshot, and unlock when asked.
- Type the project's slug to confirm, then click Restore.
The server first saves the current data as a Before restore snapshot: restore that one to undo. If the app does not come back on the restored data, its previous data is put back. The dashboard and the portal are restored by hand.
Copy snapshots to a bucket
Link to the section Copy snapshots to a bucketWarning
Until you configure a bucket, the snapshots stay on the server's own disk. A lost server takes its backups with it.
Create a bucket at an S3 provider, such as Hetzner Object Storage, Cloudflare R2 or Backblaze B2, with a key that may read, write, list and delete in it. Then create the settings file on the server, once:
ssh <user@host> 'sudo install -m 600 -o root -g root /dev/null /etc/sitesolide/dashboard-backup.env'
In the dashboard, open the dashboard site's Secrets, unlock, and fill dashboard-backup.env:
| Variable | Value |
|---|---|
BACKUP_S3_ENDPOINT | The provider's HTTPS endpoint. |
BACKUP_S3_BUCKET | The bucket's name. |
BACKUP_S3_REGION | Its region, if the provider has one. |
BACKUP_S3_ACCESS_KEY_ID | The key's ID. |
BACKUP_S3_SECRET_ACCESS_KEY | The key's secret. |
BACKUP_ENCRYPTION_PASSPHRASE | Click Generate. |
Store the passphrase in your password manager: without it, nobody reads the copy. The next hourly run copies the snapshots, encrypted on the server, and sitesolide backups lists them as server, offsite.
Next steps
Link to the section Next steps- Monitoring: hear when a snapshot fails.
- Manifest reference: the
backupkey.