Encrypted before it leaves our worker
Every backup is compressed and encrypted with age as it streams, to backupd’s key for your workspace and to every key you add. Storage only ever holds ciphertext.
Encryption
Every backup is compressed and encrypted with age before it’s stored. Add your own key to decrypt backups yourself.
Your keys
New backups are encrypted to every key here. Revoking a key only affects future backups.
- Laptop
age1lggyhqrw2nlhcxprm67z43rta597azn8gknawjehu9d9dl0jq3yqqvfafg3f9a1c0be47d2a85Revoke - Ops team vault
age1zvkyg2lqzraa2lnjvqej32nkuu0ues2s82hzrye869xeexvn73equnujwjb81e07d95c42f3a0Revoke
backupd’s key
backupd keeps its own key for this workspace so it can run restores and restore tests. Its secret half is encrypted at rest.
age1qyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqs3290gq- age
- age v1, X25519 keys, opens with stock age.
- AES-256-GCM
- Credentials and bucket keys at rest.
- TLS only
- Connections to your database.
- EU-hosted
- App, workers and sandboxes run in Frankfurt.
Who can open a backup
Each file is encrypted to every key on your workspace at the time it is made: backupd’s own key, so we can run restore tests and restores for you, and each key you add.
Add your own key in Settings → Encryption, made in your browser or pasted as an age1… public key. Revoking a key only affects future backups; files already made stay readable by it.
There is no mode where only you can open a backup. If you need that, say so: it is on our list.
Keys we hold
backupd’s key is unique to your workspace. Its secret half is wrapped with AES-256-GCM under a workspace key, and is only used by our workers to restore and test your backups.
Database credentials and bucket keys are stored encrypted with AES-256-GCM, and handed to the dump tools through environment variables or private option files, never on a command line.
Reaching your database
- Every connection uses TLS. Strings that turn TLS off are refused.
- We resolve your host once and pin the address, and refuse private, loopback and link-local ranges, so a connection string can’t be pointed at our own network.
- Read-only users are enough to back up. Uptime checks only open a connection; they never log in.
app-prod
Checked every 5 minutes from outside your network.
- 99.97%
- 38 ms
- 2 min ago
Uptime
Up every day but one in the last 90 days
Response time
Between 30 and 60 ms all day
Where files live
Backups are kept in backupd Storage, a private bucket only our workers can reach. Download encrypted gives you a link that works for five minutes.
On Pro, copies to your own Amazon S3, Cloudflare R2, Google Cloud Storage, Backblaze B2 or MinIO bucket are made byte for byte. We never decrypt a backup to copy it.
Destinations
Every backup is stored in backupd Storage. Add your own buckets for an extra copy.
- backupd StoragePrimary
- Cloudflare R2In sync
- Amazon S3In sync
- MinIOPaused
Restore tests in a sandbox
A restore test loads your backup into a throwaway database on a network with no internet access and no route to our app, its database or its keys. PostgreSQL and MySQL backups restore as a throwaway user that owns only that database, so code in a dump can’t act as an administrator. The copy is deleted straight after.
Your team
Sign in with a passkey or a password and two-factor codes. New passwords are checked against known breaches. Members have roles, and every action in the workspace, including denied attempts, goes into an audit log nobody can edit, kept for a year.
When backupd support signs in as a member to help, it lasts at most an hour and the audit log shows “backupd support” for everything done.
Members
3 members in Acme.
- Maya SantosOwner
- Alex KimAdmin
- Jordan ReyesMember
Audit log
Who did what in this workspace, including denied attempts. Entries can’t be edited or removed.
- Re-ran a restore test
- Downloaded a backup
- Connected a database
The app and the API
- HTTPS everywhere, with HSTS. Pages can’t be framed by other sites.
- Session cookies are HTTP-only, secure and same-site, and the API refuses writes that come from other sites.
- Every workspace action checks that you are a member, and what your role allows.
- Webhooks, uptime checks and bucket endpoints are refused when they point at private addresses.
Where it runs
The app, its database, the backup workers and the sandboxes run on Oracle Cloud in Frankfurt, Germany. Backups are stored on Backblaze B2 in the region your workspace picks, including EU Central. See GDPR at backupd for sub-processors, retention and your rights.
Report a vulnerability
Found a security problem? Write to [email protected] with the details. We’ll confirm we got it, fix it, and credit you once it’s fixed if you’d like.
Keep a key of your own
Add your key on day one, and every backup after that is yours to open, with or without us.