Bot Telegram untuk manajemen akun VPN multi-protocol dengan arsitektur production-ready. Semua fitur & manajemen dilakukan via Telegram Bot - web interface hanya untuk setup/edit konfigurasi awal.
curl -fsSL https://raw.githubusercontent.com/alrescha79-cmd/bot-vpn/main/scripts/install-production.sh | sudo bash📖 Informasi lengkap: Lihat Production Installation Guide untuk detail setup dan konfigurasi.
🆕 What's New in v3.1.25:
- ✅ Perbaikan Bug - Lihat Release untuk detail
Previous Updates (v3.1.22):
- ✅ Pakasir Payment Gateway - Payment gateway alternatif dengan QRIS & Virtual Account
- ✅ Auto-fallback Payment - Otomatis gunakan Pakasir jika Midtrans/QRIS tidak dikonfigurasi
- ✅ Pakasir Webhook - Auto-verification pembayaran via webhook
- ✅ Multi Payment Support - Midtrans, Static QRIS, dan Pakasir dalam satu sistem
- 📖 Pakasir Setup Guide - Dokumentasi lengkap setup Pakasir
Previous Updates (v3.1.21):
- ✅ Static QRIS Payment - Support QRIS statis (Dana Bisnis, ShopeePay, GoPay) dengan verifikasi manual admin
- ✅ Dynamic QRIS - Library
@agungjsp/qris-dinamisuntuk embed nominal otomatis di QR code- ✅ Admin Verification System - Admin panel untuk approve/reject deposit manual dengan inline buttons
- ✅ Payment Proof Upload - User upload bukti pembayaran, admin langsung dapat notifikasi real-time
- ✅ Dual Payment Mode - Midtrans (auto-verify) atau QRIS Statis (manual) dengan fallback otomatis
Previous Updates (v3.1.2):
- ✅ Midtrans Payment Gateway - Integrasi lengkap dengan Midtrans untuk pembayaran otomatis
- ✅ 3-in-1 Protocol - VMESS + VLESS + TROJAN dalam satu paket (harga 1.5x)
- ✅ Trial System Fixed - Perbaikan bug SSH trial timeout & loading messages
- ✅ CLI Setup - Setup konfigurasi manual via terminal untuk production
- ✅ Account Persistence - Semua akun premium disimpan ke database SQLite
- ✅ Akunku Menu - Lihat, detail, dan kelola akun yang telah dibuat
- SSH - Secure Shell tunneling
- VMess - V2Ray protocol
- VLess - V2Ray protocol (lightweight)
- Trojan - Trojan protocol
- Shadowsocks - Shadowsocks protocol
- Admin - Full akses manajemen sistem
- Reseller - Manajemen akun & transaksi
- User - Akses basic & pembelian
- QRIS Dinamis - QRIS dengan nominal otomatis (manual verification)
- Midtrans - Payment Gateway terintegrasi (Sandbox & Production) - Auto-verification
- Pakasir - Payment Gateway alternatif dengan QRIS & Virtual Account - Auto-verification
- Auto-Verification - Verifikasi pembayaran otomatis setiap 10 detik (Midtrans/Pakasir)
- Manual Verification - Admin approve manual untuk QRIS statis
- Instant Webhook - Webhook untuk verifikasi instant (Midtrans & Pakasir)
- Deposit System - Top-up saldo otomatis/manual
- Transaction History - Riwayat lengkap transaksi
- 📖 Setup QRIS Statis - Panduan setup Dana Bisnis, ShopeePay, GoPay
- 📖 Setup Pakasir - Panduan setup Pakasir Payment Gateway
- ⏳ Payment Gateway Lainnya - Xendit, Duitku, dll (Coming Soon)
- Setup Mode - Konfigurasi awal via web browser (satu kali setup)
- Edit Mode - Edit konfigurasi sistem tanpa coding
- Bukan untuk user - Web hanya untuk admin setup, bukan interface user
- All Management via Bot - Semua fitur diakses via Telegram
- User-Friendly Menus - Keyboard interaktif & inline buttons
- Real-time Notifications - Notifikasi langsung ke Telegram
- Multi-User Support - Handle multiple users simultaneously
- Clean Build - Dist tanpa config/database
- Auto-Start - PM2 & systemd support
- Database Migration - Auto-create schema
- Error Handling - Comprehensive logging
- Auto-Save Accounts - Semua akun premium tersimpan otomatis ke SQLite
- Akunku Menu - Lihat semua akun yang telah dibuat
- Account Details - Lihat detail lengkap termasuk raw response
- Delete Accounts - Hapus akun dari database
- Filter by Owner - User/Reseller hanya lihat akun mereka, Admin lihat semua
- Node.js v18+ (v20+ recommended)
- npm v8+
- SQLite3 (auto-installed)
- VPS dengan SSH access (untuk production)
- Midtrans Merchant ID dan Server Key (untuk payment gateway)
- API Key lainnya (jika menggunakan payment gateway lain)
- Telegram Bot Token (dari @BotFather)
⚠️ PENTING: Ini adalah Telegram Bot, bukan aplikasi web!
- Web interface hanya untuk setup/edit konfigurasi (admin only)
- Semua fitur VPN management dilakukan via Telegram Bot
- Users berinteraksi dengan bot di Telegram, bukan via web browser
Key Points:
- 💬 User Interface = Telegram Bot (semua fitur ada di bot)
- 🌐 Web Interface = Config Only (admin setup saja, bukan untuk user)
- 🖥️ VPS Management = Via SSH (bot connect ke VPS untuk create/manage akun)
git clone https://github.com/alrescha79-cmd/bot-vpn.git
cd bot-vpnnpm install# Pastikan tidak ada .vars.json (agar masuk setup mode)
rm -f .vars.json
# Start development server
npm run devBuka browser: http://localhost:50123/setup
⚠️ Ini hanya dilakukan SATU KALI saat setup awal!
Setelah ini, semua manajemen via Telegram Bot.
Isi form dengan:
- ✅ Bot Token - Dari @BotFather
- ✅ Admin User ID - Telegram ID Anda (dapatkan dari @userinfobot)
- ✅ Admin Username - Username Telegram admin (tanpa @)
- ✅ Group ID - Group untuk notifikasi (optional)
- ✅ Store Name - Nama toko VPN Anda
- ✅ QRIS Data - String QRIS statis (Dana, ShopeePay, GoPay - lihat QRIS Setup)
- ✅ Midtrans Keys - Merchant ID & Server Key (optional, lihat Midtrans Setup)
📖 Setup Payment:
- QRIS Statis: Lihat QRIS Setup Guide untuk setup Dana Bisnis, ShopeePay, atau GoPay
- Midtrans: Lihat Quick Start Midtrans untuk setup 5 menit
Klik: Simpan & Lanjutkan
Setelah konfigurasi tersimpan, bot akan restart. Jalankan:
# Ganti YOUR_TELEGRAM_ID dengan ID Telegram Anda
sqlite3 data/botvpn.db "UPDATE users SET role = 'admin' WHERE user_id = YOUR_TELEGRAM_ID;"# Development mode (dengan auto-reload)
npm run dev
# Production mode
npm startBuka Telegram, chat bot Anda: /start
bot-vpn/
├── src/ # Source code (TypeScript)
│ ├── api/ # API routes (config management)
│ ├── app/ # Bot initialization & loader
│ ├── config/ # Configuration management
│ ├── database/ # Database schema & queries
│ ├── frontend/ # Web interface (setup/edit)
│ ├── handlers/ # Telegram handlers
│ │ ├── actions/ # Callback query handlers
│ │ ├── commands/ # Command handlers
│ │ └── events/ # Event handlers
│ ├── middleware/ # Auth & error handling
│ ├── modules/ # Protocol implementations
│ │ └── protocols/
│ │ ├── ssh/
│ │ ├── vmess/
│ │ ├── vless/
│ │ ├── trojan/
│ │ └── shadowsocks/
│ ├── repositories/ # Database access layer
│ ├── services/ # Business logic
│ ├── types/ # TypeScript types
│ └── utils/ # Helpers & utilities
├── dist/ # Build output (generated)
├── data/ # Runtime data
│ └── botvpn.db # SQLite database
├── scripts/ # Build & utility scripts
│ ├── build-clean.js # Clean build script
│ └── migrate-db-to-data.sh # Database migration
├── deployment/ # Deployment configs
│ └── bot-vpn.service # systemd service
├── .vars.json # Config file (gitignored)
├── .vars.json.example # Config template
├── index.js # Entry point
├── ecosystem.config.js # PM2 config
├── package.json # Dependencies
└── tsconfig.json # TypeScript config
| Dokumen | Deskripsi |
|---|---|
| QUICKSTART.md | Panduan setup cepat & deployment |
| DEPLOYMENT.md | Deployment detail untuk VPS |
| QRIS_SETUP.md | Setup QRIS Statis (Dana, ShopeePay, GoPay) |
| PAKASIR_SETUP.md | Setup Pakasir Payment Gateway |
| CHANGELOG_V3.md | Changelog & implementation summary |
| TROUBLESHOOTING.md | Troubleshooting common issues |
| MIGRATION_GUIDE.md | Upgrade dari v2.0 ke v3.0 |
| TESTING.md | Testing guide untuk account persistence |
| DOCUMENTATION_INDEX.md | Index semua dokumentasi |
| UPDATE_V3.1_SUMMARY.md | Summary update v3.1 |
# Build untuk production
npm run build
# Build dengan watch mode
npm run build:watch
# Type checking (tanpa build)
npm run type-check# Development (auto-reload dengan nodemon)
npm run dev
# Production (NODE_ENV=production)
npm run start:prod
# Normal start
npm start📱 Remember: Users akan menggunakan Telegram Bot, bukan web!
Web hanya perlu diakses satu kali untuk setup konfigurasi.
One-line installation untuk production server:
curl -s https://raw.githubusercontent.com/alrescha79-cmd/bot-vpn/main/scripts/install-production.sh | sudo bashScript ini akan otomatis:
- ✅ Install Node.js, PM2, dan dependencies
- ✅ Download release terbaru dari GitHub
- ✅ Extract dan deploy aplikasi
- ✅ Setup auto-start dengan PM2
- ✅ Preserve config & database (jika update)
Install versi spesifik:
curl -s https://raw.githubusercontent.com/alrescha79-cmd/bot-vpn/main/scripts/install-production.sh | sudo bash -s -- --version v3.1.1Custom installation path:
curl -s https://raw.githubusercontent.com/alrescha79-cmd/bot-vpn/main/scripts/install-production.sh | bash -s -- --path /opt/bot-vpn📖 Dokumentasi lengkap: PRODUCTION_INSTALL.md
Jika ingin install secara manual:
npm run buildHasil build di folder dist/:
- ✅ Compiled JavaScript code
- ✅ Frontend assets (HTML untuk setup config)
- ❌ TIDAK ada
.vars.json(config) - ❌ TIDAK ada database files
# Package untuk deployment
tar -czf bot-vpn-deploy.tar.gz \
dist/ \
index.js \
package.json \
package-lock.json \
ecosystem.config.js \
deployment/
# Upload ke VPS
scp bot-vpn-deploy.tar.gz user@your-vps:/var/www/# SSH ke VPS
ssh user@your-vps
# Extract
cd /var/www
tar -xzf bot-vpn-deploy.tar.gz
cd bot-vpn
mv bot-vpn-deploy bot-vpn
# Install dependencies (production only)
npm install --production
# Setup konfigurasi (via web)
# Akses: http://your-vps-ip:50123/setup# Install PM2 globally
sudo npm install -g pm2
# Start bot
pm2 start index.js --name bot-vpn
# Setup auto-start on boot
pm2 startup
pm2 save
# Monitor
pm2 logs bot-vpn
pm2 status# Copy service file
sudo cp deployment/bot-vpn.service /etc/systemd/system/
# Edit ExecStart path sesuai lokasi Anda
sudo nano /etc/systemd/system/bot-vpn.service
# Enable & start
sudo systemctl enable bot-vpn
sudo systemctl start bot-vpn
# Check status
sudo systemctl status bot-vpn
sudo journalctl -u bot-vpn -fDetail lengkap: Lihat DEPLOYMENT.md
💬 Semua fitur diakses via Telegram Bot - tidak ada web dashboard untuk user!
Buka bot di Telegram dan gunakan command:
/start- Mulai bot & tampilkan menu utama/menu- Tampilkan menu utama dengan inline keyboard/profile- Lihat profil, saldo, dan informasi akun/riwayat- Lihat riwayat transaksi & pembelian- Create Account - Buat akun SSH/VMess/VLess/Trojan/Shadowsocks (via menu)
- Renew Account - Perpanjang akun yang sudah ada (via menu)
- Trial Account - Request akun trial gratis (via menu)
- Top-up Saldo - Deposit via QRIS (via menu)
/admin- Menu admin lengkap/broadcast- Broadcast message ke semua user/stats- Statistik sistem (user, transaksi, revenue)- Manage Servers - Tambah/edit/hapus server VPN (via menu)
- Manage Users - Kelola user & reseller (via menu)
- Manage Prices - Set harga per protocol (via menu)
- View Reports - Laporan lengkap (via menu)
/reseller- Menu reseller/harga- Lihat daftar harga/stok- Cek stok server available- Create for Customer - Buatkan akun untuk customer (via menu)
- Commission Report - Lihat komisi & earnings (via menu)
⚙️ Web interface hanya untuk admin setup - bukan untuk end-user!
Buka: http://localhost:50123/config/edit
Edit nilai konfigurasi sistem (bot token, API key, dll)
Klik: "Simpan Perubahan"
Restart bot
# Edit .vars.json
nano .vars.json
# Restart bot
pm2 restart bot-vpn
# atau
sudo systemctl restart bot-vpn./data/botvpn.db# Manual backup
cp data/botvpn.db data/botvpn.db.backup-$(date +%Y%m%d)
# Auto backup (via cron)
# Add to crontab: crontab -e
0 2 * * * cd /path/to/bot-vpn && cp data/botvpn.db data/botvpn.db.backup-$(date +\%Y\%m\%d)# Stop bot
pm2 stop bot-vpn
# Restore backup
cp data/botvpn.db.backup-YYYYMMDD data/botvpn.db
# Start bot
pm2 start bot-vpnJika upgrade dari versi lama yang database di root:
# Jalankan migration script
./scripts/migrate-db-to-data.sh
# Atau manual
mkdir -p ./data
cp ./botvpn.db ./botvpn.db.backup
mv ./botvpn.db ./data/botvpn.db# Check logs
pm2 logs bot-vpn
# atau
sudo journalctl -u bot-vpn -f
# Verify config exists
cat .vars.json
# Check database
ls -lh data/botvpn.db# Fix permissions
sudo chown -R $USER:$USER ./data/
chmod 755 ./data/
chmod 644 ./data/botvpn.db# Check what's using port 50123
sudo lsof -i :50123
# atau
sudo netstat -tlnp | grep 50123
# Kill process atau ubah port di .vars.json# Reinstall dependencies
rm -rf node_modules package-lock.json
npm install --productionTroubleshooting lengkap: Lihat TROUBLESHOOTING.md
chmod 600 .vars.json# Allow SSH, Bot API, dan Web Config
sudo ufw allow 22/tcp
sudo ufw allow 50123/tcp
sudo ufw enableserver {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:50123;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com# Backup script: backup-bot.sh
#!/bin/bash
DATE=$(date +%Y%m%d-%H%M%S)
tar -czf /backup/bot-vpn-backup-$DATE.tar.gz \
.vars.json \
data/ \
ecosystem.config.js# Real-time monitoring
pm2 monit
# Logs
pm2 logs bot-vpn --lines 100
# CPU & Memory usage
pm2 statusLogs disimpan di:
- Console output: via PM2/systemd
- Error logs: via Winston logger (jika dikonfigurasi)
# View logs
pm2 logs bot-vpn
# Clear logs
pm2 flushContributions are welcome! Please:
- Fork repository
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
Distributed under the MIT License. See LICENSE for more information.
alrescha79-cmd
- GitHub: @alrescha79-cmd
- Repository: bot-vpn
- Telegraf - Modern Telegram Bot Framework
- SQLite - Lightweight database
- SSH2 - SSH2 client for Node.js
- Express - Web framework
- TypeScript - Typed JavaScript
Jika ada pertanyaan atau issue:
- Check dokumentasi - DOCUMENTATION_INDEX.md
- Troubleshooting - TROUBLESHOOTING.md
- Open issue - GitHub Issues
A: Ini adalah Telegram Bot. Web interface hanya untuk setup/edit konfigurasi sistem (admin only). Semua fitur manajemen VPN, user interaction, dan transaksi dilakukan via Telegram Bot.
A: TIDAK. User hanya perlu chat dengan bot di Telegram. Semua fitur (beli, renew, trial, top-up) ada di bot.
A: Web interface hanya untuk:
- Setup konfigurasi pertama kali (bot token, API key, dll)
- Edit konfigurasi sistem oleh admin
- BUKAN untuk end-user atau dashboard user
A:
- User cari bot di Telegram (sesuai username bot Anda)
- Ketik
/start - Pilih menu yang muncul (inline keyboard)
- Semua transaksi & management via chat Telegram
A: TIDAK. Menggunakan SQLite3 yang auto-included. File database disimpan di ./data/botvpn.db.
A: YA. Bot bisa handle multiple concurrent users. Tested untuk ratusan user.
A: Port untuk web interface (setup config). Hanya admin yang perlu akses. Bisa diubah di config.
- Web-based configuration (admin setup only)
- Multi-protocol support (SSH, VMess, VLess, Trojan, Shadowsocks)
- QRIS payment integration
- Role-based access control
- Auto-start support (PM2 & systemd)
- Telegram bot interface (full featured)
- Account persistence to database (v3.1)
- Akunku menu for account management (v3.1)
- Wireguard protocol support
- Multi-language support
- Admin web dashboard (monitoring & analytics)
- API documentation (Swagger)
- Docker deployment support
Bot dilengkapi dengan berbagai helper scripts untuk memudahkan testing dan management:
# Check all saved accounts
./scripts/check-accounts.sh
# Check accounts by specific user
./scripts/check-accounts.sh <user_id>
# Monitor account persistence in real-time
./scripts/test-account-persist.sh
# Test data extraction patterns
node scripts/test-extraction.js# Set user as admin/owner
./scripts/set-admin.sh <user_id># Direct database access
sqlite3 data/botvpn.db
# List all tables
sqlite3 data/botvpn.db ".tables"
# Query accounts
sqlite3 data/botvpn.db "SELECT * FROM accounts LIMIT 10;"Fitur baru untuk melihat dan mengelola akun yang telah dibuat:
- Buka bot di Telegram
- Klik menu Akunku (menggantikan "Cek Saldo")
- Lihat saldo dan list akun aktif
- Detail Akun - Lihat list semua akun, klik username untuk detail lengkap
- Hapus Akun - Hapus akun dari database
- Filter Otomatis - User/Reseller hanya lihat akun miliknya, Admin lihat semua
Setiap akun premium yang dibuat akan disimpan dengan informasi:
- Username
- Protocol (SSH/VMess/VLess/Trojan/Shadowsocks)
- Server domain
- Tanggal dibuat
- Tanggal expired
- Status (active/expired)
- Raw response (detail lengkap akun)
⭐ Star this repo if you find it useful! ⭐
Made with ❤️ by alrescha79-cmd