# occupymedia.cc deployment secrets — copy to .env on the box, fill every :? value. # NEVER commit the filled .env. # --- Cloudflare (already provisioned; tunnel + DNS + R2 buckets exist) --- CLOUDFLARE_ACCOUNT_ID=e50adafec3c6aee02a328f28b967f699 CLOUDFLARE_TUNNEL_TOKEN= # occupymedia tunnel e5695d8b-… # --- R2 (S3 API token: dashboard → R2 → Manage API Tokens → Object Read & Write, # scoped to the four occupymedia-* buckets) --- R2_ACCESS_KEY= R2_SECRET_KEY= # --- Database --- POSTGRES_PASSWORD= # Runtime-only role provisioned by migration 003. Set its production password # with owner access; never reuse POSTGRES_PASSWORD or the development default. DATABASE_URL=postgres://sp_app:@postgres:5432/occupymedia SCHEDULER_DATABASE_URL=postgres://sp_app:@postgres:5432/occupymedia # SUPER_DATABASE_URL is passed only to the offline migration CLI, never services. PEERTUBE_DB_PASSWORD= # also paste into peertube.env SESSION_SECRET= # --- Client-side envelope encryption for the media archive --- # One random 32-byte base64 key. It wraps EVERY stored blob (DEK/KEK envelope). # Lose it = archive unreadable. Rotate = full re-encrypt. Store in the password manager. S3_KEK= SUPERPOSTER_KEK=