# Agent — Installation & Konfiguration Der RMM-Agent laeuft auf OPNsense (FreeBSD) und wird als OPNsense-Plugin mit WebGUI-Konfiguration installiert. ## Komponenten - **Collectors**: Hardware, CPU, Memory, Disk, Network, Services, WireGuard, DHCP, Routing, Gateways, Zertifikate, Plugins, Updates, Cron - **WebSocket Client**: Persistente Verbindung zum Backend, automatisches Reconnect mit Backoff - **Command Handler**: Remote-Befehlsausfuehrung, Tunnel-Connect/Disconnect - **Tunnel Manager**: Session-basierte TCP-Verbindungen zu lokalen Diensten ## 1. Agent bauen ```bash make agent # Erzeugt build/rmm-agent (freebsd/amd64) ``` ## 2. Plugin installieren ```bash # Binary + Installer auf die Firewall kopieren scp build/rmm-agent root@OPNSENSE:/tmp/ scp opnsense-plugin/install.sh root@OPNSENSE:/tmp/ # Installer ausfuehren ssh root@OPNSENSE '/bin/sh /tmp/install.sh' ``` Der Installer richtet alles ein: - Binary nach `/usr/local/rmm/rmm-agent` - rc.d Service (`/usr/local/etc/rc.d/rmm_agent`) - OPNsense MVC Plugin (Model, Controller, View) - configd Actions (start/stop/restart/status/reconfigure) - Plugin-Hook fuer Service-Integration - Setup-Script das Config aus dem Model generiert ## 3. WebGUI konfigurieren 1. OPNsense WebGUI oeffnen 2. **Services > RMM Agent** 3. Felder ausfuellen: - **Aktiviert**: Ankreuzen - **Backend URL**: `https://BACKEND_IP:8443` - **API Key**: Backend API-Key eintragen - **Agent Name**: Optional (Standard: Hostname) - **Heartbeat Intervall**: 60 (Sekunden) - **Self-Signed Zertifikate**: Ankreuzen bei self-signed Backend-Certs 4. **Speichern & Anwenden** klicken Der Agent startet automatisch und meldet sich am Backend an. ### OPNsense Plugin WebGUI Fix (v1.0.3) Der `SettingsController` wurde gefixt: - **Config-Parsing**: Korrektes Parsen von `rmmagent[general][KEY]` Formular-Feldern (OPNsense MVC-Konvention) - **Initialer config.xml Eintrag**: Beim ersten Speichern wird automatisch der `` Knoten in der `config.xml` angelegt ## 4. Verifizieren ```bash # Status in der WebGUI: Badge zeigt "Running" # Oder per SSH: ssh root@OPNSENSE 'service rmm_agent status' # Auf dem Backend: Agent sollte erscheinen curl -sk -H "X-API-Key: DEIN_API_KEY" https://BACKEND_IP:8443/api/v1/agents ``` ## Pre-Registration Firewalls koennen vorab im System registriert werden, bevor der Agent installiert wird: 1. Im Frontend auf "Firewall hinzufuegen" klicken (oder `POST /api/v1/agents`) 2. Name und optionalen Kunden angeben 3. Agent wird mit `hostname="(ausstehend)"` angelegt 4. Bei der eigentlichen Agent-Registration wird automatisch nach Name gematcht (`GetAgentByName`) 5. Der pre-registrierte Eintrag wird mit den echten Agent-Daten aktualisiert ## Agent-Update (via Updater — empfohlen) Der **rmm-updater** ist ein separater Daemon, der auf jeder Firewall neben dem Agent laeuft. Er prueft alle 60 Sekunden ob ein Update ansteht und fuehrt es automatisch durch. **Flow:** 1. Neue Agent-Binary im Frontend hochladen (Firmware-Seite) 2. Update-Button bei einzelnem Agent oder "Alle updaten" klicken 3. Updater erkennt den Flag, laedt die Binary vom Backend, stoppt Agent, ersetzt Binary, startet Agent 4. Flag wird automatisch zurueckgesetzt **Technische Details:** - Separates Go-Binary (`rmm-updater`), laeuft als `rmm_updater` rc.d Service - Liest die gleiche `config.yaml` wie der Agent (Backend-URL, API-Key) - Download ueber `GET /api/v1/firmware/download?platform=freebsd` - SHA256-Verifizierung vor Ersetzung - Automatisches Rollback bei fehlgeschlagenem Agent-Start - Backup der alten Binary als `.bak` waehrend des Updates - Logs: `/var/log/rmm-updater.log` **Manuelles Update (Fallback):** ```bash make agent scp build/rmm-agent root@OPNSENSE:/tmp/ ssh root@OPNSENSE '/bin/sh -c "service rmm_agent stop; cp /tmp/rmm-agent /usr/local/rmm/rmm-agent; chmod +x /usr/local/rmm/rmm-agent; service rmm_agent start"' ``` Oder Plugin komplett neu installieren (`install.sh` ist idempotent — installiert Agent + Updater). ## Service-Filter (v1.0.3) Boot- und Init-Scripts werden nicht mehr in der Dienste-Liste angezeigt: - **Gefiltert**: `bgfsck`, `cleanvar`, `dmesg`, `hostid`, `ldconfig`, `motd`, `newsyslog`, `ntpd`, `resolv`, `syslogd`, `var` und andere System-Boot-Scripts - **Angezeigt**: Nur echte OPNsense-Dienste (OpenVPN, Unbound, DHCPd, WireGuard, etc.) - `pluginctl` wird mit vollem Pfad `/usr/local/sbin/pluginctl` aufgerufen (FreeBSD-Kompatibilitaet) ## Hinweise - **Agent-ID** wird persistent in `/usr/local/rmm/agent_id` gespeichert — ueberlebt Neuinstallationen - **Config** wird bei "Speichern & Anwenden" aus dem OPNsense-Model nach `/usr/local/rmm/config.yaml` generiert - **Logs**: `/var/log/rmm-agent.log` - **PID-File**: `/var/run/rmm_agent.pid` - Agent braucht **root** auf OPNsense (fuer Hardware-/Service-Daten) - OPNsense WebGUI typischerweise auf **Port 4444** (nicht 443)