MCPcopy Index your code
hub / github.com/Ravinou/borgwarehouse

github.com/Ravinou/borgwarehouse @v3.5.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.5.0 ↗ · + Follow
225 symbols 922 edges 154 files 1 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

BorgWarehouse

A fast and modern WebUI for a BorgBackup's central repository server.



<a href="https://borgwarehouse.com"><strong>Explore the docs »</strong></a>

Docker Pulls GitHub Release GitHub Stars

  <img src="https://github.com/Ravinou/borgwarehouse/raw/v3.5.0/medias/borgwarehouse-og-light.png" alt="presentation">

⭐ Support the Project

GitHub Sponsors Liberapay patrons

If you find BorgWarehouse helpful or interesting, please consider giving it a star on GitHub and sponsoring. Your support is greatly appreciated!

✨ What is BorgWarehouse ?

BorgWarehouse is a graphical interface to manage a central BorgBackup repository server.

Running a central BorgBackup server usually means doing everything by hand from the command line: create a system user, attach an SSH key, set a quota, carve out storage… Adding, editing or removing a repository quickly becomes long and tedious.

BorgWarehouse does all of that for you. Create a repository in a few clicks, hand the ready-to-use SSH command to your client, and get a clear visual feedback on the health of every backup - without ever touching your terminal again.

🚀 Features

🗄️ Repository management

  • Add, edit and delete Borg repositories from a clean web UI - the whole system layer (user, SSH, quota) is handled automatically
  • Per-repository storage quotas
  • Per-repository external storage - store each repository on the mounted storage of your choice (SSHFS, NFS, SMB/CIFS, a dedicated disk, an rclone mount…), selectable from the UI at creation time, with a live reachability check
  • Append-only mode to protect your backups against ransomware or a compromised client
  • Custom icon per repository to spot them at a glance
  • Ready-to-paste SSH commands for your clients, with an optional LAN variant
  • Protection against repository deletion
  • ... many more !

📊 Monitoring & alerts

  • Real-time status for each repository (healthy / down)
  • Monitoring dashboard
  • "No recent backup" alerts based on a per-repository threshold

🔔 Notifications

  • Email (SMTP)
  • Apprise - push alerts to 100+ services (Discord, Telegram, Slack, Gotify, ntfy…)
  • Webhooks - with an optional custom secret header for payload validation

🔐 Authentication & security

  • Local accounts and SSO via OAuth / OIDC: GitHub, Google, Microsoft, GitLab or any generic OIDC provider
  • Account linking with an existing local account
  • Optional password-login disable mode (SSO-only)
  • First-run setup wizard (no default credentials)
  • Admin tool to reset a password or revoke sessions

🎨 Modern UI/UX

  • Light & dark mode 🌙
  • Responsive design
  • Instant search, sorting and filtering of your repositories
  • Setup wizard to onboard your Borg clients step by step

🧩 Automation & API

  • A full, versioned and idempotent REST API to manage everything programmatically
  • Packaged as a single Docker image

🔒 Privacy by design

BorgWarehouse manages the server side of your Borg setup (repositories, users, SSH access, quotas and monitoring) and is not meant to take over client-side responsibilities. It never asks for, stores, or has access to your repository passphrase.

Your backups are end-to-end encrypted on your client, before they ever reach the server. BorgWarehouse can never read, decrypt or browse their content - and it never will. This is a deliberate boundary of the project: any feature that would require your passphrase will simply never be built.

📖 Get started

curl -fsSL https://raw.githubusercontent.com/Ravinou/borgwarehouse/main/docker/install.sh | bash

Full documentation : borgwarehouse.com

❤️ Special thanks to sponsors ❤️

🥇 Current sponsors 🥇

Past sponsors

Core symbols most depended-on inside this repo

serverError
called by 37
helpers/functions/apiResponse.ts
handler
called by 32
pages/api/v1/notif/apprise/mode.ts
isValidUsername
called by 31
helpers/functions/usernamePolicy.ts
handler
called by 28
pages/api/v1/repositories/[slug]/index.ts
handler
called by 28
pages/api/v1/account/email.ts
stop
called by 28
contexts/LoaderContext.tsx
getSession
called by 27
helpers/getServerSession.ts
unauthorized
called by 24
helpers/functions/apiResponse.ts

Shape

Function 209
Method 9
Enum 5
Class 2

Languages

TypeScript100%

Modules by API surface

helpers/functions/apiResponse.ts12 symbols
Containers/RepoList/RepoList.tsx10 symbols
Containers/UserSettings/Integrations/Integrations.tsx8 symbols
Containers/SetupWizard/SetupWizard.tsx8 symbols
Containers/UserSettings/WebhookAlertSettings/WebhookAlertSettings.tsx6 symbols
pages/api/v1/notif/apprise/test.ts5 symbols
helpers/functions/storageTargets.ts5 symbols
Components/Repo/Repo.tsx5 symbols
Components/Repo/IconPicker/IconPicker.tsx5 symbols
pages/login.tsx4 symbols
hooks/useFormStatus.ts4 symbols
contexts/LoaderContext.tsx4 symbols

For agents

$ claude mcp add borgwarehouse \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact