Backups & Migration
Protect your data with regular backups and learn how to migrate between servers. A solid backup strategy ensures you never lose important data.
While Dublyo makes it easy to deploy and manage apps, your data is your responsibility. Regular backups protect you against hardware failures, accidental deletions, and corrupted updates. This guide covers everything you need to know about backing up your apps and migrating between servers.
Why Back Up?
Data loss can happen for many reasons, and it's usually unexpected. Here are the most common scenarios where backups save the day:
Server Failures
Hardware can fail without warning. Even with cloud providers like Hetzner, disk failures and outages are rare but possible. A backup means you can recover on a new server in minutes.
Data Corruption
A bad update, a buggy plugin, or a misconfigured migration can corrupt your database. Without a backup, recovering from corruption can be impossible.
Migration Needs
You might want to move to a bigger server, switch regions, or consolidate apps. Backups make migration straightforward — export from the old server, import to the new one.
Accidental Deletion
Mistakes happen. Whether it's a dropped database table or a deleted container volume, backups let you undo the damage quickly.
Backup Methods
There are several ways to back up your applications on Dublyo. Choose the method that best fits your needs, or combine multiple approaches for extra safety.
1. Portainer Volume Export
The most comprehensive approach. Portainer lets you export entire container volumes, which include all application data, configuration files, and databases stored within the container.
Open Portainer
Access Portainer from your server's management panel in the Dublyo dashboard.
Navigate to Volumes
Go to Volumes in the sidebar to see all data volumes for your containers.
Export the Volume
Select the volume you want to back up and use the export function to download a tar archive of the data.
2. Application-Specific Tools
Many applications have built-in backup and export tools that create portable, restorable backups. These are often the most reliable option:
- PostgreSQL — Use
pg_dumpto export databases. Run it from within the container via Portainer's console. - WordPress — Use
wp-clior a backup plugin like UpdraftPlus to export your site, database, and media files. - n8n — Use the built-in export feature to download all workflows and credentials as JSON files.
- Ghost — Use the admin panel's Labs section to export all content as a JSON file.
3. Manual File Download via SSH
For advanced users, you can SSH into your server and manually copy files using scp or rsync. This gives you full control over what gets backed up and where it's stored.
scp -r root@your-server-ip:/var/lib/docker/volumes/app_data ./backup/pg_dump. They produce consistent, restorable backups even while the database is running. Backup Schedule
A good backup schedule balances protection against data loss with the effort required to maintain backups. Here's a recommended schedule based on data type:
| Data Type | Frequency | Reason |
|---|---|---|
| Databases | Daily | Databases change frequently and are the hardest to recreate from scratch |
| Application Files | Weekly | Configuration and uploaded files change less often but are still important |
| Before Major Changes | Always | Before server upgrades, app updates, or any significant configuration changes |
Backup Retention
Don't just keep the latest backup — maintain a rotation so you can go back further if needed:
- Keep 7 daily backups — so you can recover from issues discovered up to a week later
- Keep 4 weekly backups — for monthly coverage
- Store backups off-server — download them to your local machine or upload to cloud storage (S3, Google Drive, etc.)
Server Migration
Migrating your apps to a new server is straightforward when you have backups. Follow these steps to move everything with minimal downtime:
Back Up All Apps on Source Server
Create fresh backups of every app on your current server using the methods described above. Make sure to include databases, configuration files, and uploaded media.
Create a New Server
Provision a new server from the Dublyo dashboard. Choose the region and size that fits your needs — this is a great opportunity to upgrade if you've been running low on resources.
Deploy Same Templates on New Server
Deploy the same applications on your new server using the Dublyo template library or GitHub deployments. This creates fresh containers with the right configuration.
Restore Backups to New Deployments
Import your backed-up data into the freshly deployed applications. Use the same tools you used to create the backups (e.g., pg_restore for PostgreSQL, import UI for n8n).
Update DNS if Using Custom Domains
If you have custom domains pointing to your old server, update the DNS A records to point to the new server's IP address. Allow time for DNS propagation (usually 15-60 minutes).
Delete Old Server
Once everything is verified on the new server, delete the old one from the Dublyo dashboard to stop billing. Keep your backups for a few extra days as a safety net.
Restoring from Backup
When you need to restore from a backup, the process depends on the app and backup method you used. Here's the general workflow:
Deploy a Fresh Instance
Deploy a new instance of the application from the Dublyo template library. This gives you a clean container with the correct configuration and dependencies.
Import Backup Data
Use the app's import tools to restore your data. For databases, use pg_restore or mysql import. For apps like n8n, use the built-in import UI. For volume backups, restore via Portainer.
Verify Everything Works
After restoring, thoroughly test the application. Check that all data is present, user accounts work, and the app functions correctly. Don't skip this step.
App-Specific Restore Notes
- PostgreSQL — Use
pg_restoreorpsql < backup.sqlto restore database dumps - WordPress — Import via UpdraftPlus or restore the database and
wp-contentdirectory manually - n8n — Import workflows via the UI or CLI, then update credentials as needed
- Ghost — Import content JSON via the admin panel's Labs section
Need Help?
Can't find what you're looking for? Check the full documentation or reach out.