diff --git a/README.md b/README.md index ff387bf..b2c8586 100644 --- a/README.md +++ b/README.md @@ -253,73 +253,78 @@ TimescaleDB Policies: ## Installation (Agent / OPNsense) +Der Agent wird als OPNsense-Plugin installiert — mit WebGUI-Konfiguration unter **Services > RMM Agent**. + ### 1. Agent bauen ```bash make agent # Erzeugt build/rmm-agent (freebsd/amd64) ``` -### 2. Agent konfigurieren (`agent/config.yaml`) - -```yaml -backend_url: "https://BACKEND_IP:8443" -api_key: "SICHERER_API_KEY" -interval_seconds: 60 -agent_name: "opnsense-fw01" -insecure: true # Self-signed Certs akzeptieren (false bei CA-Certs) -``` - -### 3. Agent deployen +### 2. Plugin installieren ```bash -# Verzeichnis anlegen + Binary + Config kopieren -ssh root@OPNSENSE "mkdir -p /usr/local/rmm" -scp build/rmm-agent root@OPNSENSE:/usr/local/rmm/rmm-agent -scp agent/config.yaml root@OPNSENSE:/usr/local/rmm/config.yaml +# Binary + Installer auf die Firewall kopieren +scp build/rmm-agent root@OPNSENSE:/tmp/ +scp opnsense-plugin/install.sh root@OPNSENSE:/tmp/ -# Starten via FreeBSD daemon -ssh root@OPNSENSE 'daemon -f -p /var/run/rmm-agent.pid -o /usr/local/rmm/rmm-agent.log \ - /usr/local/rmm/rmm-agent --config /usr/local/rmm/config.yaml --insecure' +# Installer ausfuehren +ssh root@OPNSENSE '/bin/sh /tmp/install.sh' ``` -Oder per Makefile: `make deploy-agent` +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 -### 4. Autostart einrichten (rc.d) +### 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. + +### 4. Verifizieren ```bash -ssh root@OPNSENSE 'cat > /usr/local/etc/rc.d/rmm_agent << RCEOF -#!/bin/sh -# PROVIDE: rmm_agent -# REQUIRE: NETWORKING -# KEYWORD: shutdown +# Status in der WebGUI: Badge zeigt "Running" -. /etc/rc.subr - -name="rmm_agent" -rcvar="rmm_agent_enable" -pidfile="/var/run/${name}.pid" -command="/usr/local/rmm/rmm-agent" -command_args="--config /usr/local/rmm/config.yaml --insecure &" - -load_rc_config $name -run_rc_command "$1" -RCEOF -chmod +x /usr/local/etc/rc.d/rmm_agent' - -ssh root@OPNSENSE 'sysrc rmm_agent_enable="YES" && service rmm_agent restart' -``` - -### 5. Verifizieren - -```bash -# Agent-Log pruefen -ssh root@OPNSENSE "tail -20 /usr/local/rmm/rmm-agent.log" +# 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 ``` -**Wichtig**: Agent-ID wird persistent in `/usr/local/rmm/agent_id` gespeichert. Bei Neuinstallation bleibt die ID erhalten. +### Agent-Update + +Bei neuer Agent-Version: + +```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). + +### 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` ## API