Gembok Bill adalah sistem manajemen ISP terintegrasi yang menggabungkan WhatsApp Gateway dengan portal admin web untuk mengelola layanan internet secara komprehensif. Aplikasi ini dirancang khusus untuk ISP (Internet Service Provider) yang membutuhkan solusi all-in-one untuk manajemen pelanggan, billing, monitoring, dan notifikasi.
- π§ WhatsApp Bot Gateway - Interface perintah via WhatsApp
- π Web Portal Admin - Dashboard admin yang lengkap
- π³ Sistem Billing Terintegrasi - Manajemen tagihan dan pembayaran
- π³ Payment Gateway - Integrasi Midtrans, Xendit, Tripay
- π GenieACS Management - Monitoring dan manajemen perangkat ONU/ONT
- π οΈ Mikrotik Management - Manajemen PPPoE dan Hotspot
- π± Portal Pelanggan - Self-service untuk pelanggan
- π Monitoring Real-time - PPPoE, RX Power, dan sistem
- π Notifikasi Otomatis - WhatsApp notifications
- π Trouble Ticket System - Manajemen gangguan
- Node.js v18+ (direkomendasikan v20+)
- npm atau yarn
- GenieACS API access
- Mikrotik API access
- WhatsApp number untuk bot
- Database SQLite (built-in)
# Install git jika belum ada
apt install git curl -y
sudo apt update
sudo apt install git
# Clone repository
git clone https://github.com/ripcord20/DataGate-Bill.git
cd DataGate-Bill
# Install semua dependencies
npm install
jika ada masalah dengan npm install npm warn deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs npm warn deprecated [email protected]: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. npm warn deprecated [email protected]: This package is no longer supported. npm warn deprecated [email protected]: Rimraf versions prior to v4 are no longer supported npm warn deprecated [email protected]: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. npm warn deprecated [email protected]: Rimraf versions prior to v4 are no longer supported npm warn deprecated [email protected]: This package is no longer supported. npm warn deprecated [email protected]: Glob versions prior to v9 are no longer supported npm warn deprecated [email protected]: This package is no longer supported. npm warn deprecated [email protected]: This package is no longer supported. npm warn deprecated [email protected]: Use your platform's native DOMException instead npm warn deprecated [email protected]: node-routeros has been discontinued
added 548 packages, and audited 549 packages in 51s
81 packages are looking for funding
run npm fund
for details
3 high severity vulnerabilities
To address all issues (including breaking changes) run : npm audit fix --force
run : nano setting.json
Edit file settings.json
dengan pengaturan yang sesuai:
{
"admins.0": "628529988665",
"admin_enabled": "true",
"admin_username": "admin",
"admin_password": "admin",
"genieacs_url": "http://192.168.22.253:7557",
"genieacs_username": "admin",
"genieacs_password": "admin",
"mikrotik_host": "192.168.90.1",
"mikrotik_port": "7288",
"mikrotik_user": "admin",
"mikrotik_password": "admin",
"main_interface": "sfp+1",
"pppoe_monitor_enable": "true",
"technician_numbers.0": "6285784495037",
"technician_numbers.1": "6285606424075",
"technician_group_id": "[email protected]",
"whatsapp_session_path": "./whatsapp-session",
"whatsapp_keep_alive": "true",
"whatsapp_restart_on_error": "true",
"whatsapp_log_level": "silent",
"pppoe_monitor_interval": "60000",
"rx_power_warning": "-40",
"rx_power_critical": "-45",
"rx_power_notification_enable": "true",
"rx_power_notification_interval": "300000",
"company_header": "π’ DATAGATE π’",
"footer_info": "The Real Fastes Interconnected",
"customerPortalOtp": "false",
"otp_length": "4",
"otp_expiry_minutes": "5",
"server_port": "3003",
"server_host": "localhost",
"pppoe_notifications.enabled": "true",
"pppoe_notifications.loginNotifications": "true",
"pppoe_notifications.logoutNotifications": "true",
"pppoe_notifications.includeOfflineList": "true",
"pppoe_notifications.maxOfflineListCount": "20",
"pppoe_notifications.monitorInterval": "60000",
"secret_key": "alijaya-digital-network",
"reconnect_interval": "5000",
"log_level": "info",
"logo_filename": "logo.png",
"payment_gateway": {
"active": "midtrans",
"midtrans": {
"enabled": true,
"production": false,
"merchant_id": "G123456789",
"client_key": "SB-Mid-client-123456789",
"server_key": "SB-Mid-server-123456789"
},
"xendit": {
"enabled": false,
"production": false,
"api_key": "xnd_public_development_123456789",
"callback_token": "xnd_callback_token_123456789"
},
"tripay": {
"enabled": false,
"production": false,
"api_key": "DEV-123456789",
"private_key": "private_key_123456789",
"merchant_code": "T12345"
}
},
"payment_accounts": {
"bank_transfer": {
"bank_name": "Bank BRI",
"account_number": "1234-5678-9012-3456",
"account_name": "ALIJAYA DIGITAL NETWORK"
},
"cash": {
"office_address": "Jl. Contoh No. 123, Kota, Provinsi",
"office_hours": "08:00 - 17:00 WIB"
}
}
}
# Jalankan script untuk setup database billing
node scripts/add-payment-gateway-tables.js
Development Mode:
npm run dev
Production Mode:
npm start
Dengan PM2:
# Install PM2 jika belum ada
npm install -g pm2
# Start aplikasi
pm2 start app.js --name DataGate-Bill
# Monitor aplikasi
pm2 monit
# View logs
pm2 logs DataGate-Bill
-
Siapkan 2 nomor WhatsApp:
- 1 nomor untuk bot (akan scan QR code)
- 1 nomor untuk admin (untuk mengirim perintah)
-
Scan QR Code yang muncul di terminal untuk login WhatsApp bot
-
Test dengan perintah:
status
ataumenu
- Portal Pelanggan:
http://ipserver:3003
- Admin Dashboard:
http://ipserver:3003/admin/login
- Login Admin: Username dan password yang dikonfigurasi di
settings.json
- π Dashboard Billing - Statistik real-time
- π₯ Manajemen Pelanggan - CRUD pelanggan dengan PPPoE username
- π¦ Manajemen Paket - Paket internet dengan harga
- π Manajemen Invoice - Buat, edit, hapus tagihan
- π° Manajemen Pembayaran - Tracking pembayaran
- π Auto Invoice - Generate tagihan otomatis
- π³ Payment Gateway - Integrasi Midtrans, Xendit, Tripay
- π± WhatsApp Notifications - Notifikasi tagihan dan pembayaran
Aplikasi mendukung 3 payment gateway populer di Indonesia:
- Midtrans - Payment gateway terpopuler
- Xendit - Payment gateway enterprise
- Tripay - Payment gateway lokal
Setup Payment Gateway:
- Akses
/admin/billing/payment-settings
- Pilih gateway yang aktif
- Masukkan API keys
- Test koneksi
- Aktifkan production mode
menu
- Menampilkan menu bantuanstatus
- Cek status perangkatrefresh
- Refresh data perangkatgantiwifi [nama]
- Ganti nama WiFigantipass [password]
- Ganti password WiFiinfo
- Informasi layananspeedtest
- Test kecepatan internet
devices
- Daftar perangkatcekall
- Cek semua perangkatcek [nomor]
- Cek status ONUcekstatus [nomor]
- Cek status pelangganadmincheck [nomor]
- Cek perangkat admingantissid [nomor] [ssid]
- Ubah SSIDgantipass [nomor] [pass]
- Ubah passwordreboot [nomor]
- Restart ONUfactory reset [nomor]
- Reset factoryrefresh
- Refresh data perangkattag [nomor] [tag]
- Tambah tag pelangganuntag [nomor] [tag]
- Hapus tagtags [nomor]
- Lihat tagsaddtag [device_id] [nomor]
- Tambah tag perangkataddppoe_tag [pppoe_id] [nomor]
- Tambah tag dengan id pppoeadminssid [nomor] [ssid]
- Admin ubah SSIDadminrestart [nomor]
- Admin restart ONUadminfactory [nomor]
- Admin factory resetconfirm admin factory reset [nomor]
- Konfirmasi factory reset
interfaces
- Daftar interfaceinterface [nama]
- Detail interfaceenableif [nama]
- Aktifkan interfacedisableif [nama]
- Nonaktifkan interfaceipaddress
- Alamat IProutes
- Tabel routingdhcp
- DHCP leasesping [ip] [count]
- Test pinglogs [topics] [count]
- Log Mikrotikfirewall [chain]
- Status firewallusers
- Daftar semua userprofiles [type]
- Daftar profileidentity [nama]
- Info routerclock
- Waktu routerresource
- Info resourcereboot
- Restart routerconfirm restart
- Konfirmasi restart
vcr [user] [profile] [nomor]
- Buat voucherhotspot
- User hotspot aktifpppoe
- User PPPoE aktifoffline
- User PPPoE offlineaddhotspot [user] [pass] [profile]
- Tambah useraddpppoe [user] [pass] [profile] [ip]
- Tambah PPPoEsetprofile [user] [profile]
- Ubah profiledelhotspot [username]
- Hapus user hotspotdelpppoe [username]
- Hapus user PPPoEaddpppoe_tag [user] [nomor]
- Tambah tag PPPoEmember [username] [profile] [nomor]
- Tambah memberlist
- Daftar semua userremove [username]
- Hapus user (generic)addadmin [nomor]
- Tambah nomor adminremoveadmin [nomor]
- Hapus nomor admin
otp [nomor]
- Kirim OTPstatus
- Status sistemlogs
- Log aplikasirestart
- Restart aplikasidebug resource
- Debug resourcecheckgroup
- Cek status groupsetadmin [nomor]
- Set nomor adminsettechnician [nomor]
- Set nomor teknisisetheader [teks]
- Set header pesansetfooter [teks]
- Set footer pesansetgenieacs [url] [user] [pass]
- Set GenieACSsetmikrotik [host] [port] [user] [pass]
- Set Mikrotikadmin
- Menu adminhelp
- Bantuan perintahya/iya/yes
- Konfirmasi yatidak/no/batal
- Konfirmasi tidakaddwan [interface]
- Tambah WAN
info wifi
- Info WiFi pelangganinfo
- Info layanangantiwifi [ssid]
- Ganti nama WiFigantipass [password]
- Ganti password WiFispeedtest
- Test kecepatandiagnostic
- Diagnostik perangkathistory
- Riwayat perangkatmenu
- Menu utamafactory reset
- Reset factory (pelanggan)confirm factory reset
- Konfirmasi factory reset
Jika ada error seperti:
Error sending message: Error: item-not-found
warn: Skipping invalid WhatsApp number: 08xxxxxxxx
Solusi:
-
Jalankan Script Perbaikan Otomatis:
node scripts/fix-technician-config.js
-
Cek Status Group:
- Kirim perintah WhatsApp:
checkgroup
- Akan menampilkan status group dan nomor teknisi
- Kirim perintah WhatsApp:
-
Perbaiki Manual:
- Buka Admin Settings
- Update nomor teknisi dengan format:
628xxxxxxxxxx
- Pastikan group ID berformat:
[email protected]
- Tambahkan bot ke group teknisi
- β
628xxxxxxxxxx
- β
08xxxxxxxxxx
- β
+628xxxxxxxxxx
- β
[email protected]
- β
120363029715729111
- β
group-120363029715729111
-
Invalid API Key:
- Pastikan API key benar dan aktif
- Cek status akun di dashboard payment gateway
- Test koneksi di
/admin/billing/payment-settings
-
Webhook Error:
- Pastikan URL webhook benar
- Cek firewall dan port
- Verifikasi signature di webhook handler
gembok-bill/
βββ app.js # File utama aplikasi
βββ package.json # Dependencies dan scripts
βββ settings.json # Konfigurasi aplikasi
βββ config/ # Modul konfigurasi
β βββ whatsapp.js # WhatsApp bot handler
β βββ genieacs.js # GenieACS API
β βββ mikrotik.js # Mikrotik API
β βββ billing.js # Billing system
β βββ paymentGateway.js # Payment gateway manager
β βββ logger.js # Logging system
β βββ settingsManager.js # Settings management
βββ routes/ # Express routes
β βββ adminAuth.js # Admin authentication
β βββ adminDashboard.js # Dashboard routes
β βββ adminBilling.js # Billing management
β βββ adminGenieacs.js # GenieACS management
β βββ adminMikrotik.js # Mikrotik management
β βββ adminHotspot.js # Hotspot management
β βββ adminSetting.js # Settings management
β βββ customerPortal.js # Customer portal
β βββ payment.js # Payment gateway routes
β βββ troubleReport.js # Trouble ticket system
βββ views/ # EJS templates
β βββ admin/ # Admin views
β β βββ billing/ # Billing pages
β β βββ ...
β βββ customer/ # Customer views
β βββ partials/ # Shared components
βββ public/ # Static files
β βββ css/
β βββ js/
β βββ img/
βββ data/ # Database files
βββ logs/ # Log files
βββ scripts/ # Utility scripts
βββ whatsapp-session/ # WhatsApp session files
Untuk berkontribusi pada proyek ini:
- Fork repository
- Buat branch fitur baru (
git checkout -b feature/AmazingFeature
) - Commit perubahan (
git commit -m 'Add some AmazingFeature'
) - Push ke branch (
git push origin feature/AmazingFeature
) - Buat Pull Request
- Gunakan ESLint untuk code formatting
- Tulis unit tests untuk fitur baru
- Update dokumentasi untuk perubahan
- Ikuti conventional commits
Distributed under the ISC License. See LICENSE
for more information.
- π± Telegram Group: https://t.me/alijayaNetAcs
- π’ Telegram Channel: https://t.me/alijayaNetwork
- πΊ YouTube: https://www.youtube.com/shorts/qYJFQY7egFw
- π¬ Issues: GitHub Issues
Rekening Donasi Untuk Pembangunan Masjid:
- Bank: BRI
- No. Rekening: 4206 01 003953 531
- Atas Nama: WARJAYA
- Info: 08194215703 ALIJAYA
Jangan lupa untuk mengkonfigurasi file settings.json
terlebih dahulu sebelum menjalankan aplikasi!
Aplikasi ini dikembangkan untuk keperluan ISP dan membutuhkan konfigurasi yang tepat untuk berfungsi dengan baik. Pastikan semua kredensial API dan pengaturan sudah benar sebelum deployment ke production.
Made with β€οΈ by Ali Jaya