Skip to content

Backups

Tundra uses restic for content-addressed, deduplicated snapshots. Backups are GPG-encrypted before leaving the server — your private key never touches Tundra.

A target defines where backups are stored:

StorageConnection
Amazon S3Bucket + IAM credentials
Backblaze B2Bucket + application key
WasabiS3-compatible endpoint
Cloudflare R2S3-compatible endpoint
SFTPHost + path + SSH key
LocalPath on the managed server

Add a target: Go to Backups → Targets → Add → choose storage type → fill in credentials.
Use Test to verify connectivity before saving.

A job schedules regular snapshots of a scope:

ScopeWhat’s backed up
SiteDocument root + env vars
Databasepg_dump or mysqldump
ServerFull /var/lib/tundra/data

Create a job: Go to Backups → Jobs → New → select scope, target, schedule, and retention policy.

Keep last 7 daily, 4 weekly, 12 monthly snapshots.

Restic’s forget --prune runs after each backup to remove expired snapshots.

Click Run now on any job to trigger an immediate backup outside the schedule.

Tundra uses a preview-then-confirm flow to prevent accidental data loss:

  1. Go to Backups → Snapshots
  2. Find the snapshot to restore, click Restore
  3. Review the preview — files and databases that will be overwritten
  4. Click Confirm restore within 10 minutes (token expires)

Back up the Tundra control plane itself:

Terminal window
sudo -u tundra tundra-self-backup run

This creates: pg_dump → data-dir copy → SHA-256 checksums → manifest.json → tar → GPG encrypt.

Restore with:

Terminal window
sudo tundra-restore /path/to/backup.tar.gpg

The restore process verifies checksums, validates the manifest, recreates the DB, and verifies the master key before restarting services.