ZFS-native backups
Snapshot backups for your home lab.
fsbackup pulls backups from your machines over SSH, stores them as ZFS snapshots, and exports to S3. Daily, weekly, and monthly retention — all managed from a clean web UI.
curl -fsSL https://raw.githubusercontent.com/fsbackup/fsbackup/main/bin/fs-install.sh | sudo bash
Everything your home lab needs
ZFS snapshot history
Each successful rsync run creates a ZFS snapshot. Daily, weekly, monthly, and annual retention — managed automatically by fs-retention.sh. Browse any point in time from the web UI.
ZFS deduplication
ZFS block-level dedup eliminates redundant data across all snapshots on the pool. Identical blocks — common across weekly and monthly history — are stored only once.
Self-healing storage
ZFS checksums every block and automatically repairs corruption using the mirror copy. Silent data rot is detected and fixed during regular scrubs — no manual intervention needed.
Redundant storage
Run a ZFS mirrored vdev and both drives are always in sync — no separate mirror job needed. Lose a disk, replace it, and ZFS resilvers automatically.
S3 offsite export
Encrypts and uploads weekly and monthly snapshots to S3 using age public-key encryption. Private key stays off-server. Idempotent — safe to re-run.
Web UI + PWA
Browse snapshots, trigger jobs, restore files, view S3 archives, and monitor job status from a mobile-friendly FastAPI + HTMX web interface. Install as a PWA for quick access from your phone.
Prometheus metrics
Emits .prom files for node_exporter. Track job status, snapshot counts, orphans, S3 uploads, dataset sizes, and more in Grafana.
systemd-native scheduling
Per-class runner timers managed by systemd. Schedules are configured in fsbackup.conf and applied with fs-schedule-apply.sh — no crontab editing required.
Three data classes, one system
All class schedules, snapshot tiers, and retention periods are fully configurable to fit your home lab.
class1 — Application data
Frequently changing data: app volumes, databases, personal files. Default: daily, weekly, and monthly snapshots.
class2 — Infrastructure config
Docker stack files, nginx, DNS zone files, and other config. Default: daily — lightweight, fast, always current.
class3 — Archives
Large archives that change infrequently: photo libraries, video collections, media. Default: monthly snapshots.