github marcpope/borgbackupserver v2.96.1

5 hours ago

New: Offsite Sync to SSH hosts and local disks (#413)

The S3 Offsite Sync plugin is now Offsite Sync, and each configuration has a Destination:

  • S3-compatible storage, exactly as before. Existing configurations need no changes.
  • SSH host (SFTP). Pick one of your Remote SSH storages: rsync.net, a Hetzner Storage Box, or any Linux box that accepts SFTP. Borg does not need to be installed there. BorgBase is borg-only and is not offered.
  • Local disk. Pick a storage location, so a second drive registered once becomes a destination. Choose a different disk from the one the repository lives on.

Copies land under bbs-sync/<client>/<repo> on SSH and local destinations. Everything downstream is shared with S3: the copy runs after each prune, the manifest goes beside it, the repository page shows every destination with its last sync, restore in place or as a new repository works from any of them, orphaned copies are offered for restore, and deleting a repository can delete its copies. A repository can have several destinations of different types, so a local disk plus an offsite host is one repository with two entries.

Under the hood, transfers now hand the destination's settings to the helper in a file rather than on the command line, so S3 keys and SSH keys no longer appear in ps. This closes #445 and #338 as well.

New: signed agent updates

An agent now installs an update only if the downloaded script carries a signature from the project's signing key, and never a version older than the one it runs. A server that has been broken into cannot push code to the clients it backs up, and a signed but superseded release cannot be replayed. A refused update fails the job with a message saying which check failed and leaves the running agent as it was. Verification runs in plain Python, so every supported client is covered, including Debian 8. Details are on the wiki's Security page.

This is the first signed agent, so agents on 2.96.0 or older take this one update unverified. From 2.96.1 on, every update is checked.

New: plan priority (#403)

A plan has a Priority: Normal, Low or Idle. Low runs borg under nice 10 with best-effort I/O; Idle under nice 19 with the idle I/O class, so the backup only takes what nothing else on the host wants. The job's activity log says which applied. Linux and macOS agents honour it; Windows ignores it.

New: repository size over time (#406)

The repository page has a chart with a line for what each backup saw and bars for what each backup added after deduplication. A source that keeps growing, or an include that should not be there, shows as a spike.

Fixes

  • Server Health on Ubuntu 26.04 and other hardened Apache units showed 0 B / 0 B for memory and nothing for network, because the unit hides /proc. The drop-in BBS installs now restores it; diagnosis and patch by @Glob0x17 (#485).
  • Container sshd now logs to docker logs with an [sshd] prefix, and the per-source penalty in OpenSSH 10 that closed healthy agent connections after about two minutes is turned off for the container's sshd (#470).
  • Job page back arrow returns to the page that linked there instead of always the queue (#469).

API

  • priority on plans: create, update, list and client detail.
  • Offsite Sync: target_type, remote_ssh_config_id and storage_location_id on plugin configs; s3_config_type on repositories; the plugin schema lists the available SSH hosts and storage locations.

Agent 2.96.1. Agents update themselves once the server is on this release.

BBS Manager for iOS is on the App Store; connect it under Settings → Push Service.

Don't miss a new borgbackupserver release

NewReleases is sending notifications on new releases.