pgProofGet early access

Guide

Dokploy Postgres backups, done properly

Dokploy has scheduled database backups to S3 built in. Here's the setup, the traps, and the restore test that turns a dump in a bucket into an actual backup.

Setup

  1. Destination: in Dokploy, add an S3 destination (Settings → S3 Destinations). Any S3-compatible store works — Backblaze B2, Cloudflare R2, Wasabi, MinIO. Scope the access key to one bucket.
  2. Schedule: open your Postgres service → Backups → create a backup with a cron expression (0 3 * * * for nightly), the destination, and a retention count.
  3. Trigger one manually and check the object appears in the bucket before trusting the schedule.

The traps

Restore-test it tonight

docker run -d --name drill -e POSTGRES_PASSWORD=drill -p 5499:5432 postgres:16
pg_restore --no-owner -h localhost -p 5499 -U postgres -d postgres latest.dump
psql -h localhost -p 5499 -U postgres -c \
  "SELECT relname, n_live_tup FROM pg_stat_user_tables ORDER BY n_live_tup DESC LIMIT 10;"
docker rm -f drill

Complete methodology with manifest counts and FK validation: the 5-step drill.

The drill, automated, on your own VPS

pgProof's agent is one container beside Dokploy: dumps on schedule, encrypts locally, pushes to your bucket, restore-tests every backup and emails you the proof. Your credentials never leave your server.

Join the early-access waitlist