bfbackup-controller

bfbackup-controller

Docker app from DelSol's Repository

Overview

BFBackup controller: web UI, schedules and database. Backs up folders incrementally and fast over the LAN to other servers (running the bfbackup-peer container), to local disks or to USB drives. Backups are plain files and folders on the target: no repository, no archive format, you can open and copy them without BFBackup. You need one controller and, for backups to other servers, one bfbackup-peer per server. Peers connect to port 7701 with a token you create in the web UI. Made for Unraid, works on any Linux Docker host.

BFBackup

Incremental backup between Unraid servers (or any Linux host with Docker), stored as plain files: no repository, no archive, no special format. If BFBackup is gone tomorrow, your backups are still just folders you can open and copy.

Backup jobs

One controller container has the web UI, schedules and database. Peers on other servers connect to it with a token and send or receive files. Targets can also be local folders and USB drives.

Features

  • Incremental: only new and changed files move, SHA-256-checked end to end
  • Fast and encrypted: parallel transfers over one connection, TLS 1.3
  • Push or pull: any node can be source or target; several targets per job
  • USB drives for offline backups, backed up automatically when plugged in
  • Deletes never propagate on their own: removed files go to a trash first
  • Anomaly checks (mass changes, files that look encrypted, …) pause a backup until you approve it
  • Browse and restore single files, folders or search results
  • Verify quick or deep (finds bit rot), on a schedule if you like
  • Notifications by Pushover or email
  • Statistics, activity log, audit log, light and dark theme
  • Phone app (PWA) for Android and iPhone

More screenshots: public-release/screenshots.

Install on Unraid

  1. Apps (Community Applications) → search BFBackup.
  2. Install bfbackup-controller on one server, open http://<server>:7700 and choose the admin password.
  3. Peers → Add peer → copy the token.
  4. Install bfbackup-peer on every other server, set Controller address and Token. Peers need no open ports (they connect to port 7701).
  5. Backup jobs → New job: pick source, target and schedule.

A single server with only local disks or USB drives needs no peer. Templates without the App Store: public-release/unraid.

Install with Docker (any Linux host)

Image: delsolger/bfbackup (amd64, arm64, arm/v7). Compose files:

Map host folders at the same path inside the container (/srv:/srv).

Configuration

Everything is set in the web UI, except:

Variable Role Default Meaning
BFB_ROLE both – controller or peer
BFB_ROOTS both /mnt Folders BFBackup may access
BFB_DATA both /config Database and settings
BFB_UID, BFB_GID both unset Owner of written files (Unraid: 99/100)
BFB_HTTP_ADDR controller :7700 Web UI
BFB_PEER_ADDR controller :7701 Peer connections
BFB_CONTROLLER peer – host or host:port of the controller
BFB_TOKEN peer – Token from the Peers page

Good to know

  • Meant for LAN or VPN: don't expose port 7700 to the internet.
  • Installing the phone app needs HTTPS (e.g. a reverse proxy in front of 7700).
  • Peer doesn't connect? See /config/connection.log on the peer.
  • Security problems: report privately via the security policy.
  • Planned features: ROADMAP.md · feature request

Development

make test      # all tests (uses Docker if Go is not installed)
make dev-up    # controller on http://localhost:7700 with ./testdata

Code map: docs/DESIGN.md.

License

GPL-3.0

Requirements

For backups to another server, install bfbackup-peer there.

Download Statistics

152
Total Downloads

Related apps

Explore more like this

Explore all

Details

Repository
delsolger/bfbackup:latest
Last Updated2026-11-07
First Seen2026-11-09

Runtime arguments

Web UI
http://[IP]:[PORT:7700]/
Network
bridge
Shell
sh
Privileged
false
Extra Params
--stop-timeout 30

Template configuration

Web UI portPorttcp

Web interface. Keep it in your LAN or VPN, never forward it to the internet.

Target
7700
Default
7700
Value
7700
Peer portPorttcp

Peers connect here. Must be reachable from every peer.

Target
7701
Default
7701
Value
7701
AppdataPathrw

Database, hook scripts (hooks/), database snapshots (db-backups/).

Target
/config
Default
/mnt/user/appdata/bfbackup
Value
/mnt/user/appdata/bfbackup
StoragePathrw,slave

Shares to back up from, or to restore and store backups into (/mnt/user), and USB or unassigned disks (/mnt/disks). Same paths as on the host, so paths in the UI match Unraid. The single array disks and pools are only used to move deleted files into the trash without copying; they are never shown. Use 'Allowed roots' to narrow what BFBackup may touch.

Target
/mnt
Default
/mnt
Value
/mnt
Allowed rootsVariable

Comma-separated folders inside the container BFBackup may read and write. Nothing outside is reachable, symlinks included.

Target
BFB_ROOTS
Default
/mnt
Value
/mnt
Owner UID for written filesVariable

Files and folders BFBackup creates get this owner (99 = nobody on Unraid). Empty: leave as root.

Target
BFB_UID
Default
99
Value
99
Owner GID for written filesVariable

100 = users on Unraid.

Target
BFB_GID
Default
100
Value
100
Initial admin passwordVariable

Optional. Only used when no password is set yet; otherwise you choose it on first visit of the web UI.

Target
BFB_ADMIN_PASSWORD
Peer transportVariable

auto: accept encrypted and unencrypted peers (older versions, BFB_TRANSPORT=plain). tls: refuse unencrypted peers.

Target
BFB_TRANSPORT
Default
auto
Value
auto
Log levelVariable

debug, info, warn or error.

Target
BFB_LOG_LEVEL
Default
info
Value
info