1 Agents Übersicht
Claude edited this page 2026-06-29 21:38:23 +00:00

Agents (Übersicht)

theProx kennt drei Agenten-Typen. Der Node-Agent läuft auf dem Proxmox-Host und spricht direkt mit dem Backend; die beiden VM-Guest-Agenten laufen innerhalb der Gäste und melden sich beim Node-Agent ihres Hosts.

Backend ──WSS──┐
               └── Node-Agent (Host, Rust)  ── TCP :9100 ──┬── VM-Guest-Agent (Linux/FreeBSD, Rust)
                    │  └─ HTTP :9101 (Binary-Bootstrap)    └── VM-Guest-Agent (Windows, Rust)

Die drei Agenten

Agent Crate / Version Läuft auf Doku
Node-Agent theprox-node-agent Proxmox-Host (systemd, root) Node-Agent
VM-Guest-Agent theprox-vm-agent 1.6.1 Linux + FreeBSD/pfSense (systemd) VM-Guest-Agent (Linux & FreeBSD/pfSense)
Windows-VM-Guest-Agent theprox-vm-agent-windows 1.9.0 Windows (Dienst) Windows-VM-Guest-Agent

Gemeinsames Modell der Guest-Agenten

Beide Guest-Agenten sind eigenständige Rust-Crates, teilen sich aber Protokoll und Ablauf:

  • Verbindung: ausgehender TCP-Connect zum Node-Agent des eigenen Hosts (Default-Port 9100) — nicht zum Backend. Der Node-Agent relayt die Nachrichten über seine WebSocket-Verbindung ans Backend.
  • Protokoll: zeilenweise JSON (newline-delimited) über die TCP-Verbindung.
  • Enrollment: Beim Connect sendet der Agent {token, vmid, …}; das auth_ok kann ein Scan-Intervall überschreiben (scan_interval_seconds). Die Tokens werden vom Backend beim Node-Agent-Auth gebündelt registriert.
  • Konfiguration: lokale agent.conf mit proxy_ip, proxy_port (9100), token, vmid sowie optionalen Intervallen (metrics_interval, scan_interval, update_interval). Ohne proxy_ip/token/vmid startet der Agent nicht.
  • Drei Loops: Metriken (CPU/RAM/Netz, je 1-s-Doppelmessung), Logs (Tail definierter Quellen mit Cursor-Persistenz), Scan (OS/Kernel/Updates/Docker/Disk/Netzwerk).
  • Commands: Update ausführen, Update-Preview, Self-Update (lädt neues Binary, installiert mit Cross-Device-Fallback), Log-Tail steuern.
  • Bootstrap: Der Node-Agent stellt auf :9101 einen HTTP-Server bereit, über den Gäste ihr Agent-Binary ohne Backend-Zugriff beziehen.

Wie beim Node-Agent existieren auch hier ältere Python-Varianten (VM-Guest-Agent/vm_agent.py, VM-Guest-Agent/pfsense_agent.py) parallel zur kanonischen Rust-Implementierung. Konsolidierung analog zu #2.