Backups
Snapshot your control plane data on demand or on a schedule, and download it.
Better-PaaS keeps important state - its database, your admin token, the
encryption key, and logs - in a data/ directory. Backups let you snapshot that
state so you can recover from mistakes or move to a new server.
What gets backed up
A backup is a snapshot of the control plane's data/ directory, which holds:
- The SQLite database (your apps, settings, deploy history)
- Tokens and the encryption key
- Persisted logs
On-demand backups
Go to the Backups screen in the dashboard.
Click Create backup. Better-PaaS snapshots the data/ directory into an
archive.
Download the archive to keep a copy somewhere safe (your laptop, object storage, etc.).
Scheduled backups
The easiest way to automate backups is from the Backups screen: turn on Run backups automatically, set the interval in hours, and choose how many recent backups to keep. Old backups beyond that count are pruned automatically.
You can also set a schedule through the backend environment, which is handy for provisioning a server before the dashboard is up:
# Take a snapshot every 6 hours; keeps the last 10 automatically.
BACKUP_INTERVAL_HOURS=6When set above 0, Better-PaaS auto-snapshots data/ every N hours and retains
the most recent 10 backups, pruning older ones.
Storage options
Backups can also be configured for off-server storage from the Backups screen. Toggle on offsite storage and enter your S3-compatible bucket details (AWS S3, Cloudflare R2, MinIO) - bucket, region, endpoint, and credentials. Each new backup is then uploaded to your bucket, so a snapshot lives somewhere other than the server it's protecting. Use the Test button to confirm your storage credentials work before relying on them.
The same screen also has the automatic backup controls - turn on a schedule, set the interval, and choose how many recent backups to keep.
Restoring
From the dashboard
Go to Backups and find the snapshot you want.
Click Restore on that backup. Better-PaaS takes a new safety backup
first, then replaces the current data/ directory with the snapshot and
restarts the control plane services.
Reload the dashboard after a minute. Your previous data/ folder is kept on
disk as data.pre-restore-… next to the repo if you need to undo manually.
Restoring rolls back control-plane state - apps, settings, deploy history, tokens - to what was in the snapshot. User app containers already running on Docker are not deleted, but the dashboard only knows about apps recorded in the restored database.
From the terminal
To restore a downloaded archive without the dashboard:
sudo systemctl stop better-paas-frontend better-paas-backend
cd ~/better-paas
mv data data.manual-backup-$(date +%Y%m%d)
mkdir data
tar -xzf /path/to/backup-YYYYMMDD-HHMMSS.tar.gz -C data
sudo systemctl start better-paas-backend better-paas-frontendBecause schema migrations are additive and applied on boot, a backup from an older version restores cleanly into a newer one.
Keep at least one off-server copy
A backup that only lives on the same server it protects won't help if that server is lost. Download backups or use off-server storage.