Backups 101: Protecting Your Self-Hosted Data
Self-hosting means you're responsible for your data. Here's how to set up reliable backups that actually work when you need them.
The #1 Rule of Self-Hosting
If you self-host it, you back it up. There's no SaaS provider keeping copies of your data. Your backups are your safety net.
The 3-2-1 Backup Rule
For self-hosting, this translates to:
1. The live data on your server
2. A local backup on the same server (different disk/volume)
3. A remote backup in cloud storage (S3, R2, Backblaze B2)
What to Back Up
Database
The most critical data. A database backup (dump) captures all your application state — users, content, settings, everything.
Volumes/Files
Uploaded files, media, configuration files. Anything stored on disk outside the database.
Configuration
Environment variables, docker-compose files, Caddyfile, reverse proxy configs. These define how your apps are set up.
Backup Strategies
Scheduled Database Dumps
Run pg_dump or mysqldump on a schedule (daily for most apps, hourly for critical ones). Compress and encrypt the output, then ship it to remote storage.
Volume Snapshots
Use filesystem snapshots or rsync to copy data directories. For Docker volumes, you can use docker cp or mount the volume and tar it.
Application-Level Backups
Some apps (like Nextcloud) have built-in backup tools that handle database + files together. Use these when available.
Automated Backup Schedule
Testing Your Backups
A backup you've never tested is not a backup. Monthly:
1. Download a recent backup
2. Spin up a test environment
3. Restore the backup
4. Verify the data is complete and the app works
TinyPod's Backup System
TinyPod automates backups for every deployed application:
You focus on using your apps. We make sure your data is safe.