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.

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

Ready to back up your home lab?

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