Wiki OPEN-ISP: 13 halaman dokumentasi (instalasi, konfigurasi, panduan admin, OLT/TR-069, WhatsApp, pembayaran, keamanan, backup, FAQ, troubleshooting, donasi)
1 parent
6b95568163
commit
ae03c365b5
13 files changed
+545
-1
No files matched your search
@@ -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]].
|
||||||
@@ -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]].
|
||||||
+30
@@ -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]].
|
||||||
+36
-1
@@ -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]].
|
||||||
+79
@@ -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]].
|
||||||
+24
@@ -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]].
|
||||||
+75
@@ -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]].
|
||||||
+37
@@ -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]].
|
||||||
+50
@@ -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]].
|
||||||
@@ -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]].
|
||||||
@@ -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]].
|
||||||
@@ -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]].
|
||||||
@@ -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]].
|
||||||
Reference in new issue
Block a user