A self-hosted dashboard for scheduling Docker volume backups, syncing them off-site over FTP/FTPS, and restoring them when something goes wrong.
It's a small tool and it's free — no license, no account, no telemetry. Run the container, open the page, done.
[ volume ] ──tar──▶ [ backups/ ] ──ftps──▶ [ off-site ]
the dashboard, doing its thing
what it does
- scheduled backups — pick any interval; old archives are pruned automatically
- one-click restore — containers using the volume are stopped and restarted for you
- off-site sync — mirror backups to any FTP or FTPS server
- notifications — success and failure pushed to an ntfy topic
- REST API — trigger backups from CI, cron, or your own scripts
- self-hosted — a single container; your data never leaves your machine
run it
services:
backup-service:
image: fluttered/dockbare:latest
container_name: dockbare
ports:
- "127.0.0.1:5000:5000"
volumes:
- ./backups:/backups
- /var/run/docker.sock:/var/run/docker.sock
environment:
- BACKUP_HOST_DIR=${PWD}/backups
restart: unless-stopped
Create a backups folder next to it, run
docker compose up -d, and open
127.0.0.1:5000.
127.0.0.1 only. Never expose dockbare to the internet without
authentication — keep it on localhost, or put it behind a VPN, an SSH tunnel, or an
authenticating reverse proxy.
api
Everything the UI does is plain HTTP underneath, so you can script it — kick off a backup before a deploy, check task status, change schedules.
POST /api/backup
{ "volume": "my_critical_data", "upload_to_ftp": true }
faq
How is this different from offen/docker-volume-backup?
That project is a great CLI tool. This one trades some of its flexibility for a web UI: scheduling, restores, remote sync, and notifications are point-and-click instead of cron jobs and scripts.
Where do my backups go?
Into the backups folder you mount into the container, as plain
.tar.gz archives. If you configure an FTP/FTPS server they're mirrored
there too. Nothing leaves your infrastructure otherwise.
Does it work with volumes from Compose or Portainer?
Yes. It talks to the Docker socket directly, so it sees every volume on the host, no matter what created it.
What happens to my containers during a backup?
Containers using the volume are stopped briefly so the snapshot is consistent, then restarted automatically. It usually takes a few seconds.