10. Multi-Provider Cloud Storage

Ringkasan

Aplikasi dilengkapi dengan adapter pengunggahan berkas terpadu yang mendukung 3 penyedia penyimpanan cloud populer — Cloudflare R2 (Tanpa Biaya Egress), Supabase Object Storage, dan Cloudinary Media CDN — serta Database BLOB Fallback.


Cara Kerja

Administrator menentukan penyedia aktif menggunakan opsi activeStorageProvider. Aplikasi mengalirkan berkas ke penyedia yang dipilih secara dinamis.

mermaid
graph TD
    UploadReq["Permintaan Unggah Berkas"] --> CheckActive["Cek activeStorageProvider"]
    CheckActive -->|cloudflare| R2["Cloudflare R2 S3 API"]
    CheckActive -->|supabase| Supabase["Supabase Storage REST API"]
    CheckActive -->|cloudinary| Cloudinary["Cloudinary Upload API"]
    CheckActive -->|database| LocalDB["Penyimpanan Base64 Database"]

Perbandingan Penyedia

PenyediaPenggunaan TerbaikKredensial Utama
Cloudflare R2Asset volume besar tanpa biaya transfer data (egress)Account ID, Access Key ID, Secret Key, Bucket Name, Public CDN URL
Supabase StorageTerintegrasi dengan ekosistem SupabaseProject URL, Service Role Key, Bucket Name
CloudinaryOptimasi gambar otomatis & media CDN responsifCloud Name, API Key, API Secret
Database StoragePengujian lokal tanpa perlu mendaftar cloudTanpa API key (Simpan langsung ke MySQL)

Penggunaan & Uji Koneksi

  • Masuk ke Settings -> Integrations -> Storage Settings (/settings/integrations).
  • Pilih penyedia aktif pada Active Storage Provider.
  • Masukkan kredensial API key yang dibutuhkan.
  • Klik Test Connection untuk menguji pengunggahan sampel berkas dan memverifikasi koneksi sebelum menyimpan.

  • Berkas Terkait

  • src/server/api/routers/storage.ts — Router tRPC untuk query penyimpanan, pergantian provider, dan uji koneksi
  • src/app/(admin)/settings/integrations/page.tsx — Panel konfigurasi penyimpanan di Admin GUI