github marcpope/borgbackupserver v2.75.0

4 hours ago

Five reported bugs, two of them serious enough to be worth updating for on their own. Thanks to everyone who filed them — every fix in this release came from an issue report.

Fixed: file browsing failed on older ClickHouse (#392)

Browsing a repository's files returned "Failed to load file catalog" on servers running ClickHouse 22.x.

The catalog queries formatted timestamps with %i for minutes, which only exists from ClickHouse 23 onward. Older builds reject the whole pattern, so the query failed outright and no file list could load. The timestamps are now produced in a way every ClickHouse version understands, verified byte-identical to the previous output across a 132-million-row catalog.

Reported by @faktor73, who identified the exact cause.

Fixed: cataloguing a large repository stopped partway with no error (#391)

Adding an existing repository with a lot of files appeared to hang: borg would run for a while, then vanish, and the job simply stopped with nothing useful logged.

It was running out of memory. Building the directory index held one entry per directory in memory while streaming, then built a second copy that also carried every parent directory. On a repository with 2.6 million files across 720,000 directories that peaked around 850 MB — far past the 128 MB limit a default install runs with. The process was killed mid-archive, which is why it looked like borg disappearing.

Both steps are now done inside ClickHouse, so nothing passes through PHP and memory no longer scales with repository size. The same rebuild that needed 850 MB now uses 2 MB and finishes in ten seconds, producing an identical index.

Reported by @kosli.

Fixed: agents could be downgraded (#387)

An agent was treated as out of date whenever its version differed from the one bundled with the server — different, not older. A 2.72.0 agent talking to a 2.71.0 server was therefore listed as needing an upgrade, and accepting that offer downgraded it. Easy to hit with containers, where the agent image and the server image move independently.

Versions are now compared properly and only a genuinely older agent is offered an update.

Containerised agents now opt out of server-driven updates by default. The agent ships inside the image, so replacing the running copy is undone by the next restart and hides which version is actually deployed — the right way to update is to pull a new image. Such agents are left out of the outdated list, the upgrade prompts and the automatic update sweep. Set auto_update = true in config.ini, or BBS_AUTO_UPDATE=1, to opt back in.

Reported by @kosli, who also suggested the opt-out.

Fixed: the Delete option disappeared from the backup plan menu (#390)

The plan menu lost its Delete entry. The item was still there — the menu had simply grown one row taller when "Dry Run" was added, and the bottom of it was being cut off.

The underlying cause is older and broader: the mechanism meant to let dropdown menus escape containers that clip them had never actually worked, because the setting was applied in a way the framework ignores. Every menu in the application was affected; the plan menu is just where one finally outgrew the space available. Menus now position correctly and are no longer clipped anywhere.

Delete is also now offered in two more places people reasonably look for it: the plan's own edit panel, and the Next Backup card menu on the client Overview tab.

Reported by @kosli.

Added: unlimited retention with a negative keep count (#386)

borg reads a negative --keep-* value as "no limit". BBS treated anything that wasn't a positive number as "rule off" and dropped the option, and the retention fields refused to accept the value at all, so there was no way to say "keep every yearly archive".

Entering -1 in any retention field now does what borg documents. 0 still means the rule is off. Not the recommended way to run a backup server, but it is a legitimate borg option and it is available now.

Requested by @kosli.

Server API

The settings area gained a token-authenticated API, admin-only, covering server settings, notification services, backup templates, API tokens and update state. Values are returned properly typed, partial updates only touch the fields you send, and secrets are write-only — they are never returned, only reported as set or unset.

This continues the API work from 2.73.0 and 2.74.0. The full reference is in the wiki.

Agent

Agent version 2.75.0. Agents that accept server-driven updates will pick it up on their next check-in.

Don't miss a new borgbackupserver release

NewReleases is sending notifications on new releases.