Deploy Dumpling Backup
Verified pg_dump/mysqldump backups into your own S3 bucket. No state.
dumpling-backup
Just deployed
Deploy and Host Dumpling Backup on Railway
Dumpling Backup is a single container that runs pg_dump or mysqldump on a schedule, checks the archive with pg_restore --list while it streams, and uploads it straight into an S3-compatible bucket you own (Cloudflare R2, Amazon S3, Backblaze B2, Wasabi, MinIO). No disk, no state, no UI. If the archive would not restore, the run fails and tells your webhook instead of showing a green tick.
About Hosting Dumpling Backup
Deploy this template into the project that holds your Postgres or MySQL service, then set four variables: the database URL (use ${{Postgres.DATABASE_URL}} so the dump travels over Railway's private network, with no public TCP proxy and no allow-list), the bucket name and the two bucket keys. The container runs one backup at start, then on its cron schedule (02:00 UTC daily by default); set SCHEDULE=once and a Railway cron schedule on the service if you prefer Railway to drive the timing. Retention keeps the newest N files and only ever deletes files the tool wrote; an optional passphrase encrypts every file with OpenSSL-compatible AES-256. The image tag follows the PostgreSQL client major (:16, :17, :18), so pick the one matching your server and your dumps stay restorable with the pg_restore you already have.
Common Use Cases
- Off-platform copies of a Railway Postgres or MySQL database that survive a deleted volume, a redeploy without the volume, or an account problem
- A verified nightly dump for a side project or small SaaS, in a bucket that costs cents a month
- Encrypted long-term retention (90 days, a year) next to Railway's own volume backups
Dependencies for Dumpling Backup Hosting
- A PostgreSQL or MySQL/MariaDB database reachable from the service (a Railway database service in the same project, or any public host)
- An S3-compatible bucket and a key scoped to it with object read, write and delete (delete is only needed for retention)
Implementation Details
Files land at //.dump (Postgres custom format) or .sql.gz (MySQL), with .enc appended when encrypted. Restore with pg_restore --no-owner --no-acl -d yourdb file.dump or gunzip < file.sql.gz | mysql yourdb. Source, README and the full variable reference: https://github.com/siddhujz/dumpling-backup. The same engine runs as a hosted service with run history and missed-run alerts at https://getdumpling.dev/r/railway-template.
Why Deploy Dumpling Backup on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying Dumpling Backup on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Template Content
dumpling-backup
ghcr.io/siddhujz/dumpling-backup:18S3_BUCKET
Name of the S3-compatible bucket the backups are written to (Amazon S3, Cloudflare R2, Backblaze B2, Wasabi, Spaces, Hetzner, MinIO). Files land at <BACKUP_NAME>/.dump inside it.
DATABASE_URL
postgres:// or mysql:// URL of the database to back up. In a project with a Postgres service, use ${{Postgres.DATABASE_URL}} so the backup runs over the private network.
S3_ACCESS_KEY_ID
Access key id for the bucket. Use a key scoped to this bucket with object read, write and delete (delete is only needed for retention).
S3_SECRET_ACCESS_KEY
Secret access key that goes with S3_ACCESS_KEY_ID. Stored only in this service's variables; the backup tool never prints it.
