2026-09-11 13:42:29 +07:00
2026-09-02 16:25:07 +07:00
2026-09-11 13:42:29 +07:00

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.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.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)

# 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)

# 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

# Architecture verification (48 tests)
node test/architecture_test.js

# Final deliverable review (63 tests)
node test/final_review.js
S
Description
No description provided
Readme
46 MiB
0 Stars 2 Watchers 1 Forks
Languages
TypeScript 72.4%
JavaScript 26.7%
CSS 0.6%
Shell 0.2%
Dockerfile 0.1%