TurboJet
Storage

Hubungkan ke penyimpanan S3

Konfigurasi kredensial kompatibel S3, CORS, dan bucket privat.

Untuk storage, Anda hanya perlu variabel S3_* dan bucket privat. TurboJet berbicara ke provider lewat AWS SDK dengan forcePathStyle: true, jadi endpoint yang kompatibel S3 apa pun bisa dipakai.

Variabel environment

Tambahkan ke .env root (lihat Environment):

.env
S3_ACCESS_KEY_ID="your-access-key"
S3_SECRET_ACCESS_KEY="your-secret-key"
S3_ENDPOINT="https://your-endpoint"
S3_BUCKET="your-bucket"
S3_REGION="auto" # Opsional; default auto di client
# S3_PUBLIC_URL="https://pub-….r2.dev" # Opsional; untuk /api/storage/public
KeyWajibCatatan
S3_ACCESS_KEY_IDYaAccess key provider
S3_SECRET_ACCESS_KEYYaSecret provider
S3_ENDPOINTYaEndpoint API S3
S3_BUCKETYaSatu bucket untuk semua objek
S3_REGIONTidakDefault auto
S3_PUBLIC_URLTidakBase URL publik untuk GET /api/storage/public

Tanpa key wajib, route storage mengembalikan 503 (Storage is not configured).

Satu bucket, path ber-namespace

Tidak ada packages/storage/config.ts dengan banyak nama bucket. Semua masuk ke S3_BUCKET. API menamespace objek sebagai users/{userId}/{uuid}.{ext} agar file terisolasi per pengguna.

Jaga bucket tetap privat

Nonaktifkan akses publik pada bucket. TurboJet menerbitkan URL terpresign berumur pendek untuk unggah dan unduh, dan menegakkan kepemilikan di API. Setel S3_PUBLIC_URL hanya jika Anda sengaja mengekspos objek lewat CDN publik atau URL r2.dev.

CORS

Konfigurasi CORS pada bucket agar browser bisa mengunggah dari origin marketing (NEXT_PUBLIC_MARKETING_URL). Allow list tipikal:

  • Method: PUT, GET, HEAD (plus POST/DELETE jika provider mewajibkannya)
  • Header: sertakan Content-Type
  • Origin: URL marketing produksi dan origin marketing lokal (misalnya http://localhost:3001)

Langkah per provider:

Langkah berikutnya

Setelah env dan CORS siap, ikuti Unggah file untuk menguji API.

Di halaman ini