# ─── STEP 1: Create an R2 API Token ───────────────────────────────────────
1. Go to https://dash.cloudflare.com → R2 → "Manage R2 API Tokens"
2. Click "Create API token"
3. Set permissions: Object Read & Write
4. Specify bucket (or leave "All buckets")
5. Copy Access Key ID and Secret Access Key
# ─── STEP 2: Create credentials file on main server ───────────────────────
cat > /root/.r2-credentials << 'EOF'
export AWS_ACCESS_KEY_ID="your-access-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret-access-key"
export R2_ACCOUNT_ID="35e00c230cc8066252a2d9890b69aea2"
export R2_BUCKET_NAME="navitrends-backups"
EOF
chmod 600 /root/.r2-credentials
# ─── STEP 3: Set same vars for the platform (Flask app) ───────────────────
Add to your systemd service or startup script:
Environment="R2_ACCESS_KEY_ID=your-key"
Environment="R2_SECRET_ACCESS_KEY=your-secret"
Environment="R2_BUCKET_NAME=navitrends-backups"
# ─── STEP 4: Install boto3 ────────────────────────────────────────────────
pip install boto3 --break-system-packages
# ─── STEP 5: (Optional) Install AWS CLI for shell-level uploads ───────────
pip install awscli --break-system-packages
aws configure set default.s3.multipart_threshold 64MB