External storage

Repositories location

The repositories (i.e. the raw backup data from BorgBackup) are stored in the repos directory:

  • Under Docker: the repos volume.
  • Baremetal: /home/borgwarehouse/repos.

There are two ways to use external storage, described below.

Option 1: one external storage for all repositories

Point the whole repos directory at the storage of your choice. BorgWarehouse works with any storage you can mount as a directory (SSHFS, NFS, SMB/CIFS, a dedicated disk, an rclone mount, etc.):

  • Baremetal: replace repos with a symbolic link to your mount, or mount your storage directly on /home/borgwarehouse/repos.
  • Docker: bind-mount your storage as the repos volume.

BorgWarehouse then uses it transparently, with no extra configuration.

Option 2: a different storage per repository (from the UI)

Instead of a single storage for everything, you can keep some repositories local and send others to one or several external storages, chosen from the UI when creating each repository. BorgWarehouse stores the data on the selected storage and adds a symbolic link inside repos/ automatically, so quota, storage usage and last backup keep working transparently.

Setup

  1. Mount your external storage(s) on the host, anywhere outside the repos directory (for example /mnt/nas). BorgWarehouse only needs a writable directory; how you mount it is up to you.

  2. Declare the mount point(s) in the STORAGE_TARGETS environment variable (comma-separated absolute paths). You can add an optional display name with the path|name syntax:

    STORAGE_TARGETS="/mnt/nas|Home NAS,/mnt/backup-disk"
    

    The name is only for display in the UI. The path stays the source of truth; a target without a name simply shows its raw path.

    In Docker, remember to also bind-mount these paths into the container:

    volumes:
      - /mnt/nas:/mnt/nas
      - /mnt/backup-disk:/mnt/backup-disk
    
  3. Restart BorgWarehouse. When creating a repository, pick the storage in the “Storage location” selector.

borgwarehouse storage location

Monitor your storage targets

A Storage targets section in Account โ†’ Storage lists every declared target (with its name when set) and a live status:

  • ๐ŸŸข Online: the mount point exists and is writable.
  • ๐Ÿ”ด Unreachable: the mount point is missing or not writable (e.g. a dead mount).

Use Test again to re-run the check on demand.

borgwarehouse account storage location

The name also appears in the storage chip on each repository in the list (hover to read it).

borgwarehouse storage location icon

Good to know

  • A storage target must be outside the repos pool. BorgWarehouse refuses to create a repository whose target is the pool itself or nested inside it.
  • BorgWarehouse does not mount the storage for you; keeping the mount alive is your responsibility.
  • The storage is chosen at creation time only and cannot be changed afterwards.
  • Deleting a repository stored on an external target removes both the symbolic link and the data on the external storage.
  • Each repository still requires its own SSH key (an OpenSSH limitation, independent of the storage location).