Deployment
Deploy yellow-bank-soal-docs ke VPS aaPanel dengan Bun + Nginx static site.
Deployment
Target: deploy
yellow-bank-soal-docske VPS aaPanel (klien) sebagai static site. Stack: Bun (untuk build) + Nginx (untuk serve static files via aaPanel). Tidak ada Docker, tidak ada Node.js runtime persistent, tidak ada PM2.
Output bun run build adalah pure static HTML/CSS/JS di .docu/dist/. Setelah build, Nginx langsung serve file tersebut — tidak butuh proses yang jalan terus.
Prasyarat di VPS Klien
Tidak perlu Node.js, tidak perlu PM2, tidak perlu Python.
Step 1: Install Bun di VPS
- Buka aaPanel → sidebar kiri → Terminal
- Jalankan command:
- Reload shell:
- Verifikasi:
Harusnya muncul versi (mis. 1.3.x).
Resource Bun: ~50MB di disk, tidak ada service yang jalan. Bun hanya dipakai saat build, setelah itu idle.
Step 2: Clone Repo Docs
- Di Web Terminal, pindah ke document root aaPanel:
- Clone repo (public, tanpa auth):
Catatan: kalau clone via HTTPS gagal (umumnya karena git butuh konfigurasi), pakai URL SSH dengan port 2222:
Repo public, jadi SSH key tidak wajib.
- Masuk ke folder:
Step 3: Install Dependencies + Patch Flame
Penting: command ini akan otomatis meng-apply patch flame (gesture navigation mermaid) dari folder patches/. Patch ini persistent — terdaftar di package.json → patchedDependencies.
Verifikasi patch ter-apply:
Harusnya muncul angka > 0 (sekitar 4-6).
Step 4: Build Pertama
Tunggu sampai muncul:
Hasil build ada di .docu/dist/. Folder ini yang akan dilayani Nginx.
Verifikasi struktur output:
Harus ada: index.html, 404.html, docs/, assets/.
Step 5: Setup Static Site di aaPanel
5.1 Buat Website Baru
- aaPanel → Website → Add Site
- Isi form:
- Type: PHP Site (atau Static Site — pilih yang ada)
- Domain:
soal-docs.theyellowjacket.id - Root Directory: klik "Browse" → pilih
/www/wwwroot/soal-docs.theyellowjacket.id/.docu/dist - PHP Version: Pure Static (kalau ada opsi) atau apapun (tidak dipakai)
- Database: None
- Klik Submit
⚠️ Penting: Root directory harus mengarah ke
.docu/dist/, bukan ke root repo. Kalau salah, halaman tidak akan muncul.
5.2 (Opsional) Hapus Default Index aaPanel
aaPanel biasanya buat file index.html default di root site. Karena kita pakai .docu/dist/ yang sudah punya index.html, hapus default-nya:
Step 6: Setup SSL (HTTPS)
- aaPanel → Website → klik site
soal-docs.theyellowjacket.id→ Settings - Tab SSL → pilih Let's Encrypt
- Klik Apply
- Tunggu sampai issued (biasanya < 1 menit)
- Centang Force HTTPS untuk redirect HTTP → HTTPS
Setelah ini, akses https://soal-docs.theyellowjacket.id harus muncul landing page docs.
Step 7: Konfigurasi Nginx untuk Routing DocuBook
DocuBook menggunakan URL seperti /docs/konsep/alur (tanpa .html). Nginx perlu di-config untuk auto-append .html ke URL yang tidak punya extension.
- aaPanel → Website → klik site → Settings → Config File
- Cari blok
location /dan tambahkan directivetry_files:
- Save config
- aaPanel akan otomatis reload Nginx
Full example (sesuaikan dengan config aaPanel Anda):
Step 8: Buat Deploy Script untuk Update
Script ini akan dijalankan tiap kali mau update docs.
8.1 Buat File Script
Di Web Terminal:
8.2 Test Script
Jalankan sekali untuk pastikan jalan:
Kalau berakhir dengan === Done at <date> === dan list file .docu/dist/, berarti sukses.
Step 9: Setup aaPanel Cron (Update dengan 1 Klik)
- aaPanel → Cron (sidebar)
- Klik Add Cron
- Isi:
- Task Type: Shell Script
- Task Name:
Update Docs yellow-bank-soal - Execution Cycle: Manual (jangan set waktu — kita trigger manual)
- Script Content:
- Submit
Sekarang tiap mau update docs:
- Buka aaPanel → Cron
- Cari task
Update Docs yellow-bank-soal - Klik tombol Execute (▶️) di sebelah kanan
- Tunggu ~10-15 detik, refresh browser docs → konten baru muncul
Tidak perlu SSH, tidak perlu buka Web Terminal tiap kali.
Verifikasi Deployment
Buka browser, akses:
Troubleshooting
Halaman blank / 404 di semua URL
Kemungkinan: root directory salah atau file index.html tidak ada.
Cek:
Kalau tidak ada, jalankan ulang bun run build di Web Terminal.
Halaman /docs/konsep/alur 404 tapi /docs/konsep/alur.html bisa diakses
Kemungkinan: Nginx try_files belum dikonfigurasi untuk auto-append .html.
Fix: ulangi Step 7, pastikan try_files $uri $uri/ $uri.html /404.html; ada di config.
SSL gagal issue
Kemungkinan: domain belum pointing ke IP VPS, atau port 80 belum terbuka.
Cek:
Build gagal dengan error patch
Kemungkinan: patches/ folder tidak ikut ter-commit ke git, atau bun.lock corrupt.
Fix:
Mermaid gesture (scroll zoom, drag pan) tidak jalan
Kemungkinan: patch flame tidak ter-apply, atau browser cache.
Cek:
Harusnya > 0. Kalau 0, hapus node_modules lalu bun install ulang.
Browser cache: hard refresh Cmd+Shift+R atau Ctrl+Shift+R.
Backup & Maintenance
Backup
Yang penting di-backup cuma source repo (sudah di git). Output build bisa di-regenerate kapan saja.
Update Bun
Sekali per beberapa bulan, update Bun untuk fitur/security:
Disk Space
Cek penggunaan disk:
Total biasanya ~150-200MB (node_modules + build output). Tidak signifikan untuk VPS 16GB.
Security Considerations
Tambahkan ke Nginx config untuk keamanan:
Update Workflow Summary
Sekali setup (Step 1-9): ~30 menit.
Setiap update docs (jarang):
- Commit + push ke
git-ssh.backoffice.biz.id:2222/dwindown/yellow-bank-soal-docs.gitdari lokal - Buka aaPanel klien → Cron → cari task "Update Docs"
- Klik Execute
- Tunggu 10-15 detik
- Refresh browser → konten baru muncul
Tidak perlu SSH, tidak perlu build lokal, tidak perlu upload manual.
Bacaan Lanjut
- Operasional → Instalasi — setup environment lokal untuk development
- Operasional → Konfigurasi — env vars & config
- DocuBook README — upstream documentation
Last updated Jul 26, 2026