Backups and restore
Internal dumps on the server via Dokku, status and permissions, managed-project limits, and upcoming scheduling / external storage.
Written By Zoro
Last updated 3 days ago
Database backups live on each database service’s Backups tab.
Today dFlow focuses on internal backups: a dump file written on the same server that runs your database (via Dokku). That helps before risky changes or migrations, but it is not a substitute for off-site disaster recovery. If you lose the server, you can lose those files too.
New to databases in dFlow? Start with the Databases overview.
On this page
- Where backups appear in the dashboard
- Internal backup (what happens under the hood)
- Status, restore, and delete
- Scheduled and external backups
- Permissions
- Limitations and legacy projects
Where to work with backups
- Open Applications → your app → Environment.
- Open your database service (the one you created under Add service → Database).
- Open the Backups tab.
The tab title in the UI is Backups, with the short description Create and manage database backups.
Internal backup
Use Create Backup → Internal Backup. The menu describes it as Creates backup within the server.
What happens:
- dFlow creates a backup record with status in progress.
- A queue job on that server connects over SSH and calls dFlow’s Dokku internal export helper, which runs the database plugin’s export and writes a
.dumpfile on disk. - The dump file name uses your service name and a UTC timestamp, for example
my-db-2026-04-08-14-30-00.dump. - When the export exits successfully, the backup record is updated to
success. If the job throws, you should see error output on the server stream; the UI may still showin-progressif the worker does not get a clean failure update. Treat stuck rows as a signal to check server logs and support.
Compute source: creating a backup uses SSH to the self-managed server (servers) linked either from the service’s project or from the environment’s compute, when that compute is a servers relation. If no such server is available, the backup cannot be queued and creation should report failure (a stray in-progress row can still be created if the link is missing; avoid that by always attaching servers compute before relying on backups).
Status, restore, and delete
Each row shows the backup time and a status badge. The dashboard prints the raw values from the API: in-progress, success, or failed.
Restore
Restore enqueues an import job on the server. The worker looks up the backup’s timestamp, rebuilds the same dump filename pattern (serviceName-YYYY-MM-DD-HH-mm-ss.dump), and runs the Dokku internal import helper so the file is streamed back into the live database service.
Treat restore as destructive: it replaces the current database contents with the backup. Coordinate with your team and take a fresh backup first if you are unsure.
Important: in the current implementation, restore (and delete below) resolve SSH access from the service’s project and its linked server. If your database exists only under an environment without that project path, the UI may still offer actions, but the job might not run as expected. Prefer databases attached in the same way as typical Applications services, or confirm behavior in your workspace before relying on restore.
Delete
Deleting a backup enqueues a job that removes the dump file from the server and soft-deletes the backup record in dFlow when the remote command succeeds.
Scheduled and external backups
- Create backup schedule opens Configure backup schedule (daily / weekly / monthly descriptions in the UI). Save schedule is disabled with copy such as Coming soon; scheduling is not active yet.
- External Backup (e.g. cloud object storage) appears in the same menu but is disabled with a Coming soon treatment.
Plan separate tooling or processes for off-site and automated retention until those ship.
Permissions
Rough mapping from the permission config used by server actions:
Limitations and legacy projects
- Legacy managed project type: creating a backup is blocked (the server action throws Not allowed to create backup). Prefer current Applications / environment flows on self-managed compute.
- Internal-only today: dumps stay on the server unless you copy them out yourself.
- Roadmap: scheduled backups and external storage are visible in the UI but not available yet.
For connection strings, Expose, and engine-specific behavior, use the Databases overview and the per-engine guides linked from there.