
Losing customer data is the fastest way to kill a hosting business. One unrecoverable server failure without backups means lost customers, refund demands, and permanent reputation damage. Here is how to prevent that.
Backup Strategy
The 3-2-1 Rule
This is the minimum standard:
- 3 copies of data (original + 2 backups)
- 2 different storage types (local NVMe + remote object storage)
- 1 off-site copy (different datacenter or cloud provider)
Backup Types
Full backups: Complete copy of all data. Large storage requirement. Run weekly.
Incremental backups: Only what changed since last backup. Fast and storage-efficient. Run daily.
Snapshot backups: Point-in-time copy of a filesystem or disk, where your platform supports it. Take one before risky operations.
Automated Backup Implementation
For Game Servers (Pterodactyl)
Pterodactyl's own backups are scheduled in the panel's Schedules tab, not with cron jobs you write yourself:
- Give each server a Backup Limit, for example 3 backups per server. You set it in the admin area under Application Feature Limits, when you create the server or later in its Build Configuration. With a limit of 0, no backups can be made at all, scheduled ones included.
- In the server's Schedules tab, create a schedule with the cron-style fields Minute, Hour, Day of month, Month and Day of week. Minute
0, Hour4and*in the other three runs it every day at 04:00. Then add a task with the action Create backup; its optional Ignored Files field excludes files, and by default the server's.pteroignorefile is used. - Retention comes from the Backup Limit. When a scheduled backup runs and the server is at its limit, the panel first deletes the oldest backup that is not locked. Lock a backup in the Backups tab to keep it out of that rotation. The panel has no separate rule such as "keep 7 daily, 4 weekly".
Behind the tab, the panel's own cron line (* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1) checks the schedules every minute, and the queue worker (pteroq) sends each due task to the node. Both are part of the panel install, not something you add per server.
By default the panel stores backups locally through Wings, in /var/lib/pterodactyl/backups on the same node as the server, so a lost node takes its backups with it. For the off-site copy, switch the panel to S3 or S3-compatible storage with APP_BACKUP_DRIVER=s3 and the AWS_* settings in its .env, as the docs describe.
The server backups do not cover the panel itself. Our Pterodactyl backup guide lists what else to save: the panel database, APP_KEY, each node's config.yml and the server databases.
For VPS/Server-Level Backups
Use a backup tool like restic or borgbackup:
# Once: create the repository (restic asks for a password; lose it and the data is lost)
restic -r /backup/repository init
# Daily backup with restic
restic -r /backup/repository backup /var/lib/pterodactyl/volumes/ --exclude-caches
# Prune old backups (keep 7 daily, 4 weekly, 6 monthly)
restic -r /backup/repository forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
/var/lib/pterodactyl/volumes is the default server file directory on a Wings node. To run these from cron or a systemd timer, give restic the password with --password-file or the RESTIC_PASSWORD_FILE variable. A repository on the same disk only protects against deletion: for the off-site copy, point -r at an SFTP server or S3-compatible storage, which restic supports as well. Game servers keep writing their files while they run, so copy them when they are quiet, or rely on the panel's backups for the game data.
Off-Site Storage
Store backups in a different location:
- Backblaze B2: S3-compatible object storage from $6.95 per TB per month (pay as you go), with free egress up to three times your average monthly storage (pricing page, checked 31 October 2026)
- Wasabi: S3-compatible storage from $7.99 per TB per month (pay as you go) with no fees for egress or API requests, but a 90-day minimum storage duration and a minimum monthly charge tied to 1 TB of active storage (pricing page, checked 31 October 2026)
- Second VPS in different datacenter: rsync or rclone
Disaster Recovery Plan
Scenarios to Plan For
- Single server failure: Hardware issue on one node
- Data corruption: Filesystem or database corruption
- Accidental deletion: You or a customer deletes critical files
- Security breach: Ransomware or unauthorized access
- Complete datacenter failure: Extremely rare but plan for it
Recovery Procedures
Document step-by-step procedures for each scenario:
Single Server Recovery
- Identify the failure
- Provision replacement hardware/VPS
- Restore from most recent backup
- Update DNS/connection details if needed
- Notify affected customers
Data Corruption Recovery
- Stop the affected service immediately
- Identify the scope of corruption
- Restore specific files or full backup to a clean environment
- Verify data integrity before bringing service back online
Recovery Time Objectives
Define how fast you need to recover, for example:
- Game servers: 1-4 hours (customers notice quickly)
- Billing/panel: 2-8 hours (less time-critical but important)
- Website: 4-12 hours (visible but not operationally critical)
Testing Backups
Backups that have never been tested are not backups. Schedule quarterly restore tests:
- Pick a random backup from last month
- Restore it to a test environment
- Verify the data is complete and functional
- Document the process and any issues found
Communication During Disasters
Have a communication plan ready:
- Status page updated immediately
- Discord announcement within 15 minutes
- Email to affected customers within 1 hour
- Post-mortem analysis shared within 48 hours
Customers forgive downtime if you communicate honestly and recover quickly. They don't forgive silence and data loss.
Cost of Not Having Backups
Calculate the real cost:
- Customer refunds for data loss
- Lost recurring revenue from customers who leave
- Reputation damage (negative reviews)
- Time spent on damage control instead of growing
Compare that to the cost of off-site backup storage: at Backblaze B2's listed $6.95 per TB per month, 500 GB of backups costs under $3.50 a month, and the first 10 GB are free (checked 31 October 2026).
Invest in backups before you need them. The day you need a backup and don't have one is the day your hosting business faces an existential crisis.
Sources
All opened on 31 October 2026:
- Pterodactyl docs: Getting Started (cron job), Additional Configuration: Backups, API reference: Create schedule, Create task
- Panel 1.15.2 source: routes.ts (Schedules and Backups tabs), schedule form, task form, RunTaskJob.php, ProcessScheduleService.php, InitiateBackupService.php, Kernel.php, Build Configuration, new server form, backup menu, backups.php
- Wings 1.13.4 source: config.go
- restic docs: Preparing a new repository, Backing up, Removing backup snapshots
- Backblaze: B2 pricing
- Wasabi: pricing, home page (S3-compatible)