Reference · Storage & Backup

Data that doesn’t get lost

The backup strategy is built around one concrete disaster scenario: "the boot disk dies." Non-overlapping sets make sure each file is backed up exactly once — and an offsite copy survives even a total local loss.

3-2-1 backup strategy
3
Copies
live + backup + offsite
2
Media
NVMe mirror + HDD on NAS
1
Offsite
encrypted in the cloud
Non-overlapping sets · automated · watched by a dead man’s switch.

Mirror first, then back up

On the host, the app data sits on a ZFS mirror of two SSDs: a failed disk is therefore not a restore case but a swap during operation. A mirror is no backup, though — it faithfully mirrors deleted or encrypted files as well.

ZFS mirrorfailure ≠ restorenot a backup

Non-overlapping sets

Databases, app data and boot configuration are each backed up once with the right tool. No duplication — recovery stays simple to reason about.

pg_dumpKopiaflash backup

Databases orchestrated

All databases are dumped on a schedule by a dedicated service, with retention across days, weeks, months and years. A dump that fails to complete reports itself instead of quietly going missing.

scheduled centrallyGFS retentionreports failures

Encrypted & versioned

App data lands end-to-end encrypted and versioned in the backup (Kopia) — protection from mistakes as much as from ransomware.

KopiaE2Eversioning

3-2-1 offsite

An additional encrypted copy of the irreplaceable data lives off-site in the cloud — deliberately upload-only, with no read-back.

offsitecloudencrypted

Dead man’s switch

Every backup job actively reports success. If a report goes missing, monitoring raises an alert — a silent failure is noticed at once.

push monitoralertingUptime Kuma
Stack in use
ZFS mirrorKopiaPostgreSQL pg_dumpBTRFS snapshotsCloud offsiteUptime Kuma