-
-
Notifications
You must be signed in to change notification settings - Fork 0
Settings
The Settings page provides centralized configuration for all BBS system-wide options. Access Settings via the Settings link in the navigation bar (admin only).
Settings are organized into tabs:
- General — Core system settings
- Email Settings — SMTP configuration and email notification toggles
- Push Notifications — Push alerts via Discord, Slack, Telegram, Pushover, and 100+ services
- Templates — Reusable backup templates
- Remote Storage — Remote SSH host configurations (rsync.net, BorgBase, Hetzner, etc.)
- S3 Backups — S3 sync global configuration
- Update — BBS and agent version management
- Borg Version — Borg binary version control
Screenshot: Settings page showing all tabs
Core system configuration options.
Screenshot: General tab showing all settings
Setting: Fully qualified domain name or IP address of the BBS server
Example: bbs.example.com or 192.168.1.100
Usage: Used in agent configuration, email links, and API endpoints
Important: Change this if you move BBS to a different domain or IP
Setting: Toggle for SSL/HTTPS enforcement
Options:
- Enabled: Redirect all HTTP to HTTPS, use secure cookies
- Disabled: Allow HTTP connections (LAN deployments only)
Default: Enabled (if installed with SSL certificate)
Note: Requires valid SSL certificate. Use --no-ssl during installation for LAN-only deployments.
Setting: Base directory for Borg repositories on the BBS server
Default: /var/bbs/repos/
Format: Absolute path ending with /
Important:
- Directory must exist and be writable by web server user (
www-data) - Changing this does NOT move existing repositories (manual migration required)
- Ensure sufficient disk space
Setting: Maximum number of jobs that can run simultaneously
Default: 4
Range: 1-50
Considerations:
- Low values (1-2): Prevents resource exhaustion on small servers
- Medium values (4-8): Balanced for typical deployments
- High values (10+): Large installations with many agents and powerful server
Impact:
- Jobs beyond this limit remain in
queuedstate - Each agent runs one job at a time (jobs don't stack on the same agent)
- Higher limits increase server load (CPU, RAM, network, disk I/O)
Setting: How often agents poll the server for new jobs (in seconds)
Default: 60 (1 minute)
Range: 30-600 seconds
Considerations:
- Short intervals (30-60s): Jobs start quickly, more responsive
- Long intervals (300-600s): Reduces server load, suitable for scheduled backups
- Too short: increases server load unnecessarily
- Too long: delays job execution
Agent Offline Detection: Agents are marked offline after 3x this interval
Setting: User session expiration time (in hours)
Default: 720 (30 days)
Range: 1-8760 hours (1 hour to 1 year)
Considerations:
- Short timeouts (1-24h): More secure, requires frequent logins
- Long timeouts (720h): Convenient, less secure
- Sessions expire after idle time, not total time
Security: Enable 2FA for long session timeouts
Setting: Percentage of disk usage that triggers storage low notifications
Default: 90%
Range: 50-99%
Example: If set to 90%, a notification is generated when repository storage reaches 90% capacity
Recommendations:
- High-churn environments: Set to 85% to allow more reaction time
- Stable environments: 90% is appropriate
- Adjust based on how quickly your storage fills up
Setting: Require all users to enable 2FA
Options:
- Enabled: Users cannot log in without 2FA enabled
- Disabled: 2FA is optional
Default: Disabled
Behavior:
- When enabled, users without 2FA are redirected to setup page after login
- Users cannot access BBS until 2FA is configured
- Admins can still emergency-reset 2FA via CLI
Recommendation: Enable for production environments with sensitive data
Configure SMTP for email notifications. Emails are sent to all admin users when enabled events occur.
| Setting | Description | Example |
|---|---|---|
| SMTP Host | Mail server hostname | smtp.gmail.com |
| SMTP Port | Mail server port |
587 (TLS), 465 (SSL), 25 (plain) |
| SMTP Username | Email account username | [email protected] |
| SMTP Password | Email account password | (encrypted) |
| Encryption | Transport encryption | TLS, SSL, or None |
| From Address | Sender email address | [email protected] |
| From Name | Sender display name | BBS Backup Server |
Click Test SMTP to verify your configuration. BBS sends a test email with subject [BBS] Test Email and reports success or failure.
Enable/disable email alerts for each of the 12 event types:
| Event | Description | Recommended |
|---|---|---|
| Backup Completed | Email when backup succeeds | Optional (can be noisy) |
| Backup Failed | Email when backup fails | Yes (critical) |
| Restore Completed | Email when restore succeeds | Optional |
| Restore Failed | Email when restore fails | Yes |
| Client Offline | Email when agent goes offline | Yes (infrastructure) |
| Client Online | Email when agent reconnects | Optional |
| Check Failed | Email when repo check fails | Yes |
| Compact Done | Email when repo compact finishes | Optional |
| Storage Low | Email when storage exceeds threshold | Yes (proactive) |
| S3 Sync Failed | Email when offsite sync fails | Yes |
| S3 Sync Done | Email when offsite sync completes | Optional |
| Missed Schedule | Email when scheduled backup doesn't run | Optional (can be noisy) |
Note: For backup alerts via Discord, Slack, Telegram, Pushover, and other services, use the Push Notifications tab instead.
See Notifications for SMTP configuration examples and troubleshooting.
Send alerts to Discord, Telegram, Slack, Pushover, and 100+ other services using Apprise.
- Click Add Service
- Select a Service Type from the dropdown:
- Pushover — Mobile push notifications
- Discord — Channel webhooks
- Slack — Workspace integrations
- Telegram — Bot messages
- Email — Direct SMTP delivery via Apprise
- ntfy — Self-hosted or ntfy.sh
- Custom — Any Apprise-compatible URL
- Fill in the guided form fields for your chosen service
- Select which events should trigger notifications for this service
- Click Save
Each service has its own set of event subscriptions. Events are grouped into 6 categories (Backups, Restores, Clients, Repositories, Storage, Schedules) with color-coded badges:
- Green — Success events (Backup Completed, Restore Completed, Client Online, Compact Done, S3 Sync Done)
- Red — Failure events (Backup Failed, Restore Failed, Check Failed, S3 Sync Failed)
- Yellow — Warning events (Client Offline, Storage Low, Missed Schedule)
You can create multiple services with different event selections. For example:
- Discord — subscribe to failure events for your team channel
- Pushover — subscribe to everything for personal mobile alerts
Click the Test button next to any service to send a test notification and verify connectivity.
- Enable/Disable — Toggle individual services on or off without deleting them
- Edit — Modify service URL or event selections
- Delete — Remove a service permanently
Apprise must be installed on the BBS server: pip3 install apprise
See Notifications for detailed setup instructions and the full list of supported services.
Create reusable backup templates with predefined directory paths and exclusion patterns.
Screenshot: Templates tab showing template list
Templates are pre-configured sets of:
-
Directories to back up: Common paths like
/var/www/,/home/,/etc/ -
Exclusion patterns: Files/directories to skip (e.g.,
*.log,node_modules/, cache directories)
Benefits:
- Consistency: Ensure all clients use the same backup configuration
- Efficiency: Create backup plans faster (select template instead of typing paths)
- Standardization: Enforce organizational backup policies
- Click Add Template button
- Fill in the form:
- Template Name: Descriptive name (e.g., "WordPress Site", "MySQL Server")
- Description: Optional notes about what this template is for
- Directories: One path per line, absolute paths
- Exclusions: One pattern per line (glob patterns supported)
- Click Save
Screenshot: Template creation form
Name: WordPress Site
Directories:
/var/www/html
/var/www/vhosts
/etc/apache2
Exclusions:
*.log
wp-content/cache/
wp-content/uploads/cache/
.git/
node_modules/
Name: MySQL Database Server
Directories:
/var/lib/mysql
/etc/mysql
/var/backups/mysql
Exclusions:
*.log
mysql-bin.*
*.tmp
When creating or editing a backup plan:
- Select a template from the Template dropdown
- Template directories and exclusions are automatically populated
- Modify as needed (template values are copied, not linked)
- Save the backup plan
Screenshot: Backup plan form with template dropdown
- Edit: Click the edit icon next to a template
- Delete: Click the delete icon (templates can be deleted even if used by plans, since values are copied)
- Changes to templates do NOT affect existing backup plans (plans store a copy of the template values)
Manage BBS server and agent software updates.
Screenshot: Updates tab showing version information
Displays:
-
Installed Version: Current BBS server version (from
VERSIONfile) - Available Version: Latest version on GitHub Releases
- Release Date: When the latest version was published
- Release Notes: Link to GitHub release notes
- Click Check for Updates button
- BBS queries GitHub Releases API for the latest version
- Compares with installed version
- Shows "Update Available" message if newer version exists
Frequency: Auto-check runs daily (via scheduler)
If an update is available:
- Click Upgrade to vX.Y.Z button
- Confirm the upgrade
- BBS executes
/var/www/bbs/bin/bbs-updatein the background - Update process:
- Git fetch and checkout latest tag
- Composer install (dependencies)
- Run database migrations
- Fix file permissions
- Restart PHP-FPM
- Refresh page to see new version
Screenshot: Upgrade button and confirmation dialog
Important:
- Backup BBS before upgrading (automatic daily backups via
bin/bbs-backup) - Review release notes for breaking changes
- Test in staging environment first (beta server)
Displays:
-
Current Agent Version: Version in
agent/bbs-agent.pyconstant - Agents Out of Date: Count of agents not running the current version
- Agent Version Distribution: Table showing version and count
Bulk Update All Agents:
- Click Update All Agents button
- BBS queues
update_agentjobs for all online agents - Agents download new script from server, validate, replace, and restart
- Monitor progress in Queue
Update Single Agent:
- Go to client detail page
- Click Update Agent button
- Monitor job in Queue
Screenshot: Agent version table with Update All Agents button
See Updating-BBS for detailed update procedures.
Manage Borg binary versions across all agents.
Screenshot: Borg Versions tab
Displays a list of Borg versions that can be installed on agents:
- Version: Borg version number (e.g., 1.2.4, 1.4.0)
- Release Date: When this version was released
- Agents Using: Count of agents running this version
- Actions: Set as target version
BBS can fetch the latest Borg releases from GitHub:
- Click Sync Borg Versions button
- BBS queries
borgbackup/borgGitHub Releases API - New versions are added to the list
- Existing versions are updated
Frequency: Manual (run when you want to upgrade Borg)
Choose which Borg version agents should use:
- Find the desired version in the list
- Click Set as Target
- Target version is highlighted in green
- New agents will install this version automatically
- Existing agents can be bulk-updated to this version
Bulk Update:
- Set target version
- Click Update Borg on All Agents
- BBS queues
update_borgjobs for all agents - Agents download/install the target Borg version
- Monitor progress in Queue
Single Agent Update:
- Go to client detail page
- Click Update Borg button
Agents install Borg using one of two methods:
-
Binary Download (preferred):
- Downloads pre-compiled Borg binary from GitHub releases
- Fast, reliable, no compilation required
- Works on most Linux distributions
-
Pip Install (fallback):
- Installs via
pip3 install borgbackup - Used if binary download fails
- Requires Python 3 and pip
- Installs via
Configuration:
- Set preferred method in agent configuration
- Agents automatically fall back to pip if binary fails
Screenshot: Borg version list with target version highlighted
Configure remote SSH hosts for creating borg repositories on external servers like rsync.net, BorgBase, and Hetzner Storage Box.
This tab displays a list of configured remote SSH host configurations. Each host can be used by multiple repositories across different clients.
- Click Add Host
- Optionally select a Provider Preset (rsync.net, BorgBase, Hetzner) to auto-fill common settings
- Fill in:
- Name: Descriptive name (e.g., "rsync.net Production")
- Host: Hostname or IP address
- Port: SSH port (default 22, Hetzner uses 23)
- Username: SSH username
-
Base Path: Base directory on the remote host (default
./) - SSH Private Key: PEM-format private key (encrypted at rest)
-
Remote Borg Path: Custom borg binary name (e.g.,
borg1for rsync.net)
- Click Add Host
Click the plug icon on any host card to test connectivity. BBS will SSH to the host and run borg --version, reporting the borg version found or any connection errors.
- Edit: Click the pencil icon to modify settings. Leave the SSH key field blank to keep the existing key.
- Delete: Click the trash icon. Deletion is blocked if any repositories reference this host.
See Remote Storage for full setup guide, provider-specific instructions, and troubleshooting.
Configure global S3-compatible storage for offsite repository sync.
Screenshot: Offsite Storage tab with S3 configuration form
| Setting | Description | Example |
|---|---|---|
| Endpoint | S3 API endpoint URL | s3.wasabisys.com |
| Region | Storage region | us-east-1 |
| Bucket Name | S3 bucket (must exist) | bbs-backups |
| Access Key | S3 access key ID | AKIAIOSFODNN7EXAMPLE |
| Secret Key | S3 secret access key | (encrypted) |
| Path Prefix | Optional prefix for objects | borgbackups/ |
| Bandwidth Limit | Upload speed limit |
10M (10 MB/s) |
Verify S3 credentials before saving:
- Click Test Connection
- BBS attempts to:
- Connect to S3 endpoint
- List bucket contents
- Create a test file
- Delete the test file
- Success or error message displayed
Common Errors:
- Access Denied: Invalid credentials or insufficient bucket permissions
- NoSuchBucket: Bucket doesn't exist or wrong region
- Connection Refused: Incorrect endpoint or firewall blocking
Screenshot: Test Connection button and success message
Setting: Enable automatic sync of BBS server backups to S3
Checkbox: "Sync server backups to S3"
Behavior:
- Daily server backups (from
bin/bbs-backup) are uploaded to S3 - Synced to
{bucket}/{prefix}/_server-backups/ - Keeps 7 most recent server backups in S3
- Enables complete disaster recovery (restore BBS server from S3)
Requirements: Global S3 settings must be configured and working
See S3-Offsite-Sync for detailed S3 configuration and troubleshooting.
Save Behavior:
- Click Save button at the bottom of each tab
- Settings are validated before saving
- Success or error message displayed
- Changes take effect immediately (no restart required)
Validation:
- Required fields must be filled
- Numeric fields must be within valid ranges
- Paths must be absolute and exist
- Email addresses must be valid format
All settings tabs are accessible only to users with admin role.
Regular users cannot:
- View Settings page
- Change system configuration
- Manage templates
- Update BBS or agents
Regular users can:
- Manage their own clients (if assigned)
- Create backup plans
- Configure plugin settings for their clients
Users can modify their own preferences at /profile:
- Email address
- Password
- Timezone
- 2FA settings
- Notification preferences
See User-Management for user role details.
- Poll Interval: Start with 60 seconds, increase if server load is high
- Max Concurrent Jobs: Start with 4, increase gradually based on server capacity
- Session Timeout: Use 24 hours for high-security environments, 720 hours for convenience
- Force 2FA: Enable for production servers with sensitive data
- Use Push Notifications: Set up at least one push service (Discord, Pushover, etc.) for immediate alerts
- Enable Critical Events: Always subscribe to Backup Failed, Agent Offline, and S3 Sync Failed
- Test Regularly: Periodically test push services and email delivery
- Monitor Spam: If using email, whitelist BBS from address to prevent spam filtering
- Standardize: Create templates for common server types (web, database, file server)
- Document: Add descriptions explaining what each template is for
- Review Periodically: Update templates as backup requirements change
- Test: Use templates on test clients before deploying to production
- Auto-Check: Leave auto-update check enabled (daily)
- Staging First: Test updates on beta server before production
-
Backup Before Update: Ensure
bin/bbs-backuphas run recently - Review Release Notes: Check for breaking changes or migration steps
- Stagger Agent Updates: Don't update all agents at once (test on a few first)
- Stay Current: Keep Borg up to date for security and bug fixes
- Test New Versions: Test new Borg versions on non-critical agents first
- Compatibility: Verify Borg version is compatible with your repositories (major version changes may break compatibility)
- Secure Credentials: Use dedicated S3 user with minimal permissions
- Test Connection: Always test before saving configuration
- Monitor Costs: Check S3 bill monthly, adjust retention or storage class if needed
- Enable Server Backup Sync: Critical for disaster recovery
Possible Causes:
- Validation errors in form fields
- Database connection issue
- Permission error
Solutions:
- Check for red error messages above form fields
- Ensure all required fields are filled
- Verify database is running:
sudo systemctl status mysql - Check
/var/log/apache2/error.logfor errors
See Notifications troubleshooting section for detailed SMTP debugging.
See S3-Offsite-Sync troubleshooting section for S3-specific issues.
Possible Causes:
- No internet connection from BBS server
- GitHub API rate limit exceeded
- Firewall blocking outbound HTTPS
Solutions:
- Verify internet connectivity:
curl https://api.github.com - Check firewall allows outbound HTTPS (port 443)
- Wait 1 hour if rate limit exceeded (60 requests/hour for unauthenticated)
Possible Causes:
- Browser cache showing old values
- PHP-FPM cache not cleared
Solutions:
- Hard refresh browser:
Ctrl+Shift+R - Restart PHP-FPM:
sudo systemctl restart php8.1-fpm - Clear browser cache completely
- Notifications — Push and email notification configuration and troubleshooting
- Remote Storage — Remote SSH host setup and provider guides
- S3-Offsite-Sync — Detailed S3 setup and usage
- Updating-BBS — Update procedures for BBS and agents
- User-Management — User roles and permissions
- Two-Factor-Authentication — Configuring 2FA
📖 User Manual
Getting Started
Using BBS
- Dashboard
- Managing Clients
- Linux Agent Setup
- macOS Agent Setup
- Windows Agent Setup
- Repositories
- Backup Plans
- Restoring Files
- Database Backups
- Plugins
- Remote Storage
- S3 Offsite Sync
Monitoring
Administration
Reference