Lewati ke konten utama

Storage dan Platform

Custelio memakai PostgreSQL untuk data tenant, Redis untuk komponen runtime, dan object storage S3-compatible untuk berkas. Konfigurasi ini milik platform/operator, bukan pengaturan harian agent.

Tujuan

Data tersimpan di service yang benar, kredensial tidak masuk kontrol versi, dan key/token platform hanya memiliki cakupan minimum yang diperlukan.

Untuk siapa

Platform admin, account owner, dan operator deployment.

Prasyarat

  • Akses environment deployment dan migration runner.
  • Backup PostgreSQL dan object storage tersedia sebelum perubahan produksi.
  • Kredensial nyata disimpan di secret manager; halaman ini hanya memakai placeholder.

Konfigurasi environment

  1. Atur variabel wajib: DATABASE_URL=<postgres-connection-url>, JWT_SECRET=<random-secret-at-least-32-bytes>, JWT_ISSUER=<issuer>, JWT_AUDIENCE=<audience>.
  2. Bila konfigurasi object storage disimpan, sediakan kunci enkripsi yang hanya ada di environment, mis. S3_CONFIG_ENCRYPTION_KEY=<base64-32-byte-key>. Jangan menaruh kredensial storage di artikel, UI embed, atau git.
  3. Jalankan migration secara berurutan sebelum versi API baru. Compose bawaan adalah infrastruktur lokal, bukan deployment produksi yang diperkeras.
  4. Jaga satu sumber kebenaran kredensial: override produksi yang tidak konsisten dapat membuat API tidak bisa terhubung ke database.

Kelola widget key

  1. Owner/admin membuat key widget berskala inbox dari pengaturan akun.
  2. Key mentah hanya tampil sekali saat dibuat; salin ke konfigurasi embed sebagai placeholder <widget-key>.
  3. Rotasi: buat key pengganti, perbarui embed, uji bootstrap, baru cabut key lama.
  4. Widget key bersifat publik dan hanya untuk bootstrap inbox terkait: bukan secret, bukan JWT, bukan token admin. Jangan mengirimnya ke server selain bootstrap; browser tidak boleh memakainya untuk akses lain.

Platform token dan embedded app

  1. Gunakan platform token hanya pada integrasi server-side, dengan scope minimum dan expiry bila tersedia.
  2. Validasi origin, signature, tenant, dan expiry pada embedded app; jangan mempercayai klaim hanya karena halamannya tampak sah.
  3. Contoh integrasi memakai placeholder, bukan kredensial nyata.

Tanda berhasil

API tersambung ke database dan storage yang dimaksud, migration selesai tanpa error, widget bootstrap berhasil memakai key inbox yang tepat, dan key lama berhenti berfungsi setelah dicabut.

Jika terjadi masalah

  • API gagal terhubung database: bandingkan seluruh kredensial URL dengan service PostgreSQL; override yang tidak konsisten membuat stack gagal siap.
  • Berkas gagal dibaca: periksa endpoint/bucket dan kunci enkripsi; pulihkan dari backup bila data hilang.
  • Widget bootstrap ditolak: periksa key, scope inbox, origin, dan apakah key sudah dicabut; buat pengganti, jangan kirim admin token ke browser.

Batasan

Halaman ini tidak menyalin skema endpoint dan tidak menjanjikan Compose produksi yang diperkeras. Widget key publik tetap bisa menyalahgunakan bootstrap inbox tersebut; batasi scope dan rotasi saat embed berubah. Jangan menaruh secret atau PII nyata pada contoh.

Tugas terkait