From ae03c365b5d99b7eb5e06d96d26b53a965111638 Mon Sep 17 00:00:00 2001 From: oxpoe Date: Fri, 9 Oct 2026 06:07:26 +0700 Subject: [PATCH] Wiki OPEN-ISP: 13 halaman dokumentasi (instalasi, konfigurasi, panduan admin, OLT/TR-069, WhatsApp, pembayaran, keamanan, backup, FAQ, troubleshooting, donasi) --- Backup-dan-Update.md | 38 +++++++++++++++++++ Donasi-dan-Kredit.md | 31 ++++++++++++++++ FAQ.md | 30 +++++++++++++++ Home.md | 37 ++++++++++++++++++- Instalasi.md | 79 ++++++++++++++++++++++++++++++++++++++++ Keamanan.md | 24 ++++++++++++ Konfigurasi.md | 75 ++++++++++++++++++++++++++++++++++++++ OLT-dan-TR069.md | 37 +++++++++++++++++++ Panduan-Admin.md | 50 +++++++++++++++++++++++++ Pembayaran-dan-QRIS.md | 35 ++++++++++++++++++ Portal-dan-Peran.md | 33 +++++++++++++++++ Troubleshooting.md | 47 ++++++++++++++++++++++++ WhatsApp-dan-Telegram.md | 30 +++++++++++++++ 13 files changed, 545 insertions(+), 1 deletion(-) create mode 100644 Backup-dan-Update.md create mode 100644 Donasi-dan-Kredit.md create mode 100644 FAQ.md create mode 100644 Instalasi.md create mode 100644 Keamanan.md create mode 100644 Konfigurasi.md create mode 100644 OLT-dan-TR069.md create mode 100644 Panduan-Admin.md create mode 100644 Pembayaran-dan-QRIS.md create mode 100644 Portal-dan-Peran.md create mode 100644 Troubleshooting.md create mode 100644 WhatsApp-dan-Telegram.md diff --git a/Backup-dan-Update.md b/Backup-dan-Update.md new file mode 100644 index 0000000..48323c8 --- /dev/null +++ b/Backup-dan-Update.md @@ -0,0 +1,38 @@ +# Backup & Update + +## Backup database + +- Dari panel admin: **Backup & Restore** (SQLite `billing.db`). +- Manual: salin `database/billing.db` (sertakan `-wal`/`-shm` bila ada). +- File unggahan pelanggan ada di `uploads/` — sertakan bila perlu. + +## Restore + +- Hentikan aplikasi → ganti `database/billing.db` → jalankan ulang. + +## Update aplikasi + +**Docker:** +```bash +cd open-isp +git pull +docker compose up -d --build +``` + +**Manual / PM2:** +```bash +cd open-isp +git pull +npm ci --omit=dev +pm2 restart open-isp +``` + +Tersedia juga halaman **Update GitHub** di panel admin. + +## Checklist pasca-update + +- Cek `/health` dan halaman admin. +- Pastikan migrasi kolom baru jalan (restart bila perlu). +- Uji kirim notifikasi WhatsApp & tes koneksi MikroTik. + +> Selanjutnya: [[FAQ]]. diff --git a/Donasi-dan-Kredit.md b/Donasi-dan-Kredit.md new file mode 100644 index 0000000..a10af21 --- /dev/null +++ b/Donasi-dan-Kredit.md @@ -0,0 +1,31 @@ +# Donasi & Kredit + +## Terima kasih + +Proyek ini berdiri di atas karya orang lain — **terima kasih banyak kepada Alijaya Net** yang telah membuat base kode dan repo yang bermanfaat. + +### Dukung Alijaya Net + +- Halaman donasi: https://app.alijaya.com/donasi +- WhatsApp: https://wa.me/6281947215703 (`0819-4721-5703`) + +### Dukung OPEN-ISP + +Dukungan untuk **pengembangan OPEN-ISP** (agar makin canggih): link donasi **menyusul** — sementara ini bisa lewat menu **Dukung OPEN-ISP** di aplikasi. + +## Lisensi + +**ISC** — bebas digunakan, dimodifikasi, dan didistribusikan ulang (sertakan lisensi). Lihat berkas `LICENSE`. + +## Add-on / pihak ketiga + +- GoWA (WhatsApp gateway) +- LibreSpeed & OpenSpeedTest (speed test) +- Uptime Kuma (monitoring, opsional) +- notification-forwarder + +## Pengembangan + +Dikembangkan oleh [oxpoe](https://github.com/oxpoe) — **code by DeepSeek V4.1 Flash — max, on opencode**. + +> Kembali ke [[Home]]. diff --git a/FAQ.md b/FAQ.md new file mode 100644 index 0000000..b77e469 --- /dev/null +++ b/FAQ.md @@ -0,0 +1,30 @@ +# FAQ + +**Apakah OPEN-ISP gratis?** +Ya. Lisensi **ISC** — bebas digunakan, dimodifikasi, dan didistribusikan ulang. + +**Bagaimana membuka menu yang terkunci?** +Masukkan **kode aktivasi** di halaman *Pengaturan Sidebar*. Kode bersifat gratis dan diatur oleh pemilik instalasi (`activation_code` di `settings.json`) — tidak dipublikasikan di repo. Lihat [[Konfigurasi#Aktivasi menu]]. + +**Kenapa kode aktivasi tidak ada di GitHub?** +Itu kebijakan proyek: kode tidak dibeberkan di repositori. Setiap instalasi mengaturnya sendiri. + +**Bisakah tanpa server GenieACS?** +Bisa — gunakan **ACS bawaan** (`use_builtin_acs: true`). + +**Apakah mendukung MikroTik RouterOS 7?** +Ya, termasuk API TLS port 8729. + +**OLT apa saja yang didukung?** +Hioso & HSGQ (SNMP), ZTE & Huawei (CLI/Telnet). Gunakan `scripts/olt-probe.js` untuk vendor lain. + +**Bagaimana ganti logo/nama perusahaan?** +Via `settings.json` (`company_header`, `company_logo`, `logo_portal`) atau panel admin. + +**Notifikasi WhatsApp tidak terkirim?** +Cek koneksi gateway (GoWA/Baileys), status perangkat, dan nomor tujuan. Lihat [[Troubleshooting]]. + +**Bagaimana mengubah bahasa?** +Switch ID/EN di UI (ada juga `?lang=en` dan `/lang/:lang`). + +> Selanjutnya: [[Troubleshooting]]. diff --git a/Home.md b/Home.md index 21df7cd..e6feea6 100644 --- a/Home.md +++ b/Home.md @@ -1 +1,36 @@ -Welcome to the open-isp wiki! +# OPEN-ISP — Wiki + +**OPEN-ISP** adalah sistem **billing & manajemen ISP (fiber optic)** open source, self-hosted, berlisensi **ISC**. + +> **Repositori:** https://github.com/oxpoe/open-isp · **Issues:** https://github.com/oxpoe/open-isp/issues +> **Dokumentasi teknis (repo):** https://github.com/oxpoe/open-isp/tree/main/docs + +## Daftar Isi + +| Halaman | Isi | +|---|---| +| [[Instalasi]] | Docker, manual, PM2, data demo, update | +| [[Konfigurasi]] | `settings.json`, MikroTik, OLT, ACS, WhatsApp, pembayaran, aktivasi menu, branding | +| [[Panduan Admin]] | Paket, pelanggan, tagihan, isolir, voucher hotspot, laporan | +| [[Portal dan Peran]] | Admin, kasir, teknisi, kolektor, pelanggan (PWA) | +| [[OLT dan TR-069]] | Multi-vendor OLT (SNMP/CLI), ONU, ACS/GenieACS | +| [[WhatsApp dan Telegram]] | Bot, pengingat otomatis, struk, broadcast | +| [[Pembayaran dan QRIS]] | QRIS statis, webhook, kode unik, gateway | +| [[Keamanan]] | CSRF, rate limit, sesi, praktik aman | +| [[Backup dan Update]] | Backup/restore DB, update aplikasi | +| [[FAQ]] | Pertanyaan yang sering muncul | +| [[Troubleshooting]] | Masalah umum & solusinya | +| [[Donasi dan Kredit]] | Dukungan & kredit proyek | + +## Sekilas + +- **Antarmuka:** bilingual Indonesia / English (bisa diganti dari UI). +- **Teknologi:** Node.js ≥ 20 (disarankan 22) · Express + EJS · SQLite (`better-sqlite3`) · Bootstrap 5 + Bootstrap Icons (vendor lokal) · PWA. +- **Portal:** Admin · Kasir · Teknisi · Kolektor · **Pelanggan (PWA)**. +- **Jaringan:** MikroTik (PPPoE & hotspot, multi-router), OLT PON multi-vendor, TR-069 (ACS bawaan + GenieACS), RADIUS (PAP/CHAP). +- **Notifikasi:** WhatsApp (gateway GoWA atau bot Baileys) & Telegram. +- **Pembayaran:** QRIS statis + webhook, kode unik, bukti transfer, gateway opsional. + +## Kode Aktivasi + +Beberapa menu lanjutan terkunci secara bawaan dan dibuka dengan **kode aktivasi**. Kode bersifat **gratis** (tanpa donasi) dan **tidak dipublikasikan di repositori** — setiap pemilik instalasi mengaturnya di `settings.json` (kunci `activation_code`) dan membagikannya lewat kanalnya sendiri. Lihat [[Konfigurasi#Aktivasi menu]]. diff --git a/Instalasi.md b/Instalasi.md new file mode 100644 index 0000000..6e93f6a --- /dev/null +++ b/Instalasi.md @@ -0,0 +1,79 @@ +# Instalasi + +## Prasyarat + +- **Node.js ≥ 20** (disarankan 22 LTS) + npm +- Git +- (Opsional) Docker + Docker Compose +- Akses jaringan ke MikroTik / OLT / ACS bila fitur terkait dipakai + +## Cara 1 — Docker (disarankan) + +```bash +git clone https://github.com/oxpoe/open-isp.git +cd open-isp +docker compose up -d +``` + +Buka **http://localhost:3001**. Login awal: `admin` / `demo-isp123` — **segera ganti password**. + +Data tersimpan di volume `docker-data/`: + +``` +docker-data/ +├── settings.json # konfigurasi (JANGAN di-commit) +├── database/ # billing.db (SQLite) +├── logs/ +├── uploads/ # bukti bayar, QRIS, tiket +└── baileys/ # sesi bot WhatsApp (bila pakai Baileys) +``` + +## Cara 2 — Manual + +```bash +git clone https://github.com/oxpoe/open-isp.git +cd open-isp +npm ci --omit=dev +cp env-example.txt .env # opsional: isi MY_WEBHOOK_SECRET +npm start # entry point: app-customer.js +``` + +Mode pengembangan (auto-restart): `npm run dev`. + +## PM2 (daemon) + +```bash +npm install -g pm2 +pm2 start app-customer.js --name open-isp +pm2 save +pm2 startup # ikuti instruksi agar autostart saat boot +``` + +## Data demo (opsional, untuk uji coba) + +```bash +node scripts/seed-demo.js +``` + +Menambahkan paket, area, 12 pelanggan contoh, tagihan, dan tiket. +Login pelanggan demo: **`081200000001`** / `demo-isp123`. + +## Akses Portal + +Port mengikuti `server_port` di `settings.json` (default **3001**). + +| Portal | URL | +|---|---| +| Pelanggan | `http://SERVER:3001/customer/login` (alias `/login`) | +| Admin | `http://SERVER:3001/admin/login` | +| Teknisi | `http://SERVER:3001/tech/login` | +| Kolektor | `http://SERVER:3001/collector/login` | +| Health | `http://SERVER:3001/health` | + +## Update Aplikasi + +- **Docker:** `git pull` lalu `docker compose up -d --build`. +- **Manual/PM2:** `git pull` lalu `pm2 restart open-isp`. +- Tersedia juga halaman **Update GitHub** di panel admin (menjalankan update + restart). + +> Selanjutnya: [[Konfigurasi]]. diff --git a/Keamanan.md b/Keamanan.md new file mode 100644 index 0000000..3a37512 --- /dev/null +++ b/Keamanan.md @@ -0,0 +1,24 @@ +# Keamanan + +## Praktik wajib saat produksi + +- Ganti **`session_secret`** dengan nilai acak panjang. +- Ganti **password admin default** (`admin` / `demo-isp123`). +- Jangan pernah meng-commit `settings.json`, `.env`, `database/`, `logs/`, `uploads/`, `baileys/`. +- Pakai HTTPS (reverse proxy seperti Nginx/Caddy) + `trust_proxy` bila di belakang proxy. +- Batasi akses berkas konfigurasi di server (permission & firewall). + +## Proteksi bawaan + +- **CSRF** pada form mutasi. +- **Rate limit** pada endpoint sensitif (login, webhook, dsb.). +- **Guard** per peran (admin/kasir/teknisi/kolektor/pelanggan). +- Validasi input & query **parameterized** (anti SQLi). +- Perlindungan **path traversal** pada akses berkas. +- **Escaping** output EJS (anti XSS). + +## Kode aktivasi + +Kode aktivasi bersifat **bukan batas keamanan** — hanya kontrol visibilitas menu. Simpan hanya **hash** (sha256) bila ingin validasi, dan atur kode teks di `settings.json` (tidak dipublikasikan). + +> Selanjutnya: [[Backup dan Update]]. diff --git a/Konfigurasi.md b/Konfigurasi.md new file mode 100644 index 0000000..53f8713 --- /dev/null +++ b/Konfigurasi.md @@ -0,0 +1,75 @@ +# Konfigurasi + +Semua pengaturan utama berada di **`settings.json`** (root proyek atau volume `docker-data/`). Sebagian bisa diubah dari panel admin; sebagian hanya di berkas. + +> **Penting:** `settings.json`, `.env`, dan `database/` **tidak boleh** di-commit ke Git (sudah masuk `.gitignore` & `.dockerignore`). + +## Umum & Branding + +| Kunci | Keterangan | +|---|---| +| `company_header` / `company_name` | Nama perusahaan (tampil di UI, invoice, WhatsApp) | +| `company_logo`, `logo_portal`, `logo_invoice` | Logo (path/URL) | +| `project_url` | URL repositori proyek (dipakai di halaman landing/about) | +| `app_url` | URL publik aplikasi (dipakai untuk link pada notifikasi/QRIS) | +| `server_port`, `server_host` | Port & host server | +| `default_lang` | Bahasa default (`id` / `en`) | +| `timezone` | Zona waktu (mis. `Asia/Jakarta`) | +| `session_secret` | Rahasia sesi — **ganti** dengan nilai acak | + +## Aktivasi menu + +Menu lanjutan bisa dikunci. Untuk membukanya dipakai **kode aktivasi**: + +- Kode **tidak dipublikasikan** di repo. Atur di `settings.json`: + - `activation_code` — kode dalam bentuk teks (dipakai pada alur donasi/layanan untuk menampilkan & mengirim kode). + - `feature_password_hash` — sha256 kode untuk validasi (opsional; default ada). +- Contoh menghasilkan hash: + ```bash + node -e "console.log(require('crypto').createHash('sha256').update('KODE-ANDA').digest('hex'))" + ``` +- `feature_contact_phone` — nomor kontak yang ditampilkan pada menu terkunci. + +Pada halaman **Dukung OPEN-ISP** (`/donate`) kode ditampilkan dari `activation_code` (bila diatur). + +## MikroTik + +- Multi-router: daftar router, tes koneksi, setup firewall, pemilihan router per pelanggan. +- API standar port **8728**; dukungan **TLS/API-SSL port 8729** (self-signed diperbolehkan). +- RouterOS 7 didukung (client API kompatibel). +- Profil PPPoE/hotspot, sesi aktif, monitor trafik, jam kalong, FUP, voucher hotspot, backup konfigurasi. + +## OLT (PON) + +- Mendukung **Hioso & HSGQ** (SNMP) serta **ZTE & Huawei** (CLI/Telnet). +- Isi host, community SNMP, port, merek, kredensial web/Telnet. +- Aksi ONU: statistik, reboot, rename, otorisasi, konfigurasi WAN/OMCI. +- Deteksi OLT baru: `node scripts/olt-probe.js`. + +## TR-069 (ACS bawaan & GenieACS) + +- **ACS bawaan** (tanpa server terpisah): set `use_builtin_acs: true`. Arahkan CPE ke `http://IP-SERVER:PORT/acs`. +- Integrasi **GenieACS** eksternal juga didukung (REST API). + +## WhatsApp & Telegram + +- **WhatsApp:** pilih gateway **GoWA** atau **Baileys** (bawaan). Isi kredensial gateway sesuai pilihan. +- **Telegram:** aktifkan bot & isi `telegram_bot_token`, `telegram_admin_id`. +- Template pesan (tagihan, pengingat, struk) bisa diatur dari panel admin. + +## Pembayaran + +- **QRIS statis** + kode unik untuk pencocokan otomatis. +- **Webhook generik:** `POST /api/webhook/v1/payment-notif` dengan header/secret `MY_WEBHOOK_SECRET` (di `.env`). +- Gateway opsional: Midtrans / Tripay / Xendit / Duitku (sesuai konfigurasi). + +## Speed Test + +- Mode **internal** (server sendiri) atau **eksternal** (preset provider diatur admin). +- Tampilan **embed/tab**; tersedia tombol **Muat Ulang** & **Bersihkan Cache** di portal pelanggan. + +## Email/SMTP (opsional) + +Untuk notifikasi email (bila diaktifkan): isi host, port, user, password SMTP. + +> Selanjutnya: [[Panduan Admin]]. diff --git a/OLT-dan-TR069.md b/OLT-dan-TR069.md new file mode 100644 index 0000000..ff6083a --- /dev/null +++ b/OLT-dan-TR069.md @@ -0,0 +1,37 @@ +# OLT & TR-069 + +## OLT PON multi-vendor + +| Vendor | Metode | +|---|---| +| **Hioso** | SNMP (+ fallback Telnet) | +| **HSGQ** | SNMP | +| **ZTE** | CLI/Telnet (opsional API via go-api) | +| **Huawei** | CLI/Telnet | + +Fitur: statistik ONU per port, **reboot/rename/otorisasi ONU**, konfigurasi **WAN/OMCI**, metrik OLT (suhu/CPU/RAM/uptime), format SN/MAC dengan titik dua. + +### Deteksi OLT baru + +```bash +node scripts/olt-probe.js +``` + +Tool **read-only** (multi-vendor) untuk mengidentifikasi OLT sebelum diintegrasikan. + +## TR-069 / ACS + +### ACS bawaan (tanpa server terpisah) + +Aktifkan `use_builtin_acs: true`, lalu arahkan CPE/ONU ke: + +- **ACS URL:** `http://IP-SERVER:PORT/acs` +- **Periodic Inform:** Enable (interval 300–600 detik disarankan) + +Mendukung monitoring redaman (RX Power), ganti SSID/password WiFi, reboot, provision WAN — berbagai brand (ZTE, Huawei, FiberHome, VSOL, C-Data, dll). + +### GenieACS eksternal + +Integrasi REST API GenieACS juga didukung untuk daftar perangkat, ubah SSID/password, reboot, operasi massal. + +> Selanjutnya: [[WhatsApp dan Telegram]]. diff --git a/Panduan-Admin.md b/Panduan-Admin.md new file mode 100644 index 0000000..3049254 --- /dev/null +++ b/Panduan-Admin.md @@ -0,0 +1,50 @@ +# Panduan Admin + +## Data dasar + +1. **Area** — wilayah kerja (untuk penugasan teknisi/kolektor). +2. **Paket layanan** — harga, kecepatan, deskripsi, opsi **jam kalong** (profil malam), opsi **FUP** (batas GB + profil turun kecepatan), promo & prorata. +3. **ODP** — titik distribusi dengan koordinat (tampil di peta). +4. **Router** — daftar MikroTik + tes koneksi. + +## Pelanggan + +- Tambah/edit pelanggan: paket, PPPoE, ODP, koordinat, hari isolir, tag GenieACS, tipe koneksi. +- **Ekspor/Impor** pelanggan (Excel/CSV). +- **Bulk tools**: operasi banyak pelanggan sekaligus, termasuk **hapus massal** (dengan konfirmasi). +- **Isolir / buka isolir** manual (tersinkron ke MikroTik). + +## Billing + +- **Generate tagihan** per pelanggan atau **massal** (otomatis setiap tanggal 1 jam 00:01). +- Status lunas/belum bayar, cetak invoice, **void/unpay** bila perlu. +- **Bayar tunggal / massal** dari panel; notifikasi WhatsApp terkirim saat invoice ditandai lunas. +- **Promo & prorata**: harga promo N siklus pertama; prorata invoice pertama sesuai tanggal pasang. +- **Kode unik / QRIS**: penugasan & pencocokan pembayaran otomatis. + +## Otomatisasi (cron) + +| Waktu | Tugas | +|---|---| +| Tgl 1, 00:01 | Generate tagihan bulanan | +| Setiap hari 02:00 | Isolir otomatis pelanggan lewat jatuh tempo | +| 09:00 | Pengingat tagihan via WhatsApp | +| 00:00 & 06:00 | Jam kalong (profil malam/siang) | +| Setiap 10 menit | Sinkron pemakaian PPPoE | +| Setiap jam | Pengecekan FUP | + +## Voucher hotspot + +Buat template voucher → generate **batch** → sinkron ke MikroTik → cetak → export CSV. + +## Laporan & Monitoring + +- Laporan keuangan/agregasi, dashboard ringkasan. +- **Monitoring** sistem (CPU, RAM, disk, konektivitas layanan). +- **Audit log** aktivitas sensitif. + +## Pengaturan Sidebar (menu terkunci) + +Halaman **Pengaturan Sidebar** mengatur status tiap menu: **Tampil / Sembunyikan / Kunci**. Perubahan disimpan dengan memasukkan **kode aktivasi** (lihat [[Konfigurasi#Aktivasi menu]]). + +> Selanjutnya: [[Portal dan Peran]]. diff --git a/Pembayaran-dan-QRIS.md b/Pembayaran-dan-QRIS.md new file mode 100644 index 0000000..83622f2 --- /dev/null +++ b/Pembayaran-dan-QRIS.md @@ -0,0 +1,35 @@ +# Pembayaran & QRIS + +## QRIS statis + kode unik + +- Aplikasi membuat **nominal unik** per tagihan agar pembayaran mudah dicocokkan otomatis. +- Invoice yang belum dibayar dapat menampilkan QRIS (statis) + nominal unik. + +## Webhook notifikasi pembayaran + +Endpoint generik untuk notifikasi teks bank/e-wallet: + +``` +POST /api/webhook/v1/payment-notif +``` + +- Amankan dengan `MY_WEBHOOK_SECRET` di `.env`. +- Bila nominal cocok dengan tagihan unik → otomatis ditandai **lunas**. + +## Gateway opsional + +Integrasi pembayaran online (aktif/nonaktif via `settings.json`): + +- Midtrans · Tripay · Xendit · Duitku + +## Bukti transfer manual + +- Pelanggan dapat mengunggah bukti transfer; admin memverifikasi dari panel. + +## Alur pelanggan + +1. Buka portal pelanggan / halaman isolir → lihat tagihan. +2. Pilih bayar → QRIS/gateway/bukti transfer. +3. Sistem mencocokkan → invoice lunas → notifikasi WhatsApp. + +> Selanjutnya: [[Keamanan]]. diff --git a/Portal-dan-Peran.md b/Portal-dan-Peran.md new file mode 100644 index 0000000..619a5e4 --- /dev/null +++ b/Portal-dan-Peran.md @@ -0,0 +1,33 @@ +# Portal & Peran + +| Peran | Portal | Fokus | +|---|---|---| +| **Admin / Super Admin** | `/admin` | Semua operasional, pengaturan, laporan | +| **Kasir** | `/admin` (terbatas) | Pembayaran, kas | +| **Teknisi** | `/tech` | Tiket, peta, input pelanggan lapangan, perangkat | +| **Kolektor** | `/collector` | Cek tagihan pelanggan, pengajuan pembayaran (menunggu approval) | +| **Pelanggan** | `/customer` (PWA) | Tagihan, bayar, tiket, WiFi, speed test | + +## Portal Pelanggan (PWA) + +- Dapat **dipasang** di HP (Add to Home Screen), mendukung **offline** & update otomatis. +- Cek tagihan (dengan/tanpa login sesuai alur), bayar, lihat riwayat. +- Ubah **SSID/password WiFi**, reboot CPE (bila diaktifkan). +- Buat **tiket** keluhan. +- **Speed test** (internal/eksternal) + tombol Muat Ulang & Bersihkan Cache. +- Halaman informasi: syarat & ketentuan, privasi, tentang, kontak. +- Switch bahasa Indonesia/English. + +## Portal Teknisi + +- Ringkasan tugas, pool tiket, riwayat penanganan. +- Peta jaringan pelanggan & ODP + rute Google Maps. +- Input pelanggan baru dari lapangan. +- Akses perangkat GenieACS (detail, SSID, reboot). + +## Kolektor + +- Cek status tagihan pelanggan (lunas/belum). +- Buat **pengajuan pembayaran** yang menunggu approval admin/kasir. + +> Selanjutnya: [[OLT dan TR-069]]. diff --git a/Troubleshooting.md b/Troubleshooting.md new file mode 100644 index 0000000..2556d60 --- /dev/null +++ b/Troubleshooting.md @@ -0,0 +1,47 @@ +# Troubleshooting + +## Error `no such column: ...` (kolom database belum ada) + +Database lama belum punya kolom baru. Solusi: + +```bash +bash scripts/fix-database.sh +# atau periksa manual: +node scripts/verify-database.js +``` + +Lalu restart aplikasi. + +## Login pelanggan lambat + +- Pastikan server tidak kelebihan beban (CPU/RAM). +- Jalankan `VACUUM` pada SQLite bila DB membengkak. +- Cek jaringan ke layanan eksternal (OLT/ACS/MikroTik). + +## Hotspot users lambat tampil + +- Kurangi user hotspot tidak aktif. +- Upgrade RouterOS. +- Pertimbangkan split router bila user > 1000. + +## PWA tidak update / "Tap to copy URL" + +- Hapus lalu **pasang ulang** ikon PWA (manifest sudah diperbaiki). +- Pastikan `/version.txt` dapat diakses (mekanisme update PWA). + +## Notifikasi WhatsApp gagal + +- **GoWA:** cek status gateway & secret webhook; pastikan container/endpoint hidup. +- **Baileys:** scan ulang QR bila sesi logout. +- Cek log aplikasi (`logs/` atau `pm2 logs`). + +## MikroTik tidak terhubung + +- Pastikan API aktif (port 8728 / 8729 untuk TLS) & user punya izin. +- Cek firewall server→router. + +## Port sudah dipakai + +Ubah `server_port` di `settings.json` (default 3001), atau ubah mapping port pada `docker-compose.yml`. + +> Kembali ke [[Home]]. diff --git a/WhatsApp-dan-Telegram.md b/WhatsApp-dan-Telegram.md new file mode 100644 index 0000000..4de0370 --- /dev/null +++ b/WhatsApp-dan-Telegram.md @@ -0,0 +1,30 @@ +# WhatsApp & Telegram + +## WhatsApp + +Dua pilihan gateway: + +1. **GoWA** (gateway eksternal) — set URL & secret serta webhook ke aplikasi. +2. **Baileys** (bawaan) — login via QR, sesi tersimpan di `baileys/`. + +Fitur: + +- **Broadcast** massal dengan jeda/antrian (jeda/lanjut/stop). +- **Pengingat tagihan** otomatis (template + jadwal cron). +- **Struk pelunasan**: periode bulan, nominal, sisa tunggakan. +- Tes notifikasi, reset sesi autentikasi bot. +- Perintah admin via WhatsApp (billing tools, MikroTik tools, dll). + +> Template pesan diatur dari panel admin. Placeholder umum: `{{nama}}`, `{{periode}}`, `{{nominal}}`, `{{tunggakan_info}}`. + +## Telegram + +- Bot admin (opsional): aktifkan dan isi token + admin ID. +- Notifikasi & sinkronisasi dari panel. + +## Tips + +- Pastikan nomor pengirim aktif & tidak diblokir WhatsApp. +- Gunakan jeda cukup pada broadcast agar tidak dianggap spam. + +> Selanjutnya: [[Pembayaran dan QRIS]].