app.sertifikasitrainer.com). Cloudflare juga menyediakan R2 (file storage) dan Hyperdrive (koneksi Postgres ke Neon).
Docs: developers.cloudflare.com
Apa yang dipakai di project ini
| Produk | Fungsi di AI Mentor |
|---|---|
| Workers | API Hono + static web + renderer |
| R2 | Upload dokumen, foto trainer, asset |
| Hyperdrive | Pool koneksi ke Neon Postgres |
| DNS | app., docs., assets. subdomain |
apps/api/wrangler.jsonc, apps/web/wrangler.jsonc
1. Buat API token (deploy & CI)
Buka API Tokens
Dashboard → My Profile → API Tokens → Create Token
Pilih template atau custom
Untuk deploy script, permission minimal:
- Account → Workers Scripts → Edit
- Account → Workers R2 Storage → Edit
- Account → Workers KV → Edit (jika dipakai)
- Account → Hyperdrive → Edit
- Zone → Workers Routes → Edit (custom domain)
Simpan ke env
2. Workers & custom domain
Deploy via./thub deploy atau scripts/deploy-prod.sh:
- Build frontend (
apps/web) - Deploy worker API + web + renderer
- Route
app.sertifikasitrainer.com→ worker
URL production (
FRONTEND_URL, BETTER_AUTH_URL, dll.) sudah di vars pada wrangler.jsonc — bukan secret.3. R2 object storage
R2 kompatibel S3. Project memakai AWS SDK dengan endpoint R2.Buat API token R2
R2 → Manage R2 API Tokens → Create token
Permission: Object Read & Write (scope ke bucket jika perlu)
Permission: Object Read & Write (scope ke bucket jika perlu)
Public access (opsional)
Jika asset harus diakses browser langsung, aktifkan custom domain R2 atau public bucket policy. Docs: R2 public buckets.
4. Hyperdrive (Neon)
Hyperdrive mem-pool koneksi Postgres dari Worker ke Neon.
Docs: Hyperdrive getting started
5. Wrangler CLI lokal
Troubleshooting
| Masalah | Solusi |
|---|---|
| Deploy 403 | Token kurang permission Workers/R2 |
| Upload gagal 413 | Nginx/client body limit — backend cap MAX_FILE_SIZE_MB |
| DB timeout di Worker | Cek Hyperdrive binding + DATABASE_URL Neon pooled |
| Secret tidak ke Worker | ./thub secrets push setelah ./thub env merge --prod |