Skip to content

Docs Guides

Backups

Encrypted snapshots of volumes, databases and folders to your own S3-compatible bucket.

Backups use restic under the hood. Snapshots are encrypted on your server before upload, deduplicated, and stored in a bucket you own. Backups are part of the Team plan and above.

Add a destination

Any S3-compatible storage works: AWS S3, Backblaze B2, Cloudflare R2, Wasabi, MinIO and others. Add the endpoint and an access key under Backups → Destinations, or from the CLI:

$ fwoop backups destinations add acme-backups --endpoint https://s3.example.com --bucket acme-backups
Access key ID: AKIA…
Secret access key: ••••••••
✓ Wrote and deleted a test object

Use a bucket in a different provider or region from the servers it protects.

Create a backup plan

backups:
  postgres-main:
    source: service:postgres
    target: role=db
    destination: acme-backups/postgres
    schedule: "30 2 * * *"
    keep: { daily: 7, weekly: 4, monthly: 12 }
    verify: weekly
SourceWhat gets backed up
service:<name>A consistent dump if the service is Postgres, MySQL, MariaDB or Redis; otherwise its volumes
volume:<name>A Docker volume
path:/srv/dataA folder on the host, with optional include and exclude patterns

Encryption keys

When you create a plan, Fwoop generates a repository key and asks you to download a copy. It’s stored sealed in your project’s secrets so scheduled runs can use it. Keep your copy somewhere safe: without the key, nobody can read the snapshots, including us.

Verification

After every run, the agent checks the snapshot’s integrity. With verify: weekly (or daily), it also restores the latest snapshot into a temporary container and checks that it can be read. Failures alert the plan’s owner.

Restore

$ fwoop backups snapshots postgres-main
a91f3c2e  today 02:30      2.41 GB  verified
7c02d4b1  yesterday 02:30  2.40 GB  verified
$ fwoop backups restore postgres-main a91f3c2e --to server:db-02

You can restore a whole source, one database, or single files with --path.

Restoring without Fwoop

Snapshots are standard restic repositories. With your key, the restic CLI can list and restore them directly:

$ export RESTIC_REPOSITORY=s3:s3.example.com/acme-backups/postgres
$ export RESTIC_PASSWORD_FILE=./postgres-main.key
$ restic snapshots
$ restic restore a91f3c2e --target ./restore