- Python 55.6%
- TypeScript 43.1%
- Shell 1%
- JavaScript 0.1%
- Dockerfile 0.1%
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> |
||
|---|---|---|
| .claude | ||
| .github | ||
| app | ||
| docs | ||
| frontend | ||
| screenshots | ||
| scripts | ||
| tests | ||
| .coveragerc | ||
| .env.example | ||
| .gitignore | ||
| borg-ui-logo.png | ||
| Borg_UI_API.postman_collection.json | ||
| dev.sh | ||
| docker-compose.yml | ||
| Dockerfile | ||
| entrypoint.sh | ||
| LICENSE | ||
| logo.png | ||
| LogoWithBackground.png | ||
| LogoWithName.png | ||
| LogoWithNameWhite.png | ||
| pytest.ini | ||
| README.md | ||
| requirements.txt | ||
| run_tests.sh | ||
| VERSION | ||
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.
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.
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.
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.
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.
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.
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:
- Installation Guide - Detailed setup for all platforms
- Configuration Guide - Environment variables and customization
- Usage Guide - Creating your first backup
- Notifications Setup - Email, Slack, Discord alerts
- SSH Keys Guide - Remote backup setup
- Security Guide - Best practices
Support
- Discord: Join our community - Get help, share your setup, suggest features
- Documentation: Full Documentation
- Bug Reports: GitHub Issues
- Discussions: GitHub Discussions
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