TurboJet
Storage

Cloudflare R2

Konfigurasi Cloudflare R2 sebagai bucket kompatibel S3 untuk TurboJet.

Cloudflare R2 adalah object storage kompatibel S3 dengan tanpa biaya egress. Ini provider default yang didokumentasikan di .env.example dan Environment.

1. Buat bucket

Di dashboard Cloudflare → R2 → buat bucket. Biarkan privat (tanpa akses publik). TurboJet memakai URL terpresign untuk unggah dan unduh.

2. Buat API token

Buat token API R2 dengan Object Read & Write pada bucket itu. Salin Access Key ID dan Secret Access Key.

3. Konfigurasi CORS

Pada bucket, setel CORS agar browser bisa mengunggah dari origin marketing:

  • Origin diizinkan: NEXT_PUBLIC_MARKETING_URL (dan URL marketing lokal saat development)
  • Method diizinkan: PUT, GET, HEAD
  • Header diizinkan: sertakan Content-Type

4. Variabel environment

.env
S3_ACCESS_KEY_ID="your-r2-access-key-id"
S3_SECRET_ACCESS_KEY="your-r2-secret-access-key"
S3_ENDPOINT="https://<ACCOUNT_ID>.r2.cloudflarestorage.com"
S3_BUCKET="your-bucket-name"
S3_REGION="auto"
# Opsional — hanya jika Anda butuh GET /api/storage/public
# S3_PUBLIC_URL="https://pub-<hash>.r2.dev"

Ganti <ACCOUNT_ID> dengan ID akun Cloudflare Anda.

5. Uji unggahan

Jalankan app marketing dan panggil alur unggah sambil terautentikasi. Key S3_* yang hilang atau tidak lengkap menghasilkan 503 Storage is not configured.

URL publik (opsional)

Setel S3_PUBLIC_URL hanya jika Anda sengaja mengekspos objek lewat subdomain r2.dev atau domain kustom. Lebih baik URL ter-sign untuk file pengguna privat.

FAQ

Mengapa R2 daripada S3?

Jika Anda menyajikan banyak atau file besar, harga tanpa egress R2 sering lebih murah. Jika Anda sudah di AWS, AWS S3 terintegrasi dengan ekosistem itu.

Apakah akses publik diperlukan?

Tidak. Biarkan bucket privat dan pakai /api/storage/signed.

Terkait

Di halaman ini