Open the app
Operations

Backup & recovery

Restic to Cloudflare R2, an hourly/nightly/weekly policy, broad scope, and the rule that an untested backup is not a backup.

Restic backs up the durable state to Cloudflare R2 on an hourly/nightly/weekly cadence — never only on the same VPS.

Scope

  • Convex data
  • SQLite memory
  • procedural memory
  • strategy definitions
  • experiment definitions
  • configuration
  • Parquet research data
  • Grafana dashboards
  • critical logs
  • encrypted secrets (separately)

Policy

Three cadences, each off-box and encrypted — never only on the same VPS:

FrequencyWhat runs
HourlyCritical operational snapshots where safe
NightlyConvex export, SQLite checkpoints, config & strategy definitions → encrypted to R2
WeeklyFull retained backup, automated integrity check, restore drill in isolation

Destination — Cloudflare R2

Backups go off-box to Cloudflare R2 via Restic; encrypted secrets are backed up separately from operational data. The free tier covers early needs:

10 GBFree tier / monththen $0.015 per GB-month
$0Egressfree Internet egress
1M / 10MClass A / B ops freeper month
An untested backup is not a backup
A backup is not considered reliable until it has been restored successfully. The weekly drill restores into an isolated environment and runs an integrity check — recovery is the part that actually matters.