# BackOne DPI β€” Deep Package Inspection Dashboard Produk BackOne oleh **PT. Data Bisnis Solusi** β€” Dashboard monitoring jaringan berbasis Netify DPI. --- ## πŸ—οΈ Arsitektur 2 Container Groups ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ CONTAINER GROUP 1: INFRA β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ backone_proxy β”‚ β”‚backone_mongoβ”‚ β”‚ β”‚ β”‚ (port 4000) │──│ (port 27017)β”‚ β”‚ β”‚ β”‚ Netify API β†’ β”‚ β”‚ MongoDB β”‚ β”‚ β”‚ β”‚ MongoDB writer β”‚ β”‚ Database β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ Network: backone-infra β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ MongoDB shared β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ CONTAINER GROUP 2: APP β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚backone_backend β”‚ β”‚backone_frontβ”‚ β”‚ β”‚ β”‚ (port 3001) β”‚ β”‚ (port 3000) β”‚ β”‚ β”‚ β”‚ REST API │──│ Next.js β”‚ β”‚ β”‚ β”‚ MongoDB reader β”‚ β”‚ Dashboard β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ Network: backone-app β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` **Prinsip:** - Proxy **MENULIS** ke MongoDB β†’ Backend **MEMBACA** dari MongoDB - Backend tidak pernah memanggil Netify API secara langsung - Setiap data di-tag dengan `agent_uuid` untuk isolasi multi-tenant --- ## πŸ“‘ Proxy β€” 2 Mode Pengambilan Data Proxy server (port 4000) mendukung 2 mode yang dikontrol via environment variable: ### Mode 1: Semua Network Agent (Admin BackOne) ```env # .env.local PROXY_COLLECT_MODE=all ``` Proxy akan mengambil data dari **semua Network Agent yang terdaftar** di Netify, lalu menyimpan setiap record dengan tag `agent_uuid` masing-masing. Cocok untuk tampilan admin BackOne yang ingin melihat semua data. ### Mode 2: Agent Spesifik (Per-Client/Tenant) ```env # .env.local PROXY_COLLECT_MODE=agent PROXY_AGENT_UUID=2F-TF-1D-GK # UUID Network Agent CPI Balaraja ``` Proxy hanya mengambil data dari **satu Network Agent spesifik** (berdasarkan UUID). Data agent lain tidak pernah masuk ke database. Cocok untuk deployment di sisi client (Pihak A, B, C) agar mereka hanya punya data milik mereka sendiri. ### Contoh Multi-Tenant Deployment | Deployment | PROXY_COLLECT_MODE | PROXY_AGENT_UUID | Data yang disimpan | |---|---|---|---| | Kantor BackOne (Admin) | `all` | _(kosong)_ | Semua agent | | Pihak A | `agent` | `UUID-AGENT-A` | Hanya data Pihak A | | Pihak B | `agent` | `UUID-AGENT-B` | Hanya data Pihak B | | Pihak C | `agent` | `UUID-AGENT-C` | Hanya data Pihak C | --- ## πŸ”Œ Proxy REST API (Port 4000) | Method | Endpoint | Deskripsi | |---|---|---| | GET | `/health` | Health check (status MongoDB + service) | | GET | `/status` | Status scheduler, mode, last run result | | GET | `/agents` | List semua agent UUID yang ada di MongoDB | | POST | `/collect/all` | Trigger manual β€” kumpulkan semua agent | | POST | `/collect/:uuid` | Trigger manual β€” kumpulkan agent spesifik | --- ## πŸš€ Cara Menjalankan ### Development (Localhost) ```bash # 1. Pastikan MongoDB berjalan di port 27017 # 2. Edit .env.local sesuai kebutuhan # Terminal 1 β€” Proxy Server cd proxy npm install npm start # berjalan di port 4000 # Terminal 2 β€” Backend API cd backend npm install npm start # berjalan di port 3001 # Terminal 3 β€” Frontend npm install npm run dev # berjalan di port 3000 ``` ### Production (Docker Compose) ```bash # Mode default (semua agent): docker-compose up -d # Mode agent spesifik (ubah .env.local dulu): # PROXY_COLLECT_MODE=agent # PROXY_AGENT_UUID=UUID_AGENT_ANDA docker-compose up -d # Cek status container: docker-compose ps # Test: curl http://localhost:4000/health # Proxy curl http://localhost:3001/api/health # Backend curl http://localhost:4000/agents # List Agent UUIDs ``` --- ## πŸ“Š Data yang Disimpan per Network Agent Setiap Network Agent menyimpan data berikut di MongoDB (semua ter-tag `agent_uuid`): | Collection | Data | |---|---| | `summaries` | Bandwidth total (download/upload), total devices, active flows | | `appstats` | Top aplikasi per bandwidth (IP address, download, upload, flows) | | `devicestats` | Perangkat ditemukan (IP, MAC address, device type, OS, manufacturer, last seen) | | `flows` | Network flows aktif (src_ip, dst_ip, dst_port, protocol, domain, download, upload) | | `threats` | Ancaman cyber terdeteksi (threat_type, severity, src_ip, dst_ip) | --- ## πŸ” Role & Akses | Role | Deskripsi | Data yang dilihat | |---|---|---| | `SUPER_ADMIN` | Admin BackOne | Semua data semua agent | | `AGENT_VIEWER` | Client/Tenant | Hanya data `agent_uuid` milik mereka | Login pertama kali: **admin / admin** (ganti segera!) --- ## πŸ§ͺ Menjalankan TDD Tests ```bash # Architecture verification (48 tests) node test/architecture_test.js # Final deliverable review (63 tests) node test/final_review.js ```