Arsitektur Sistem
Gambaran umum komponen dan interaksi antar layanan.
Komponen Utama
Panel (Go / chi)
Server pusat. Terima heartbeat & event dari agent, simpan ke PostgreSQL, relay ke browser via WebSocket,
kirim notifikasi ke Telegram/Discord. Berjalan sebagai single binary ~18MB dengan frontend ter-embed (go:embed).
Diakses via Cloudflare Tunnel.
Agent-Go (Go binary)
Diinstall di server yang dimonitor. Single binary, zero dependency, full-featured (Tier 0). Menjalankan 11+ modul secara paralel dalam satu proses: watcher, heartbeat, terminal PTY, tunnel, discovery, integrity, updater, filemanager, dan lain-lain.
Database (PostgreSQL 16)
Menyimpan semua data: events (JSONB payload), alerts (dedup_key), servers, commands, heartbeats, integrity baselines, sysinfo, discovery, notification channels, access logs.
Frontend (Vanilla JS SPA)
Dark terminal-style single-page app. JS per halaman (app.js, servers.js, terminal.js, filemanager.js, dll).
Tidak ada framework — murni vanilla JS + CSS. Ter-embed di binary panel via go:embed,
bisa override dengan env FRONTEND_DIR.
Topologi Jaringan
Browser (xterm.js / SPA)
│ HTTPS
▼
Cloudflare Edge (CDN + DDoS)
│ CF Tunnel
▼
Panel :8000 (Go / chi)
│ TCP
▼
PostgreSQL 16 (localhost:5432)
─── WebSocket Terminal ───────────────────────────
Browser ──/ws/shell/{serverID}──► Panel ──/ws/agent/terminal──► Agent PTY ──► /bin/bash
─── Agent → Panel (HTTP API) ───────────────────────
Agent ──HTTPS──► CF Worker (primary proxy) ──► Panel /api/agent/*
└──► Fallback direct ──────────────► Panel /api/agent/*
Jalur Koneksi
| Jalur | Protokol | Tujuan |
|-------|----------|--------|
| Browser → Panel | HTTPS via CF Tunnel | API + SPA |
| Browser → Terminal | WebSocket /ws/shell/{id} | PTY relay |
| Agent → Panel | HTTPS via CF Worker | Events, heartbeat |
| Panel → Agent | WebSocket /ws/agent/terminal | Command push |
| Agent PTY → bash | Unix PTY | Shell process |
Panel bertindak sebagai relay hub: browser↔panel↔agent. Tidak ada koneksi langsung browser ke agent.