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.

terminal
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.

Ready to back up your home lab?

One container, one config file, all your machines covered.