RMM Updater
Separater Update-Daemon für RMM-Agents. Läuft neben dem Agent und übernimmt OTA-Updates (Over-the-Air) ohne manuelle Eingriffe.
Cross-Platform: Ein Quellcode, zwei Build-Targets — FreeBSD (OPNsense) und Linux.
Die Plattform wird zur Laufzeit per runtime.GOOS erkannt.
Wie es funktioniert
- Backend setzt
update_requested = truefür einen Agent (manuell oder via Frontend) - Updater pollt alle 60s:
GET /api/v1/firmware?platform=<freebsd|linux> - Wenn neue Version verfügbar: ZIP-Bundle herunterladen + SHA256 prüfen
- Agent stoppen → Binary ersetzen → Agent starten
- Bei Fehler: automatischer Rollback auf
.bak-Backup update_requestedwird zurückgesetzt
Plattform-spezifische Pfade
| FreeBSD (OPNsense) | Linux | |
|---|---|---|
| Agent-Binary | /usr/local/rmm/rmm-agent |
/usr/local/bin/rmm-agent |
| Updater-Binary | /usr/local/rmm/rmm-updater |
/usr/local/bin/rmm-updater |
| Config | /usr/local/etc/rmm-agent/config.yaml |
/etc/rmm/config.yaml |
| Service stoppen | service rmm-agent stop |
systemctl stop rmm-agent |
| Service starten | service rmm-agent start |
systemctl start rmm-agent |
| Logs | /var/log/rmm-updater.log |
journalctl -u rmm-updater |
| ZIP-Name Agent | rmm-agent |
rmm-agent-linux |
| ZIP-Name Updater | rmm-updater-freebsd |
rmm-updater-linux |
Konfiguration
Liest dieselbe config.yaml wie der Agent — keine eigene Konfigurationsdatei nötig.
backend_url: "https://BACKEND_IP:8443"
api_key: "DEIN_API_KEY"
insecure: true
Bauen
# Auf dem Build-Server
cd /opt/rmm
# FreeBSD
make updater-freebsd VERSION=1.0.3
# → build/rmm-updater-freebsd
# Linux
make updater-linux VERSION=1.0.3
# → build/rmm-updater-linux
# Beides + Agent in einem ZIP (empfohlen)
make release VERSION=1.0.3
# → build/release/rmm-freebsd-1.0.3.zip (rmm-agent + rmm-updater-freebsd + install.sh)
# → build/release/rmm-linux-1.0.3.zip (rmm-agent-linux + rmm-updater-linux + install.sh)
Service-Management
FreeBSD (OPNsense)
service rmm_updater status
service rmm_updater start | stop | restart
tail -f /var/log/rmm-updater.log
Linux
systemctl status rmm-updater
systemctl start | stop | restart rmm-updater
journalctl -u rmm-updater -f
Update manuell auslösen (API)
# Einzelnen Agent updaten
curl -sk -X POST "https://BACKEND_IP:8443/api/v1/agents/AGENT_ID/request-update" \
-H "X-API-Key: DEIN_API_KEY"
# Alle Agents updaten
curl -sk -X POST "https://BACKEND_IP:8443/api/v1/agents/request-update-all" \
-H "X-API-Key: DEIN_API_KEY"