Usage Guide
This guide walks you through using Borgitory’s key features step-by-step, from initial setup to advanced operations. Examples assume you’re using the recommended Docker installation method.
Getting Started
First-Time Setup
After starting Borgitory with Docker, access the web interface at http://localhost:8000:
# Start Borgitory (if not already running)
docker run -d \
--name borgitory \
-p 8000:8000 \
-v borgitory-data:/app/data \
mlapaglia/borgitory:latest
Now you can access the web interface:
Create Admin Account
On first visit, you’ll see the initial setup page
Create your admin username and password
Click “Create Account” to complete setup
Dashboard Overview
The main dashboard shows repository status
Navigation menu provides access to all features
Quick actions are available in the toolbar
Repository Management
Adding Your First Repository
Navigate to Repositories
Click “Repositories” in the main navigation
Click “Add Repository” button
Configure Repository
Name: My Backup Repo Path: /mnt/repos/my-backup-repo Passphrase: [secure-passphrase]
Name: Friendly identifier for the repository
Path: Full path to repository location (must be under /mnt/ for Docker)
Passphrase: Encryption password for the repository
Test Connection
Click “Test Connection” to verify repository access
Green checkmark indicates successful connection
Red X indicates configuration issues
Save Repository
Click “Save” to add the repository
Repository appears in the main dashboard
Managing Multiple Repositories
- Repository List View
View all configured repositories
See connection status and last backup time
Quick actions: Edit, Delete, Test Connection
- Repository Details
Click repository name to view detailed information
Repository statistics and health metrics
Recent backup history and archive list
Creating Backups
Manual Backup
Start New Backup
From dashboard, click “New Backup” button
Or navigate to Backups → Manual Backup
Configure Backup Settings
Repository: My Backup Repo Source Path: /mnt/backup/sources/documents Archive Name: documents-{now:%Y%m%d-%H%M%S} Compression: lz4Repository: Select target repository from dropdown
Source Path: Directory to backup (must be under /mnt/ for Docker)
Archive Name: Name template with timestamp support
Compression: Choose compression algorithm (lz4, zlib, lzma, zstd)
Advanced Options (Optional)
Include/Exclude Patterns: File patterns to include/exclude from backup (see Backup Patterns Guide for detailed guide)
One File System: Don’t cross filesystem boundaries
Numeric Owner: Store numeric user/group IDs
Checkpoint Interval: Create checkpoints every N seconds
Start Backup
Click “Start Backup” to begin the process
Real-time progress appears immediately
Monitor transfer rates and file counts
Monitoring Backup Progress
- Real-Time Progress Display
Live progress bar with percentage complete
Current file being processed
Transfer rate and estimated time remaining
Total files processed and data transferred
- Expandable Task Details
Click “Show Details” to view full command output
See Borg’s detailed progress information
Monitor any warnings or errors
View compression statistics
- Job Completion
Success notification with backup summary
Archive information and statistics
Links to browse the new archive
Option to start cloud sync if configured
Scheduled Backups
Creating Backup Schedules
Navigate to Schedules
Click “Schedules” in the main navigation
Click “Add Schedule” button
Basic Schedule Configuration
Name: Daily Documents Backup Repository: My Backup Repo Source Path: /mnt/backup/sources/documents Cron Expression: 0 2 * * * Enabled: ✓
Name: Descriptive name for the schedule
Repository: Target repository for backups
Source Path: Directory to backup regularly
Cron Expression: When to run (daily at 2 AM in this example)
Enabled: Toggle to activate/deactivate schedule
Advanced Schedule Options
Compression: Set compression algorithm
Archive Naming: Template for archive names
Pruning Policy: Attach retention policy
Notifications: Configure success/failure alerts
Cloud Sync: Enable automatic cloud synchronization
Job Hooks: Configure pre-job and post-job automation scripts (see Package Manager for Pre/Post Hooks for installing required tools)
Understanding Cron Expressions
Common cron patterns:
0 2 * * * # Daily at 2:00 AM
0 2 * * 0 # Weekly on Sunday at 2:00 AM
0 2 1 * * # Monthly on 1st at 2:00 AM
0 */6 * * * # Every 6 hours
30 1 * * 1-5 # Weekdays at 1:30 AM
The interface shows human-readable descriptions of cron expressions.
Job Hooks System
Job hooks allow you to execute custom commands before and after backup jobs, enabling powerful automation workflows.
Hook Types
Pre-Job Hooks: Execute before the backup process begins
Ideal for database dumps, stopping services, mounting drives
Can be marked as “Critical” to stop the job if they fail
Prepare systems for consistent backups
Post-Job Hooks: Execute after the backup process completes
Perfect for cleanup, service restarts, health checks
Can be configured to run even if the job fails
Restore system state and send notifications
Adding Hooks to a Schedule
Open Hooks Configuration
In the schedule creation/editing form, click “Configure Hooks”
This opens the hooks configuration modal
Configure Pre-Job Hooks
Name: Database Dump Command: pg_dump myapp > /tmp/myapp_backup.sql Critical: ✓ Enabled Name: Stop Web Service Command: systemctl stop nginx && sleep 5 Critical: ✓ Enabled
Configure Post-Job Hooks
Name: Restart Services Command: systemctl start nginx && systemctl start mysql Run Even If Job Failed: ✓ Enabled Name: Health Check Ping Command: curl -X POST https://healthcheck.io/ping/abc123 Run Even If Job Failed: ✓ Enabled
Hook Options
Critical Hooks: Job fails immediately if a critical hook fails
Use for essential preparation tasks (database dumps, prerequisites)
Prevents inconsistent backups when preparation fails
Run on Job Failure (Post-hooks only): Hook executes even if backup fails
Use for cleanup, service restarts, monitoring pings
Ensures system recovery regardless of backup success
Hook Execution Flow
Normal execution (all successful):
1. Pre-Hook 1 (Database Dump) → ✅ Success
2. Pre-Hook 2 (Stop Services) → ✅ Success
3. Backup Task → ✅ Success
4. Prune Task → ✅ Success
5. Post-Hook 1 (Restart Services) → ✅ Success
6. Post-Hook 2 (Health Check) → ✅ Success
Result: ✅ Job Completed Successfully
Critical hook failure:
1. Pre-Hook 1 (Database Dump) → ❌ Failed (Critical)
2. Pre-Hook 2 (Stop Services) → ⏭️ Skipped
3. Backup Task → ⏭️ Skipped
4. Prune Task → ⏭️ Skipped
5. Post-Hook 1 (Restart Services) → ⏭️ Skipped
6. Post-Hook 2 (Health Check) → ✅ Success (Run on Failure)
Result: ❌ Job Failed - Critical Hook Error
Environment Variables
Hook scripts automatically receive job context:
# Available in all hook scripts
BORGITORY_REPOSITORY_ID="123" # Repository being backed up
BORGITORY_TASK_INDEX="2" # Hook position in job sequence
BORGITORY_JOB_TYPE="scheduled" # Job type (scheduled, manual)
Common Hook Examples
Database Preparation:
# Pre-hook: Create PostgreSQL dump
# Requires: postgresql-client package (install via Package Manager)
#!/bin/bash
pg_dump -h localhost -U backup_user myapp > /tmp/db_backup.sql
if [ $? -ne 0 ]; then
echo "Database dump failed"
exit 1
fi
Service Management:
# Post-hook: Restart services (always run)
#!/bin/bash
systemctl start nginx
systemctl start mysql
echo "Services restarted"
Health Monitoring:
# Post-hook: Send health check ping
# Requires: curl package (install via Package Manager)
#!/bin/bash
curl -X POST "https://healthcheck.io/ping/your-uuid" \
-d "Backup completed for repo ${BORGITORY_REPOSITORY_ID}"
For comprehensive hook documentation, examples, and troubleshooting, see Job Hooks System Documentation.
Managing Schedules
- Schedule List
View all configured schedules
See next run time and last execution
Quick enable/disable toggles
Edit and delete options
- Schedule History
Click schedule name to view execution history
See successful and failed runs
Access logs and error details
Performance metrics and trends
Archive Pruning
Creating Pruning Policies
Navigate to Cleanup
Click “Cleanup” in the main navigation
Click “Add Pruning Policy” button
Simple Retention Strategy
Name: Keep 30 Days Strategy: Simple Keep Days: 30 Show Details: ✓ Show Stats: ✓
Keep Days: Number of days to retain archives
Show Details: Display detailed list of archives to prune
Show Stats: Show space savings calculations
Advanced Retention Strategy
Name: Granular Retention Strategy: Advanced Keep Daily: 7 Keep Weekly: 4 Keep Monthly: 6 Keep Yearly: 2
Keep Daily: Recent daily archives to retain
Keep Weekly: Weekly archives to retain
Keep Monthly: Monthly archives to retain
Keep Yearly: Yearly archives to retain
Executing Pruning Operations
- Manual Pruning
Select repository from dropdown
Choose pruning policy
Click “Preview Prune” to see what will be deleted
Review the prune list and space savings
Click “Execute Prune” to perform cleanup
- Automated Pruning
Attach pruning policies to backup schedules
Pruning runs automatically after successful backups
Monitor pruning results in job history
Archive Browsing
Exploring Archive Contents
Access Archive Browser
From dashboard, click “View Contents” next to any archive
Or navigate to Archives → Browse Archives
Navigate Directory Structure
Click folder names to navigate into directories
Use breadcrumb navigation to go back
See file sizes, modification dates, and permissions
File Operations
Download: Click download button (⬇) next to files
View Details: See file metadata and properties
Search: Use search box to find specific files
- FUSE Requirements
Archive browsing requires FUSE support:
Docker: Run with
--cap-add SYS_ADMIN --device /dev/fuseNative: Ensure FUSE is installed and accessible
Without FUSE: Archive browsing will be disabled
Downloading Files from Archives
- Direct Downloads
Files stream directly from mounted archives
No temporary storage required
Works efficiently with large files
Multiple downloads can run simultaneously
- Download Process
Navigate to desired file in archive browser
Click download button next to file
Browser starts download immediately
Monitor download progress in browser
Cloud Synchronization
Configuring Cloud Providers
Navigate to Cloud Sync
Click “Cloud Sync” in the main navigation
Click “Add Cloud Configuration” button
Select Provider
Choose from supported providers (S3, Google Cloud, Azure, etc.)
Provider-specific fields appear automatically
Configure S3 Example
Name: My S3 Backup Provider: s3 Access Key ID: AKIAIOSFODNN7EXAMPLE Secret Access Key: [hidden] Bucket Name: my-backup-bucket Region: us-east-1 Path Prefix: borgitory-backups/
Access Keys: AWS credentials for bucket access
Bucket Name: S3 bucket for storing backups
Region: AWS region for the bucket
Path Prefix: Organization path within bucket
Test Connection
Click “Test Connection” to verify configuration
Green checkmark indicates successful connection
Fix any configuration issues before saving
Manual Cloud Sync
- Sync Repository to Cloud
Navigate to Cloud Sync → Manual Sync
Select repository to sync
Choose cloud configuration
Click “Start Sync” to begin upload
Monitor real-time sync progress
- Sync Progress Monitoring
Real-time transfer statistics
Files uploaded and transfer rates
Estimated time remaining
Error reporting and retry logic
Automated Cloud Sync
- Schedule Integration
Enable cloud sync in backup schedules
Automatic sync after successful backups
Configure sync settings per schedule
Monitor sync results in job history
- Cloud Sync History
View all sync operations
See successful and failed syncs
Access detailed sync logs
Monitor bandwidth usage over time
Push Notifications
Configuring Pushover Notifications
Get Pushover Credentials
Sign up at https://pushover.net/
Create application to get API token
Note your user key from account settings
Configure in Borgitory
Navigate to Notifications
Click “Add Notification Configuration”
Select “Pushover” as provider
Name: My Phone Alerts Provider: Pushover User Key: [your-user-key] API Token: [your-app-token] Device: [optional-device-name]
Test Notifications
Click “Test Notification” to send test message
Verify notification appears on your device
Adjust settings if needed
Notification Settings
- Global Settings
Default notification preferences
Quiet hours configuration
Emergency escalation rules
Message formatting options
- Per-Schedule Settings
Attach notifications to specific schedules
Configure success/failure triggers
Custom message templates
Priority levels and sounds
Job Management
Monitoring Active Jobs
- Jobs Dashboard
View all active and recent jobs
Real-time status updates
Progress indicators for running jobs
Quick actions: Cancel, View Details, Retry
- Job Details View
Expandable task details with full output
Real-time log streaming
Performance metrics and statistics
Error reporting and diagnostics
Job History
- Historical Job Data
Search and filter job history
View job duration and performance trends
Access detailed logs and error reports
Export job data for analysis
- Job Analysis
Success/failure rates over time
Performance trending and optimization
Resource usage patterns
Bottleneck identification
Troubleshooting Common Issues
Quick Diagnostics
- Repository Issues
Verify repository path is correct and accessible
Check passphrase is correct
Ensure Borg is installed and in PATH
Test repository with Borg CLI directly
- Backup Failures
Check source path exists and is readable
Verify sufficient disk space
Review exclude patterns for conflicts
Check file permissions and access rights
- Cloud Sync Problems
Test cloud provider credentials
Verify bucket/container exists
Check network connectivity
Review Rclone configuration
For detailed troubleshooting information, see the Troubleshooting Guide guide.
Best Practices
Repository Management
Use descriptive repository names
Store repositories on reliable storage
Regular repository integrity checks
Keep passphrases secure and backed up
Monitor repository size growth
Backup Strategy
Test backup and restore procedures regularly
Use appropriate compression for your data
Implement 3-2-1 backup strategy (3 copies, 2 different media, 1 offsite)
Monitor backup success rates and performance
Document your backup procedures
Security Considerations
Use strong passphrases for repositories
Secure cloud provider credentials
Regular security updates and patches
Monitor access logs for suspicious activity
Implement proper network security
Next Steps
Explore How-To Guides guides for specific tasks
Configure Adding New Cloud Providers for additional storage options
Review Troubleshooting Guide for common issues
Check the API Reference documentation for automation
Join the community on GitHub for support and updates