Skip to content

The-Network-Crew/BackBork-KISS-Plugin-for-WHM

Repository files navigation

πŸ›‘οΈ BackBork KISS

Disaster Recovery for WHM β€” The Simple Way

Note

Beta Release (v1.3.x) β€” Tested and working as of v1.3.10.

We recommend testing in a non-production environment first. Bug reports and contributions welcome!


πŸ€” What is it?

BackBork wraps WHM's existing backup tools into a clean interface. No reinventing the wheel β€” just a nicer way to manage disaster recovery backups.

KISS = Keep It Simple, Stupid

We've built this for sysadmins and resellers who want reliable account backups without having to opt for a flawed paid offering to get around the native backup limitations (ie. backs up all accounts before transporting & deleting all, meaning disk allocations need to be 250-300%)

Select your accounts, pick a destination, backup/restore now or queue it. Done.


✨ Features at a Glance

Feature What It Does
πŸ“¦ Backup Accounts Full account backups to local or SFTP
πŸ”„ Restore Accounts Full restore or cherry-pick specific parts
πŸ“Š Real-Time Progress Live step-by-step logging during backup/restore
⏰ Schedule Backups Hourly, daily, weekly (pick your day), or monthly (1st of month)
🌐 All Accounts Mode Dynamic schedules that auto-include new accounts
πŸ—‚οΈ Data Management Browse backups by account with size tracking
πŸ”’ Schedule Lock Root can prevent resellers from managing schedules
πŸ—‘οΈ Retention Pruning Auto-delete old backups (local and remote)
πŸ‘οΈ Destination Visibility Root can hide destinations from resellers
πŸ“§ Notifications Email and Slack alerts when things happen
πŸ”₯ Hot DB Backups MariaDB-backup support (no table locks!)
πŸ‘₯ Multi-User Root and resellers, each with their own settings
πŸ›‘οΈ Cron Monitoring Self-checks with alerts if cron goes walkabout
πŸ”Œ JSON API Full REST-style API for automation and scripting
πŸ€– CLI Access Command-line API for Ansible/automation
πŸ“ Audit Logs Filterable by account and action, with per-account runtimes
βš™οΈ 22+ Skip Options Fine-tune exactly what gets backed up
πŸš€ Update Notifications GUI alert when a new version is available
❌ Job Cancellation Cancel running backups gracefully

πŸš€ Quick Start

Step 1: Install

git clone https://github.com/The-Network-Crew/BackBork-KISS-Plugin-for-WHM.git
cd BackBork-KISS-Plugin-for-WHM
./install.sh

Step 2: Configure a Destination (if you haven't already)

Warning

Do this first! BackBork reads destinations from WHM β€” it doesn't create them.

  1. WHM β†’ Backup β†’ Backup Configuration
  2. Scroll to Additional Destinations
  3. Add SFTP (or use Local)
  4. Click Validate βœ…

Step 3: Open BackBork

  • WHM β†’ Backup β†’ BackBork KISS
  • Or: https://your-server:2087/cgi/backbork/index.php

πŸ“Έ Screenshots

πŸ“¦ Backup Tab

Select your accounts, choose a destination, and fire off a backup. The interface shows you exactly what's happening in real-time with step-by-step progress logging β€” from pkgacct execution through to upload completion and cleanup. See the processing indicator (cog icon at the top) spin when the queue is being processed!

BackBork Backups Interface

πŸ”„ Restore Tab

Browse your backup files and restore entire accounts or just the bits you need. Real-time progress logging shows each step of the restore β€” download, verification, database handling, restorepkg execution, and cleanup. No more hunting through directories or wondering what's happening.

BackBork Restores Interface

Before restoration starts, you have to confirm:

BackBork Restores Interface - Confirm Restore

⏰ Schedules Tab

Set up automated backups on your terms β€” hourly, daily, weekly (pick your day), or monthly (runs on the 1st). The cron job handles the rest.

BackBork Schedules Interface

πŸ“‹ Queue Tab

Monitor your backup jobs in real-time. See what's pending, what's running (with live progress bars showing accounts completed), and trigger manual processing when needed. Running jobs can be cancelled β€” they'll finish the current account backup, then stop gracefully.

BackBork Queue Interface

πŸ—‚οΈ Data Tab

Browse backup files by account and delete individual backups when needed. Select a destination, pick an account from the A-Z list (with storage size displayed for each), and manage your backup data.

BackBork Data Interface

πŸ“ Logs Tab

Every backup, restore, and config change is logged with timestamps, users, and IP addresses. Filter by account or action type for easy troubleshooting.

  • Operation Type: Shows backup_local, backup_remote, restore_local, or restore_remote
  • Per-Account Runtime: Each account shows its individual duration (e.g., user1 (45s), user2 (1m 23s))
  • Destination Info: Details include the destination name (local) or hostname (remote)
  • Filtering: Filter logs by specific account or by action type

BackBork Logs Interface

βš™οΈ Config Tab

Tweak your notification settings, database backup methods, and 22+ skip options. Each user (root/resellers) gets their own config.

BackBork Config Interface

Example Notification: Slack

BackBork KISS - Alert - Slack

Example Notification: Email

BackBork KISS - Alert - Email

First, you need to create a Destination

Tip

This is done at WHM > Backup Configuration > Destinations.

There is a hyperlink in BackBork KISS > Configuration that'll take you there.

WHM > Backup Configuration > Destinations

Isn't it convenient how there's a JB up-sell there, and they won't fix Backups...


πŸ“– How to get cracking!

πŸ”Ή Create a Backup

  1. βœ… Select the account(s) you want to back up
  2. πŸ“ Choose your destination (SFTP or local)
  3. πŸš€ Click Backup Selected
  4. πŸ‘€ Watch the real-time progress log showing each step:
    • Destination validation
    • pkgacct execution
    • Database backup (if configured)
    • Upload to destination
    • Cleanup of temp files

πŸ”Ή Restore a Backup

  1. Go to the Restore tab
  2. Pick the destination, account, and backup file
  3. Choose what to restore (full account or specific parts)
  4. Click Restore and watch the real-time progress:
    • Download from remote (if applicable)
    • File verification
    • Database check
    • restorepkg execution
    • Cleanup and notification

πŸ”Ή Schedule Backups

  1. Go to the Schedule tab
  2. Click Add Schedule
  3. Select accounts, destination, and frequency
    • Or enable All Accounts to dynamically include all accessible accounts
  4. Save β€” the cron job handles the rest automatically

Tip

Use different schedules for different account tiers. Back up your VIP customers hourly, regular accounts daily, and dormant sites weekly.

Tip

Enable All Accounts for a schedule that automatically includes newly created accounts without manual updates.


πŸ‘₯ Who can use BackBork KISS?

User Type Access Level
πŸ”΄ Root All accounts, all settings, full control
🟑 Resellers Only their own accounts and settings

Each user gets separate configuration β€” resellers can't peek at root's settings, or another reseller.

Note

Resellers can see and use destinations but cannot create them. Root must configure destinations in WHM Backup Configuration first.

Note

Root can enable Schedule Lock in Global Settings to prevent resellers from creating, editing, or deleting schedules. Existing schedules continue to run.


βš™οΈ Available Config Options

Setting Description
πŸ”’ Schedule Lock (Root only) Prevent resellers from managing schedules
πŸ› Debug Mode (Root only) Verbose logging to PHP error_log
πŸ“§ Email Where to send notification emails
πŸ’¬ Slack Webhook Post alerts to your team's Slack channel
πŸ”” Notify On Start, success, and/or failure events
πŸ—„οΈ Database Method mysqldump, mariadb-backup, or skip databases entirely
πŸ“¦ Compression Compress backups or leave them raw
⏭️ Skip Options 22+ components you can exclude from backups

πŸ“ Where's Everything Stored?

/usr/local/cpanel/3rdparty/backbork/
β”œβ”€β”€ πŸ‘€ users/        β†’ Per-user config files
β”œβ”€β”€ πŸ“… schedules/    β†’ Scheduled backup jobs
β”œβ”€β”€ πŸ“‹ queue/        β†’ Jobs waiting to run
β”œβ”€β”€ πŸƒ running/      β†’ Currently active jobs
β”œβ”€β”€ βœ… completed/    β†’ Finished job records
└── πŸ“ logs/         β†’ Operation audit logs

Important

Your actual backup files go to whatever destination you've configured (local path or SFTP server). The plugin directory only stores job metadata and logs β€” not your backups themselves.


πŸ“‹ System Requirements

What Minimum Notes
WHM 130+ Needs modern WHMAPI1
PHP 8.2+ Uses WHM's bundled PHP
Access Root SSH For installation only
Destination SFTP or Local Must be configured in WHM first
Cron Required Auto-configured by the installer

Caution

Backup destinations must be configured in WHM before using BackBork. The plugin reads existing destinations β€” it can't create them for you.

Note

Cron is essential for scheduled backups and queue processing. The installer sets it up automatically, and the plugin monitors its health. See CRON.md for the nitty-gritty.


πŸ”Œ JSON API Access!

BackBork exposes a full JSON API for automation and scripting. Every action you can do in the GUI, you can do via API.

HTTP (remote access):

# Example: List accounts
curl -k -H "Authorization: whm root:YOUR_API_TOKEN" \
  "https://server:2087/cgi/backbork/api/router.php?action=get_accounts"

# Example: Queue a backup
curl -k -X POST \
  -H "Authorization: whm root:YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"accounts":["myuser"],"destination":"SFTP_Backup","schedule":"once"}' \
  "https://server:2087/cgi/backbork/api/router.php?action=queue_backup"

CLI (local automation):

# No auth needed β€” you're already root
php /usr/local/cpanel/whostmgr/docroot/cgi/backbork/api/router.php --action=get_accounts

# With JSON data
php router.php --action=create_schedule \
  --data='{"all_accounts":true,"destination":"SFTP_Backup","schedule":"daily","retention":30}'
Endpoint What It Does
get_accounts List accessible accounts
get_destinations List configured backup destinations
queue_backup Add accounts to backup queue
create_schedule Create automated backup schedule
get_queue View queue, running jobs, and schedules
get_logs Retrieve audit logs

Tip

See API.md for the complete endpoint reference, request/response formats, and authentication details.


πŸ—‘οΈ Uninstall (sad panda)

./uninstall.sh

Removes plugin files, cron entries, and WHM registration. Your backups stay right where they are β€” we don't touch those.


πŸ“š More Documentation

Resource Description
πŸ”§ TECHNICAL.md Architecture, file structure, and internals
πŸ”Œ API.md Full API reference for automation
πŸ€– ORCH.md Ansible playbooks and orchestration examples
⏰ CRON.md Cron configuration and troubleshooting
πŸ› GitHub Issues Report bugs or request features
πŸ“œ LICENSE Affero GPLv3 (AGPLv3)

☁️ Need Off-Site Storage?

Got BackBork sorted but nowhere to send your backups? Velocity Host runs KISS Cloud Storage β€” purpose-built for blokes like us who want simple, secure, Aussie-hosted backup storage without the Big Tech nonsense.

Why KISS Cloud?
πŸ‡¦πŸ‡Ί Data Sovereignty Your data stays in Australia, governed by local laws
πŸ”’ No Snooping We don't scan your files to train AI or flog you ads
πŸ’° Simple Pricing Per-GB, all-inclusive β€” no PhD required to read your invoice
πŸ›‘οΈ ZFS Integrity Monthly corruption checks on proper enterprise storage

BackBork KISS + KISS Cloud Storage β€” a match made in heaven for your DR strategy.

πŸ‘‰ Check out KISS Cloud Storage


About

(WHM Plugin) Leverage existing tooling to Backup & Restore accounts easily! Free Disaster Recovery Plugin (FOSS)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published