104 Commits

Author SHA1 Message Date
cynfo3000
9bebf85a6d docs: BACKEND.md vollständiges DB-Schema mit allen Feldern + jwt_secret in config 2026-03-06 09:26:35 +01:00
cynfo3000
48ac353d28 Initial commit — cynfo RMM (clean history, no secrets) 2026-03-06 09:18:45 +01:00
cynfo3000
d4b6ca86e5 feat: Task Health Check + customer_number in webhook payload
- Task model: CustomerNumber field (K-Nummer aus customers.number)
- DB: taskSelectCols joined c.number, scanTask scans CustomerNumber
- Hub: WaitForAgentOnline() polls until agent reconnects or timeout
- Scheduler: executeUpdateWithHealthCheck() waits for agent reconnect after update
  - health_check: {agent_online: bool, checked_at: RFC3339} in result
  - Status: completed_with_warning wenn Update OK aber Agent offline bleibt
- Frontend: Task-Tabelle zeigt Status-Badge (lauft/fehler/warnung/abgebr.)
2026-03-05 10:53:08 +01:00
cynfo3000
721fd5008f Feature: Recurring jobs with professional scheduling dialog 2026-03-05 09:39:41 +01:00
cynfo3000
f4a28463b7 Feature: PF States, HAProxy + Caddy collectors and dashboard 2026-03-05 09:29:14 +01:00
cynfo3000
31369381d0 UI: Two-level navigation in AgentPanel (DATAZONE style) 2026-03-05 09:09:54 +01:00
cynfo3000
7908ae26a0 Feature: Task Scheduler - planned tasks with webhook support 2026-03-05 08:59:53 +01:00
cynfo3000
e1a3246075 UI: Installationsanleitung Button auf Firewalls und Proxmox Seiten 2026-03-05 07:35:59 +01:00
cynfo3000
5b503e6dba Feature: System settings in DB - configurable backend URLs and API key 2026-03-04 23:57:14 +01:00
cynfo3000
a64ee3b944 Config: config.js.example with placeholders, real config.js in .gitignore 2026-03-04 23:51:14 +01:00
cynfo3000
70b10a4291 Feature: Audit-Log - tracks all user actions with timestamps 2026-03-04 23:45:01 +01:00
cynfo3000
a60a91bff8 Fix: Security collector debug logging + backend rebuild needed 2026-03-04 23:35:21 +01:00
cynfo3000
772a1fd7a6 Fix: RFC 5424 syslog timestamp regex for audit log parsing 2026-03-04 23:28:17 +01:00
cynfo3000
06189a1468 Feature: Sicherheit Tab - SSH Login Audit + Session History 2026-03-04 23:16:18 +01:00
cynfo3000
57a5a3d3ee Add systemd service file + update install docs 2026-03-04 09:22:10 +01:00
cynfo3000
2f90697fd0 Fix: writeMux for OPNsense agent WebSocket - prevents concurrent write deadlock 2026-03-04 09:08:21 +01:00
cynfo3000
7f5bb07409 Security: remove hardcoded credentials, use placeholders and config 2026-03-04 08:17:37 +01:00
cynfo3000
240cbe37fa Proxmox: feinere Tabelle, konfigurierbare Spalten (localStorage), kompaktere MiniBar+VmBadge 2026-03-04 00:11:43 +01:00
cynfo3000
5d26158b53 WAN IP fix: IPv4 bevorzugen, PPPoE-Interfaces korrekt erkennen 2026-03-04 00:04:32 +01:00
cynfo3000
983ecf390c Clipboard fix: fallback fuer HTTP (non-secure) context, SSH copy-to-clipboard 2026-03-03 23:54:56 +01:00
cynfo3000
025840e9ba Firewalls: konfigurierbare Spalten (localStorage), kurze Versionsnr, WAN/LAN IP getrennt, Spalten-Zahnrad 2026-03-03 23:41:19 +01:00
cynfo3000
25a6cc2a1a Installer-Paket System: Backend speichert/served ZIP, Frontend Upload+Download, install.sh auto-download von Backend statt Git 2026-03-03 23:37:31 +01:00
cynfo3000
c387e56816 install.sh: add --no-verify-hostname for self-signed cert 2026-03-03 23:21:57 +01:00
cynfo3000
c45ec52a6b install.sh: fix fetch path /usr/bin/fetch 2026-03-03 23:20:49 +01:00
cynfo3000
eb52507c08 install.sh + frontend: use external URL dsbmueller.spdns.org:8443, configurable via RMM_BACKEND env 2026-03-03 23:17:58 +01:00
cynfo3000
5f37e28046 install.sh: auto-download from backend, InstallGuide component for frontend dialogs 2026-03-03 23:13:32 +01:00
cynfo3000
7f9fbd257f Linux/Proxmox Agent + Plattform-Updater + Proxmox Frontend
- agent-linux/: Kompletter Linux/Proxmox RMM Agent
  - Collectors: CPU, Memory, Disk, Network, Services, Updates, Proxmox (VMs, Container, Storage, ZFS), Backups
  - Backup Collector: Jobs nach Node gefiltert (Cluster-aware)
  - WebSocket: Tunnel-Support, writeMux fuer stabile Verbindungen
  - Systemd Service Template

- updater/: Plattform-unabhaengiger Updater (FreeBSD + Linux)
  - runtime.GOOS erkennt Plattform automatisch
  - FreeBSD: /usr/local/rmm/, service rmm_agent
  - Linux: /usr/local/bin/, /etc/rmm/, systemctl rmm-agent
  - Firmware-Download mit ?platform= Parameter

- frontend/: Proxmox-Bereich
  - ProxmoxServers.jsx: Eigene Seite fuer PVE Server mit VM/CT Counts
  - ProxmoxPanel.jsx: Detail-Panel mit Uebersicht, VMs, Container, Storage, ZFS, Tunnel, Dienste, Updates, Backups
  - Agents.jsx: Filtert Linux-Agents raus (nur OPNsense)
  - Sidebar: Proxmox Navigationspunkt
  - Installationsanleitung mit rmm-agent-linux + rmm-updater-linux

- backend: Platform-Feld fuer Agents, Firmware multi-platform
2026-03-01 22:03:18 +01:00
cynfo3000
c114df215a Fix: SettingsController in install.sh aktualisiert (rmmagent[general] Parsing) 2026-03-01 01:37:35 +01:00
christian
77ec200b42 Docs aufgesplittet: README + docs/BACKEND + AGENT + FRONTEND + API + FIRMWARE 2026-03-01 01:23:21 +01:00
christian
fb5930051e Plugin WebGUI fix, Pre-Registration, Service-Filter, Business-Lizenz, Firmware-Mgmt 2026-03-01 01:18:47 +01:00
cynfo3000
e74cdce0ba Agent-Updater, Multi-Plattform Firmware, Frontend Firmware-Seite, Agent-Tab, Zertifikate-Redesign
Updater:
- Separater Go-Daemon (rmm-updater) als eigener rc.d Service
- Pollt alle 60s: Firmware vorhanden + Hash unterschiedlich + Flag gesetzt
- Download -> SHA256 Verify -> Agent Stop -> Replace -> Agent Start
- Automatisches Rollback bei Fehler
- Deployed und getestet auf allen 3 Firewalls (.1, .19, .33)

Backend:
- Firmware-DB multi-plattform (freebsd/linux/windows)
- update_requested Flag pro Agent in agents Tabelle
- Heartbeat-Response liefert update_available wenn Flag gesetzt
- Neue Endpoints: request-update, request-update-all, firmware/download
- Auth: JWT + CombinedAuth Middleware (API-Key OR JWT)
- Customers CRUD + Agent-Zuordnung
- Users CRUD + Passwort-Aenderung

Frontend:
- Firmware-Seite: Multi-Plattform Upload, Agent-Liste mit Update-Trigger
- Agent-Tab im AgentPanel: Update-Button, nuetzliche Befehle, Agent-Info
- Zertifikate-Tab redesigned: Karten-Layout mit Restlaufzeit und Farbbalken
- Sidebar: Firmware-Eintrag hinzugefuegt

Plugin:
- install.sh erweitert: Installiert Agent + Updater + rc.d Services
- rmm_updater rc.d Service

README:
- Architektur-Diagramm erweitert (Frontend + Updater)
- Auth, Customers, Users, Firmware API dokumentiert
- Updater-Flow dokumentiert
- Frontend-Seiten und Deploy beschrieben
- DB-Schema aktualisiert (neue Tabellen)
- Dateistruktur erweitert (updater/, frontend/, firmware.go, auth.go)
2026-02-28 22:43:03 +01:00
cynfo3000
616a0cb6ac Frontend: Firewall-Tabelle mit CPU/RAM/Disk/Uptime/Gateways, sortierbar, Slide-in Detail-Panel mit Tabs (Uebersicht, Interfaces, Dienste, VPN, Routen, DHCP, Zertifikate, Backups) 2026-02-28 16:03:02 +01:00
cynfo3000
c56fded7d7 Frontend: React+Vite+Tailwind, Login, Dashboard, Agents, Customers, Settings, Dark Theme, Nginx auf .20 2026-02-28 15:40:07 +01:00
cynfo3000
c6c8257cf0 Backend: Customers, Auth (JWT), Agent-Kundenzuordnung, CORS 2026-02-28 15:28:02 +01:00
cynfo3000
5daf81b9de README: Agent-Installation als OPNsense-Plugin mit WebGUI-Konfiguration 2026-02-28 14:15:40 +01:00
cynfo3000
1832bce852 OPNsense Plugin: install.sh Installer-Script (self-contained, alle Dateien inline) 2026-02-28 14:13:54 +01:00
cynfo3000
a7d3971b5d OPNsense Plugin: os-rmm-agent mit WebGUI-Settings, rc.d Service, configd-Integration, Build-Script 2026-02-28 13:53:24 +01:00
cynfo3000
d8bc99873f README: Vollstaendige Installationsanleitung Backend+Agent, alle SQLite-Referenzen durch PostgreSQL+TimescaleDB ersetzt 2026-02-28 13:36:59 +01:00
cynfo3000
3f3d555658 Cron-Jobs Collector: System-Crontab + OPNsense config.xml Jobs
- Neuer Collector: agent/collector/cron.go
- Zwei Quellen: crontab -l (System) + config.xml OPNsense-Jobs
- Daten im Heartbeat unter 'cron_jobs'
- Pro Job: source, schedule, enabled, command, description, uuid, origin
- Backend Model CronJob in models/system.go
- Getestet: 18 Jobs auf Produktion (8 System + 10 OPNsense)
- README + Dateistruktur aktualisiert
- Agent auf allen 3 Firewalls deployed
2026-02-28 13:19:09 +01:00
cynfo3000
c72b791796 Agent-Status und Inaktivitaets-Erkennung implementiert
- Status wird aus last_heartbeat berechnet (online/stale/offline/unknown)
- GET /agents und GET /agents/{id} liefern status Feld
- agent_events Tabelle fuer Event-Tracking (Migration automatisch)
- Inaktivitaets-Monitor als Goroutine (prueft alle 60s, schreibt Events bei Statuswechsel)
- WebSocket Connect/Disconnect Events werden automatisch geschrieben
- API-Endpoints: GET /agents/events und GET /agents/{id}/events (?limit=N&type=X)
- DB-Methoden: InsertAgentEvent, GetAgentEvents, GetAllAgentEvents, GetAgentStatus
- README aktualisiert (Status-Doku, Events API, Dateistruktur)
2026-02-28 13:13:13 +01:00
cynfo3000
5d7a3cbcc1 SQLite durch PostgreSQL + TimescaleDB ersetzt
- Backend DB komplett auf PostgreSQL 17 + TimescaleDB 2.25.1 umgestellt
- pgx pure-Go Driver (kein CGO), modernc/sqlite entfernt
- Hypertable 'metrics' fuer Time-Series Daten
- Automatische Metrik-Extraktion bei jedem Heartbeat:
  CPU, RAM, Uptime, Disk, Network-Traffic, Gateway RTT/Loss
- Retention Policy: 90 Tage, Compression nach 7 Tagen
- Neue API-Endpoints: GET /metrics (raw) + GET /metrics/summary (aggregiert)
- time_bucket() Aggregation (5min, 1h, etc.)
- config.yaml: database-Block statt db_path
- docs/POSTGRES_SETUP.md: Installationsanleitung
- README aktualisiert
2026-02-28 12:48:14 +01:00
cynfo3000
27d6492258 PostgreSQL + TimescaleDB Setup-Anleitung und Installation auf .13
- PostgreSQL 17.8 auf Debian 13 Trixie installiert
- TimescaleDB 2.25.1 Extension aktiviert
- DB 'rmm', User 'rmm' angelegt
- docs/POSTGRES_SETUP.md: Komplette Anleitung
  - Installation (PG17 + TimescaleDB via Bookworm-Repo)
  - Schema (agents, config_backups, metrics Hypertable, system_data)
  - Retention Policy (90 Tage Raw, 365 Tage Hourly Aggregate)
  - Compression (nach 7 Tagen)
  - Continuous Aggregate (stuendliche Durchschnitte)
  - Nuetzliche SQL-Abfragen
  - Backend config.yaml Anpassung
2026-02-28 12:40:44 +01:00
cynfo3000
62eeaf79e2 README: Alle Beispiele mit echten Zugangsdaten, alle 3 Agent-IDs dokumentiert 2026-02-28 11:28:22 +01:00
cynfo3000
c10c311424 WireGuard Peer Management: Add/List/Delete Peers via API
- Agent: wg_add_peer, wg_delete_peer, wg_list_peers Commands
- Keypair-Generierung auf der Firewall (wg genkey/pubkey)
- Automatische IP-Vergabe aus dem Tunnel-Subnetz
- WAN-IP Auto-Detection via Default-Route Interface
- Endpoint als Parameter uebergebbar (fuer DynDNS etc.)
- Config-Aenderungen direkt in config.xml (Go-basiert, kein PHP)
- configctl wireguard configure fuer Live-Reload
- Client-Config in Response (ready for import)
- Server-Name default: ALWAYSON_VPN
- Backend: 3 neue API-Endpoints (POST/GET/DELETE)
- README mit vollstaendiger Dokumentation
2026-02-28 11:22:18 +01:00
cynfo3000
b895d08f15 README: Agent-Faehigkeiten Uebersicht (Collectors, Commands, registrierte Agents) 2026-02-28 10:52:43 +01:00
cynfo3000
e7beada405 Config-Backup Feature: Agent liest config.xml, Backend speichert versioniert mit Deduplizierung
- Agent: neuer 'backup' Command (SHA256 Hash, Base64 Transfer)
- Backend: config_backups Tabelle in SQLite
- API: trigger, list, download (JSON/XML), delete, diff
- Deduplizierung: gleicher Hash = kein neuer Eintrag
- WebSocket ReadLimit auf 4MB erhoeht (grosse config.xml)
- README aktualisiert mit Backup-Docs
2026-02-28 10:44:09 +01:00
cynfo3000
23c8f2cd66 Major-Update Ablauf korrigiert und getestet
Agent:
- major_update: opnsense-update -r <ver> -bkp + pkg-static update -f + pkg-static upgrade -y
- Reboot ist bei Major-Updates default true (immer noetig)
- update_check: reboot_required Flag hinzugefuegt
- update: reboot_required korrekt aus opnsense-update -c Exit-Code
- Alle Steps liefern strukturierte Ergebnisse fuer Frontend-Workflow

Getestet auf 192.168.85.19:
- Normales Update: 25.7 → 25.7.11_9 (93 Pakete) erfolgreich
- Major-Upgrade: 25.7.11_9 → 26.1.2_5 erfolgreich (Base+Kernel+Packages+Reboot)

README: Update-Ablauf dokumentiert (Normal vs Major)
2026-02-28 09:35:33 +01:00
cynfo3000
f55536623e README: Alle Beispiele mit echten Zugangsdaten (Backend, API-Key, Agent-ID) 2026-02-28 09:08:58 +01:00
cynfo3000
33c3b84d0f README: Agent-API-Beispiele ergaenzt (list, get, system, delete, hub, exec) 2026-02-28 09:04:38 +01:00
cynfo3000
ebc70f17eb Update-Commands: update, major_update, update_check, reboot
Agent:
- update: opnsense-update + pkg upgrade -y, optionaler Reboot
- major_update: opnsense-update -r <version>, optionaler Reboot
- update_check: Prueft Core- und Paket-Updates, liefert Details
- reboot: Shutdown mit konfigurierbarer Verzoegerung

Backend:
- Synchrone API-Endpoints (warten auf Agent-Response)
- Response-Waiter-System im Hub (Command-ID basiert)
- Konfigurierbare Timeouts pro Command-Typ
- POST /agents/{id}/update[-check] und /major-update und /reboot

README mit Update-Beispielen und API-Doku aktualisiert
2026-02-28 09:01:04 +01:00