5.1 KiB
5.1 KiB
Ini adalah pembagian 3 Repositori Terpisah untuk sistem NexusGuard. Dengan pembagian ini, divisi Backend, Frontend/Mobile, dan Embedded/System dapat bekerja secara paralel tanpa saling tunggu (decoupled).
Repo 1: nexus-server-core (Divisi Backend & Network)
Repositori ini adalah otak sistem yang mengelola database, API, dan perintah firewall (nftables).
- Tech Stack: Go (Gin), PostgreSQL, Redis,
google/nftables. - Tugas Utama:
- Menyediakan API untuk Dashboard dan Agent.
- Mengelola IPAM (pembagian IP 10.x.x.x).
- Network Enforcer: Manipulasi
nftables(sets & vmaps) untuk isolasi Zero Trust. - STUN Signaling: Koordinasi IP publik untuk UDP Hole Punching.
- Struktur Folder:
├── api/ # REST API Handlers ├── internal/ │ ├── firewall/ # nftables Controller logic │ ├── coordinator/ # STUN & P2P Logic │ └── models/ # GORM Models (User, Device, Rule) ├── docs/ │ └── API_SPEC.md # KONTRAK API (Penting untuk migrasi ke PHP) └── main.go
Repo 2: nexus-dashboard-ui (Divisi Frontend & Mobile)
Repositori ini adalah antarmuka untuk pengguna akhir dan administrator.
- Tech Stack: Vue.js 3, Vite, Pinia, Capacitor.js.
- Tugas Utama:
- Manajemen akun user dan registrasi perangkat.
- Visualisasi status perangkat (Online/Offline) secara real-time.
- Konfigurasi Firewall (Allow Internet, Port Forwarding, Peer Access).
- Build ke Web dan Android APK (via Capacitor).
- Struktur Folder:
├── src/ │ ├── api/ # Service untuk konsumsi API Repo 1 │ ├── views/ # Halaman Management & Monitoring │ └── store/ # State management (auth, device list) ├── capacitor.config.ts # Config untuk Android/iOS ├── android/ # Project Native Android └── package.json
Repo 3: nexus-device-agent (Divisi System/Embedded)
Repositori ini adalah aplikasi yang akan diinstal di perangkat (CCTV, Server, IoT).
- Tech Stack: Go (Static Binary),
wireguard-go(library),crypto/aes. - Tugas Utama:
- Stealth Tunneling: Menjalankan WireGuard di dalam memori tanpa file config.
- Hardware Fingerprinting: Mengunci perangkat berdasarkan HWID unik.
- Key Rotation: Melakukan rotasi kunci otomatis sesuai instruksi Repo 1.
- Auto-Healing: Mencoba reconnect otomatis jika jalur UDP terblokir.
- Struktur Folder:
├── internal/ │ ├── tunnel/ # In-memory WireGuard engine │ ├── identity/ # HWID & Registration logic │ └── crypto/ # AES Decryption untuk config API ├── agent.md # Dokumentasi panduan untuk AI Agent dev └── main.go # Nama binary disamarkan saat build
Skema Komunikasi Antar Repo
-
Dashboard (Repo 2) ↔ Server Core (Repo 1):
- Menggunakan REST API dengan JWT Authentication.
- Dashboard mengirim request "Buka Port", Server Core mengupdate
nftables.
-
Device Agent (Repo 3) ↔ Server Core (Repo 1):
- Menggunakan REST API dengan AES-Encrypted Payload.
- Agent mengirim HWID, Server Core mengirim balik konfigurasi WireGuard yang sudah di-encrypt.
-
Deployment (Gitea):
- Ketiga repo di-host di Gitea.
- Repo 3 memiliki CI/CD yang mem-publish binary ke Gitea Releases.
- Installer script di perangkat mendownload binary dari Gitea menggunakan
X-Token-Auth.
Master Prompt untuk Inisialisasi 3 Repo
Jika Anda memberikan instruksi ke AI untuk mulai membuat kode, gunakan prompt ini:
# Context: NexusGuard SD-WAN System
Please generate the initial boilerplate for 3 separate repositories:
1. REPO_SERVER: Go-Gin project. Focus on PostgreSQL schema for multi-tenant devices and firewall rules. Implement a service that manages 'nftables' sets for user isolation. Include a migration-ready documentation (docs/API_SPEC.md).
2. REPO_UI: Vue.js 3 + Capacitor project. Focus on the API service layer to communicate with REPO_SERVER. Create a dashboard for device monitoring and a firewall rule editor.
3. REPO_AGENT: Go project. Focus on 'wireguard-go' library integration (no config files). Implement HWID collection and an encrypted provisioning client that fetches keys from REPO_SERVER.
# Constraints:
- Use Zero Trust Isolation (Default DROP).
- Support UDP Hole Punching.
- Implement 30-day Key Rotation logic.
- Agent must be stealth (no standard WireGuard file traces).
Review Akhir Divisi:
- Divisi Backend bisa fokus pada performa kernel dan database.
- Divisi Frontend bisa fokus pada UX yang memudahkan user mengatur jaringan yang kompleks.
- Divisi System bisa fokus pada kompatibilitas agent di berbagai OS (Linux ARM/x86).
Apakah pembagian 3 repositori ini sudah sesuai dengan struktur tim Anda?