How to Backup a Server or NAS to BorgBase using Borg UI

Borg UI is a community-maintained web interface for Borg. It runs as a Docker container, or natively on Debian and Ubuntu, on a server, NAS or homelab box and manages Borg repositories from the browser. It ships a BorgBase preset, so the repository path form and the SSH key setup are handled for you.

Features

  • Create backups to a BorgBase repository on a schedule, with retention and compaction alongside
  • Watch backups run with live progress and cancel from the interface
  • Browse any archive like a filesystem and restore a single file or the whole tree
  • Check, prune and compact repositories from the browser
  • Back up several machines: local paths, remote hosts over SSH, or agents for machines behind NAT
  • Notifications on success and failure through Slack, Discord, Telegram, email and others
  • Free Community edition under AGPL-3.0, source can be found here

Install

One container:

docker run -d -p 8081:8081 -v borg_data:/data ainullcode/borg-ui:latest

Compose, Portainer, Unraid and the native Debian and Ubuntu install are covered in the installation docs.

Connect to Repository

  • Create a new repository on BorgBase and note its repository URL, for example ssh://abcd@abcd.repo.borgbase.com/./repo
  • In Borg UI, open Remote Machines, choose Add machine and pick the BorgBase preset. Paste the host and username from the repository URL
  • Press Deploy key. Borg UI shows its public SSH key. Add it under Access > SSH Keys in the BorgBase control panel and select it on the repository
  • Open Repositories, choose New repository or Import existing, select Remote and the BorgBase machine, and enter the path exactly as in the URL: /./repo
  • Set a passphrase. Borg UI stores it encrypted so scheduled runs work unattended

A walkthrough with the exact values is at borgui.com/providers/borgbase.

Scheduled Backups

  • Open Backup Plans and choose New plan
  • Pick the folders to back up and the BorgBase repository as the target
  • Set the schedule, either with cron or one of the presets, and the retention, for example 7 daily, 4 weekly and 6 monthly
  • Add a notification channel so a failed run is not silent