Pengelola teknis / developer yang memelihara sistem. Admin harian tidak perlu membaca bagian ini. Dokumentasi teknis lengkap ada di repositori: docs/DOKUMENTASI-TEKNIS.md, docs/SERAH-TERIMA.md, docs/BACKUP-RESTORE.md, PANDUAN-PSB.md.
Arsitektur singkat#
- Astro (static) → folder
dist/dilayani sebagai static assets oleh satu Cloudflare Worker (run_worker_first = true). - Worker (
worker/index.js): API SPMB & kritik-saran, panel admin + CMS, webmail,/media/*, pengalihan subdomain, email masuk (email()), cron harian. - D1 (
DB): pendaftar, admin, CMS (draf/terbit/riwayat), email, log. R2 (FILES, disarankan): lampiran, media, isi email. Tanpa R2 file disimpan di D1 (berpotongan 1 MB). - CMS: Terbitkan →
DEPLOY_HOOK_URL→ Workers Builds menjalankannpm run build(prebuildscripts/fetch-content.mjsmengambil/api/cms/export→src/data/content.json) → deploy. Panel memantau/cms-version.json. - Email: Email Routing (catch-all → Worker) untuk masuk; binding
send_email(Email Service) untuk keluar.
Domain & subdomain#
Semua didaftarkan sebagai custom_domain di wrangler.toml; DNS & sertifikat dibuat otomatis saat wrangler deploy (domain harus di akun Cloudflare yang sama).
| Host | Dilayani sebagai |
|---|---|
| yayasan-alikhlasbrebes.com | 301 → www.yayasan-alikhlasbrebes.com |
| www.yayasan-alikhlasbrebes.com | Situs utama; /unit/<u>/… → 301 ke subdomain unit; /webmail → mail.; /docs/… → 301 ke docs. |
| <unit>.yayasan-alikhlasbrebes.com | /<hal> → /unit/<u>/<hal>/; /daftar → /pendaftaran/<u>/ |
| mail.yayasan-alikhlasbrebes.com | Halaman /webmail/ (CSP ketat) |
| docs.yayasan-alikhlasbrebes.com | /<slug>/ → /docs/<slug>/ (noindex) |
www(apex)pptqtpqtktqsdtqsmptqkbihumaildocs
Uji lokal: sdtq.localhost:8787, mail.localhost:8787, docs.localhost:8787 (wrangler dev), atau localhost:8787/docs/.
Secret & variabel#
| Nama | Fungsi |
|---|---|
| ADMIN_PASSWORD | Kunci tanda tangan sesi admin/webmail + password login pertama. Mengganti = semua sesi keluar. |
| DEPLOY_HOOK_URL | Deploy Hook Workers Builds (atau URL dispatch GitHub + DEPLOY_HOOK_TOKEN). Tanpa ini, Terbitkan tidak memicu build. |
| BACKUP_PING_TOKEN | Laporan backup/uji pemulihan dari GitHub Actions ke panel Sistem. |
| MAIL_FROM, MAIL_FROM_NAME, MAIL_REPLY_TO, ADMIN_EMAIL | Pengirim email sistem & penerima notifikasi pendaftar baru (var). |
Atur dengan npx wrangler secret put NAMA dari folder website, pada akun Cloudflare yayasan.
Deploy#
- Manual:
npm run deploy(build + ambil konten CMS terbaru +wrangler deploy). - Otomatis: Workers & Pages →
al-ikhlas-brebes→ Settings → Builds → hubungkan repositori GitHub → buildnpm run build, deploynpx wrangler deploy→ buat Deploy Hook branchmain→ simpan sebagaiDEPLOY_HOOK_URL. - Workflow GitHub Actions (backup harian, uji pemulihan mingguan, deploy) ada di
ci/github-actions/— salin ke.github/workflows/di repositori.
Setiap file di dist/ maks. 25 MiB. Video bawaan (public/videos/tutorial-pendaftaran.mp4, ±6,7 MB) sudah dikompres H.264 + faststart; Worker melayani permintaan Range (206) untuk .mp4 agar bisa diputar di Safari/iPhone.
Email: Routing, DNS, pengiriman#
- Email Routing aktif untuk domain → Catch-all → Send to Worker
al-ikhlas-brebes. - Email Service → onboard domain pengirim (SPF & DKIM ditambahkan otomatis).
- DMARC: TXT
_dmarc→v=DMARC1; p=quarantine; rua=mailto:…(mulai darip=nonebila ragu). - Periksa di panel: menu Email → Pemeriksaan DNS semuanya ✓.
Pemeliharaan#
- Cron harian 02.17 WIB: hapus token kedaluwarsa, kosongkan Sampah/Spam > 30 hari, hitung ulang kuota, bersihkan log > 400 hari.
- Backup 02.23 WIB setiap hari; uji pemulihan Senin 04.41 WIB. Status tampil di panel Sistem.
- Akses developer hanya lewat undangan (Cloudflare member, GitHub collaborator) — tidak memakai password milik yayasan.