No results
1
Architecture
Claude edited this page 2026-06-29 21:37:15 +00:00
Table of Contents
Architecture
Datenfluss
Browser (:8080, intern/VPN)
│ REST /api/* · /auth/* · WebSocket /ws/terminal/*
▼
FastAPI Backend (:8765)
├─ REST API server/routers/*
├─ WebSocket server/websocket/agent_ws.py (/ws/agent)
├─ Scheduler server/scheduler.py (asyncio, periodisch)
├─ Tunneling server/tunneling/ (+ guaclite)
└─ PostgreSQL via SQLAlchemy async
▲
│ WebSocket (Agent verbindet ausgehend zum Server)
Proxmox-Host: theprox-node-agent (Rust, root)
├─ pvesh / qm / pct → Proxmox API
├─ PTY-Terminals direkt auf Host/VM
└─ TCP :9100 ◄── VM-Guest-Agenten
▲
│ TCP JSON-Lines (Guest verbindet ausgehend zum Host)
VM Guest-Agent (Rust, in der VM)
└─ Metrics (15s) + Scans (5min)
Verbindungsrichtungen (wichtig)
- Host-Agent → Backend: ausgehend. Proxmox-Host braucht keinen offenen
Inbound-Port; nur Erreichbarkeit von
:8765am Server. - VM-Guest → Host-Agent: ausgehend (TCP
:9100am Host). - Browser → Backend: nur intern/VPN (
:8080).
nginx (dual)
server/nginx/public.conf—:8765, leitet nur/ws/agent(+ Install- Endpunkte) weiter. Minimale Angriffsfläche.server/nginx/intern.conf—:8080, WebUI + voll API.
Command-Pattern
server/websocket/manager.py (AgentManager) hält pro Node eine WS-Verbindung
und nutzt ein Future-Pattern: REST-Handler ruft send_command(node, …),
wartet auf das per Request-ID korrelierte Agent-Result. Agent-ausgelöste
Aktionen werden in CommandLog protokolliert (sichtbar in Node-Logs/Audit).