Frozen snapshot backups
Snapshot backups for your home lab.
fsbackup is an rsync-based snapshot backup system that runs in Docker. Take daily snapshots over SSH, mirror to a second drive, export to S3, and manage everything from a clean web UI.
docker pull ghcr.io/fsbackup/fsbackup:latest
Everything your home lab needs
Snapshot tiers
Daily, weekly, monthly, and annual snapshot tiers with automatic promotion. Snapshots are incremental via rsync --link-dest.
Mirror to a second drive
Automatically mirrors primary snapshots to a secondary drive. Configurable per data class — large photo archives can be excluded.
S3 offsite export
Encrypts and uploads weekly, monthly, and annual snapshots to S3 using age public-key encryption. Private key stays off-server.
Web UI
Browse snapshots, run jobs manually, restore files, and monitor job status from a FastAPI + HTMX web interface.
Prometheus metrics
Emits .prom files for node_exporter. Track job status, snapshot counts, orphans, S3 uploads, and more in Grafana.
Docker-native
Runs as a single Docker container. supercronic handles scheduling — no systemd required. Pull from ghcr.io and go.
Three data classes, one system
class1 — Application data
Frequently changing data: app volumes, databases, personal files. Backed up daily with the full snapshot tier stack.
class2 — Infrastructure config
Docker stack files, nginx, DNS zone files, and other config. Daily backups — lightweight, fast, always current.
class3 — Photos
Large photo archives that change infrequently. Runs monthly, excluded from mirroring to save secondary drive space.