Skip to content

Cloudflare R2 (Object Storage)

Purpose: Unstructured file storage for archives, exports, backups, and media assets — S3-compatible object storage without egress fees.

URL/Endpoint: https://r2.cloudflarestorage.com (S3-compatible API)

Auth: R2 API keys in Infisical. Use rclone for all transfers — boto3 keys may be stale and return errors. The rclone remote is pre-configured on the host machine.

Key Operations

  • List bucket contents: rclone ls r2:bucket-name
  • Upload files: rclone copy /local/path r2:bucket-name/dest/
  • Download files: rclone copy r2:bucket-name/path /local/dest/
  • Sync a directory: rclone sync /local/dir r2:bucket-name/dir/

Buckets

Bucket Purpose
liflode-archives Long-term backups — Docker volumes, Postgres dumps
liflode-media Brand and content media assets
liflode-exports Data exports and pipeline outputs

Dependencies

  • Infisical (R2 API keys)
  • rclone installed on host (configured with R2 remote)

None specific.

Runbook

Use rclone, not boto3. Uploads are auto-approved; deletions always require Rachel's explicit approval. The DockerVolumeBackup Task Scheduler job runs daily at 1am AEST and syncs Docker volumes and Postgres dumps to liflode-archives.