From 4c7a046efe85548e8783e6425c2887d288f40384 Mon Sep 17 00:00:00 2001 From: oxpoe Date: Fri, 9 Oct 2026 06:44:08 +0700 Subject: [PATCH] feat(codespaces): .devcontainer + auto-setup & auto-run (Step 10) + rapikan README --- .devcontainer/devcontainer.json | 17 +++++++++++++++++ .devcontainer/setup.sh | 18 ++++++++++++++++++ .devcontainer/start.sh | 11 +++++++++++ README.md | 10 ++++++++-- 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 .devcontainer/devcontainer.json create mode 100755 .devcontainer/setup.sh create mode 100755 .devcontainer/start.sh diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..1cfded1 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,17 @@ +{ + "name": "OPEN-ISP", + "image": "mcr.microsoft.com/devcontainers/javascript-node:1-22-bookworm", + "features": { + "ghcr.io/devcontainers/features/github-cli:1": {} + }, + "forwardPorts": [3001], + "portsAttributes": { + "3001": { "label": "OPEN-ISP", "onAutoForward": "openPreview" } + }, + "postCreateCommand": "bash .devcontainer/setup.sh", + "postStartCommand": "bash .devcontainer/start.sh", + "customizations": { + "vscode": { "extensions": ["dbaeumer.vscode-eslint"] } + }, + "remoteUser": "node" +} diff --git a/.devcontainer/setup.sh b/.devcontainer/setup.sh new file mode 100755 index 0000000..42c840f --- /dev/null +++ b/.devcontainer/setup.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +# Setup otomatis OPEN-ISP di GitHub Codespaces +set -e +cd "$(dirname "$0")/.." + +echo "==> [OPEN-ISP] Menyiapkan dependensi sistem…" +sudo apt-get update -qq && sudo apt-get install -y -qq build-essential python3 >/dev/null 2>&1 || true + +echo "==> [OPEN-ISP] Install dependensi npm…" +npm ci --omit=dev || npm install --omit=dev + +echo "==> [OPEN-ISP] Siapkan file .env…" +[ -f .env ] || cp env-example.txt .env + +echo "==> [OPEN-ISP] Siapkan data demo…" +node scripts/seed-demo.js || true + +echo "==> [OPEN-ISP] Selesai. Aplikasi akan dijalankan otomatis di port 3001." diff --git a/.devcontainer/start.sh b/.devcontainer/start.sh new file mode 100755 index 0000000..f613915 --- /dev/null +++ b/.devcontainer/start.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# Jalankan OPEN-ISP otomatis saat Codespace aktif +cd "$(dirname "$0")/.." +if pgrep -f "node app-customer.js" >/dev/null 2>&1; then + echo "==> [OPEN-ISP] Aplikasi sudah berjalan." + exit 0 +fi +echo "==> [OPEN-ISP] Menjalankan aplikasi di background (port 3001)…" +nohup node app-customer.js > /tmp/open-isp.log 2>&1 & +sleep 3 +echo "==> [OPEN-ISP] Log: /tmp/open-isp.log" diff --git a/README.md b/README.md index 04bd8a9..f4d085e 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ --- -**OPEN-ISP** adalah aplikasi billing dan manajemen ISP yang lengkap: tagihan otomatis, isolir otomatis, pembayaran (QRIS/webhook), perangkat MikroTik (PPPoE & hotspot), OLT PON multi-vendor, TR-069 (GenieACS/ACS), RADIUS, peta jaringan, notifikasi WhatsApp & Telegram, hingga portal self-service pelanggan dalam satu platform — semuanya berjalan mandiri (self-hosted) dengan SQLite sebagai basis data. **NOTE:** dibuat dan ditulis oleh AI ([Deepseek](https://github.com/deepseek-ai)), on [opencode](https://github.com/anomalyco/opencode)). +**OPEN-ISP** adalah aplikasi billing dan manajemen ISP yang lengkap: tagihan otomatis, isolir otomatis, pembayaran (QRIS/webhook), perangkat MikroTik (PPPoE & hotspot), OLT PON multi-vendor, TR-069 (GenieACS/ACS), RADIUS, peta jaringan, notifikasi WhatsApp & Telegram, hingga portal self-service pelanggan dalam satu platform — semuanya berjalan mandiri (self-hosted) dengan SQLite sebagai basis data. **NOTE:** dibuat dan ditulis oleh AI ([Deepseek](https://github.com/deepseek-ai)), on [opencode](https://github.com/anomalyco/opencode). ## Fitur @@ -31,7 +31,7 @@ - **RADIUS** — server PAP/CHAP untuk PPPoE/hotspot, secret per-NAS. - **Peta & GIS** — Leaflet + OpenStreetMap/satelit: marker pelanggan & ODP, jalur kabel, trafik PPPoE real-time; peta teknisi + rute Google Maps. - **Portal & peran** — admin (super admin/admin/kasir), teknisi (tiket, input pelanggan dari lapangan), kolektor (cek tagihan & pengajuan pembayaran), dan **PWA pelanggan** (tagihan, bayar, tiket, SSID/password, speed test, mode offline). -- **Notifikasi** — WhatsApp (gateway [Gowa](https://github.com/aldinokemal/go-whatsapp-web-multidevice)): broadcast, pengingat otomatis, struk pembayaran; bot Telegram admin (opsional). +- **Notifikasi** — WhatsApp (gateway [Gowa](https://github.com/aldinokemal/go-whatsapp-web-multidevice): broadcast, pengingat otomatis, struk pembayaran; bot Telegram admin (opsional). - **Speed test** — server internal maupun eksternal (preset provider diatur admin), mode embed/tab, tombol Muat Ulang & Bersihkan Cache. - **PWA** — dapat dipasang di HP, offline, pembaruan otomatis (bar "versi baru tersedia"). - **Bilingual** — antarmuka Indonesia / English (bisa diganti dari UI). @@ -58,6 +58,12 @@ Selengkapnya: **[Wiki OPEN-ISP](https://github.com/oxpoe/open-isp/wiki)**. ## Mulai Cepat +[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/oxpoe/open-isp) + +### GitHub Codespaces (demo instan) + +Klik badge di atas untuk membuka **Codespaces** — dependensi & data demo disiapkan otomatis, dan aplikasi langsung berjalan di **port 3001**. Login: `admin` / `demo-isp123`. + ### Docker (disarankan) ```bash