Installation
Quick start
Get fsbackup running in under 15 minutes with Docker.
This guide gets fsbackup running with Docker in under 15 minutes.
For a full installation reference see Docker installation or Bare-metal installation.
1. Create the fsbackup user
sudo useradd -r -m --uid 993 -d /var/lib/fsbackup -s /bin/bash fsbackup
The UID must be 993 to match the user baked into the Docker image.
2. Generate the SSH keypair
sudo -u fsbackup ssh-keygen -t ed25519 \
-f /var/lib/fsbackup/.ssh/id_ed25519_backup -N ""
3. Create directories
sudo mkdir -p /etc/fsbackup/db
sudo mkdir -p /backup/snapshots/{daily,weekly,monthly,annual}
sudo mkdir -p /backup2/snapshots/{daily,weekly,monthly,annual}
sudo chown -R fsbackup:fsbackup /backup/snapshots /backup2/snapshots /var/lib/fsbackup
4. Create config files
sudo mkdir -p /docker/stacks/fsbackup
Create /docker/stacks/fsbackup/docker-compose.yml:
services:
fsbackup:
image: ghcr.io/fsbackup/fsbackup:latest
container_name: fsbackup
restart: unless-stopped
user: "993:993"
ports:
- "8080:8080"
volumes:
- /etc/fsbackup:/etc/fsbackup
- /var/lib/fsbackup:/var/lib/fsbackup
- /backup/snapshots:/backup/snapshots
- /backup2/snapshots:/backup2/snapshots
- /var/lib/node_exporter/textfile_collector:/var/lib/node_exporter/textfile_collector
Create /etc/fsbackup/fsbackup.conf:
SNAPSHOT_ROOT="/backup/snapshots"
SNAPSHOT_MIRROR_ROOT="/backup2/snapshots"
MIRROR_SKIP_CLASSES=""
5. Start the container
cd /docker/stacks/fsbackup
docker compose up -d
6. Initialize remote hosts
On each machine you want to back up, run:
sudo ./remote/fsbackup_remote_init.sh \
--pubkey-file /var/lib/fsbackup/.ssh/id_ed25519_backup.pub
7. Trust SSH host keys
docker exec -it fsbackup /opt/fsbackup/utils/fs-trust-host.sh <hostname>
8. Verify and run
# Check all targets are reachable
docker exec -it fsbackup /opt/fsbackup/bin/fs-doctor.sh --class class1
# Dry run first
docker exec -it fsbackup /opt/fsbackup/bin/fs-runner.sh daily --class class1 --dry-run
# Run for real
docker exec -it fsbackup /opt/fsbackup/bin/fs-runner.sh daily --class class1
The web UI is now available at http://<host>:8080.