Replace complex Borg Backup terminal commands with a beautiful web UI. Create, schedule, and restore backups with just a few clicks. https://karanhudia.github.io/borg-ui/
  • Python 55.6%
  • TypeScript 43.1%
  • Shell 1%
  • JavaScript 0.1%
  • Dockerfile 0.1%
Find a file
karanhudia d22f08efc0 fix: prevent double execution of repo scripts in multi-repo schedules
When run_repository_scripts=True, pre/post-backup scripts were being
executed twice: once explicitly in execute_multi_repo_schedule and
again inside execute_backup() via _execute_hooks(). For non-idempotent
scripts (e.g. docker stop), the second run would fail and mark the
backup as failed even though the script had succeeded the first time.

Fix by adding skip_hooks parameter to execute_backup(). Multi-repo
schedules now pass skip_hooks=run_repository_scripts so execute_backup
defers hook execution to the schedule's explicit blocks when enabled.

Also fix run_script_from_library to apply parameter defaults even when
no custom parameter values are provided (script_parameters=None).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 11:37:42 +05:30
.claude chore: organize repository structure 2026-02-16 10:57:18 +05:30
.github fix: skip PR comment for fork contributions 2026-03-27 11:38:31 +05:30
app fix: prevent double execution of repo scripts in multi-repo schedules 2026-03-29 11:37:42 +05:30
docs docs(18-01): add Emergency Password Reset (CLI) subsection to security.md 2026-03-21 21:44:15 +05:30
frontend chore(deps): bump the frontend-minor-patch group across 1 directory with 13 updates (#367) 2026-03-27 11:28:27 +05:30
screenshots chore: remove old screenshots 2026-02-10 17:00:12 +05:30
scripts chore: Update locale parity check 2026-03-23 19:14:50 +05:30
tests fix: set BORG_REMOTE_PATH env var in borg mount command (#378) 2026-03-29 11:36:31 +05:30
.coveragerc fix: add relative_files to coverage config for GitHub Actions 2025-11-26 14:48:28 +05:30
.env.example docs: add reverse proxy guide and remove unsupported BASE_PATH references 2026-03-02 22:30:23 +05:30
.gitignore feat: sudo for remote SSH backups, skip-on-failure mode, and script context improvements (#337) 2026-03-24 17:49:31 +05:30
borg-ui-logo.png feat: improve scheduled backups with timezone fixes, backup history, and UI enhancements 2025-10-22 21:53:38 +05:30
Borg_UI_API.postman_collection.json docs: remove all remaining borgmatic references 2025-10-16 15:39:07 +05:30
dev.sh chore: move tests 2026-03-04 13:14:01 +05:30
docker-compose.yml feat: Add support for subfolder-based reverse proxy configurations. (#339) 2026-03-21 21:43:25 +05:30
Dockerfile feat: upgrade borg version 2026-03-21 21:44:15 +05:30
entrypoint.sh fix: bypass gosu when PUID=0 to fix intermittent Web UI startup failure 2026-03-23 14:49:19 +05:30
LICENSE docs: restructure README and change license to AGPL-3.0 2026-02-02 13:12:55 +05:30
logo.png docs: simplify documentation and add logo to README 2026-02-04 23:00:19 +05:30
LogoWithBackground.png chore: use actual logo 2026-02-04 23:14:27 +05:30
LogoWithName.png chore: add logo with name 2026-02-04 23:18:52 +05:30
LogoWithNameWhite.png chore: update image 2026-02-04 23:21:55 +05:30
pytest.ini chore: move tests 2026-03-04 13:14:01 +05:30
README.md Update logo in README 2026-02-04 23:23:41 +05:30
requirements.txt chore(deps): bump pytest-asyncio from 0.21.1 to 1.3.0 (#281) 2026-03-27 11:02:50 +05:30
run_tests.sh feat: add comprehensive testing infrastructure with CI/CD 2025-11-06 11:55:58 +05:30
VERSION chore: bump version to 1.78.0 2026-03-29 11:37:28 +05:30

Borg UI

Docker Hub License: AGPL-3.0 GitHub Actions Tests codecov Discord

A modern web interface for Borg Backup

Zero-configuration deployment - just run and go.


Note

This project uses Claude Code as a development assistant. I'm a full-stack developer with 10+ years of experience, and I personally review all AI-generated code before merging. Architecture decisions, security practices, and testing are human-driven. Claude Code is acknowledged as a co-author in git commits. All code is open source for community review - your backups deserve scrutiny, and I encourage it.


Features & Screenshots

Modern Dashboard

Monitor all your repositories, backup status, and system metrics at a glance. View repository health, recent activity feed, storage usage, and quick access to common operations. Get a comprehensive overview of your entire backup infrastructure in one place.

Modern Dashboard with activity monitoring

Live Backup Progress

Watch your backups execute in real-time with detailed progress tracking. Monitor current file being processed, backup speed (MB/s), data statistics (original, compressed, deduplicated sizes), estimated time remaining, and overall completion percentage.

Real-time backup progress with live metrics

Repository Management

Create and manage repositories with support for local storage, SSH, and SFTP connections. Configure encryption (repokey, keyfile), compression algorithms (lz4, zstd, zlib, lzma, auto, obfuscate), source directories, exclude patterns, and custom borg flags. Import existing repositories or create new ones with step-by-step wizard.

Repository details Create Repository Dialog

Smart Notifications

Get instant alerts for backup events via 100+ notification services powered by Apprise. Configure Email, Slack, Discord, Telegram, Pushover, Microsoft Teams, and many more. Set up per-repository notification preferences with customizable templates for backup start, success, failure, and warnings.

Notification settings with 100+ integrations

Archive Browsing

Browse and restore files from any backup archive with 600x faster performance using Redis caching. Navigate through your backup history, preview file contents, and restore individual files or entire directories.

Archive Browsing

Schedule Management

Create and manage automated backup schedules with visual cron builder. Configure multi-repository backups, set up pre/post scripts, enable automatic pruning and compacting, and track execution history with detailed logs.

Create and View Schedule Tab

Key Features

  • Backup Management - Create, schedule, and monitor backups with live progress tracking
  • Archive Browser - Browse and restore files from any backup archive with Redis caching (600x faster for large repos)
  • Repository Management - Support for local, SSH, and SFTP repositories with multiple compression options
  • Scheduling - Visual cron job builder with execution history
  • Pre/Post Backup Hooks - Run custom scripts before/after backups (e.g., stop Docker containers, database dumps)
  • Notifications - Get alerts via 100+ services (Email, Slack, Discord, Telegram, Pushover, etc.)
  • SSH Key Management - Generate, import, and deploy SSH keys for remote repositories
  • Real-time Monitoring - Live backup progress, system metrics, and health checks
  • Multi-platform - Supports amd64, arm64, and armv7 architectures

Getting Started

Installation is simple with Docker:

# Pull and run
docker run -d \
  --name borg-web-ui \
  -p 8081:8081 \
  -v borg_data:/data \
  -v borg_cache:/home/borg/.cache/borg \
  -v /home/yourusername:/local:rw \
  ainullcode/borg-ui:latest

Access at http://localhost:8081 • Default credentials: admin / admin123

📖 Installation Guide - Complete setup with Docker Compose, Redis, Portainer, Unraid


Documentation

📚 Full Documentation - Complete guides and tutorials

Quick links:


Support


Contributing

Want to help improve Borg Web UI? See our Contributing Guide and Development Guide to get started.


License

This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.


Built with Borg Backup, FastAPI, React, and Material-UI

Made with ❤️ by Karan Hudia