92 Commits
Author SHA1 Message Date
cynfo3000 582eb5c8c1 Docker: Runtime-Config via window.__RMM_CONFIG__ (kein Rebuild bei Backend-Wechsel)
- Dockerfile: multistage build (node -> nginx)
- docker-entrypoint.sh: injiziert BACKEND_HOST/PORT zur Laufzeit
- nginx.conf: SPA-Routing, config.js no-cache
- index.html: laedt /config.js vor dem React-Bundle

Usage: docker run -e BACKEND_HOST=rmm.example.com -e BACKEND_PORT=8443 -p 80:80 rmm-frontend
2026-03-10 17:43:53 +01:00
cynfo3000 54ddc0b902 WAU Compliance: agent collector, backend endpoints, frontend badge + panel
- Agent: WAU registry config check (include/exclude URLs), pending updates count
- Backend: /wau/compliance per customer, /wau/compliance/summary all customers
- Frontend: compliance badge in customer list, compliance panel in WAU tab
- config.js: no longer gitignored (secrets-free, reads from env/window.__RMM_CONFIG__)
- vite.config.js: reads backend URL from .env instead of hardcoded value
- .env.example added for clean setup
2026-03-10 17:38:58 +01:00
cynfo3000 bf51ed8569 feat: WAU-Integration + Windows Software-Inventar (v1.1.0)
Windows Agent (v1.1.0):
- Software-Inventar aus Windows-Registry (64-bit + 32-bit)
  Sammelt Name, Version, Hersteller, InstallDate aller installierten Apps
  Filtert SystemComponent-Einträge heraus, sortiert alphabetisch
  Funktioniert unter SYSTEM-Account (kein winget nötig)
- Version auf 1.1.0 gehoben

Backend:
- customer_wau_rules Tabelle (Migration automatisch)
- WAU-Regeln pro Kunde (allow/block, winget-ID + Anzeigename)
- GET/POST/DELETE /api/v1/customers/{id}/wau/rules
- GET /api/v1/customers/{id}/wau/inventory  (SQL-Aggregation aus Agenten-Daten)
- GET /api/v1/customers/{id}/wau/included   (Plaintext für WAU)
- GET /api/v1/customers/{id}/wau/excluded   (Plaintext für WAU)

Frontend:
- Kunden-Seite: Tab-Navigation (Agents | API-Keys | WAU)
- WAU-Tab pro Kunde: Allowlist + Blocklist mit Inline-Assign aus Inventar
  Allow/Block-Buttons direkt in Inventar-Zeile, winget-ID vorgeschlagen
  Installationsbefehl mit externer Backend-URL aus Systemeinstellungen
- Windows-Panel Software-Tab: Installiert-Liste aus Registry-Daten
- Windows-Panel WAU-Tab: Status (installiert/Task/letzter Lauf)
  WAU installieren via MSI-Download + msiexec (synchron)
  Jetzt ausführen, Log anzeigen
  Gewünschten Zustand herstellen (Allowlist auf Client installieren)
2026-03-10 08:46:00 +01:00
cynfo3000 7a5f4c0564 fix: WS-Client Ping-Loop (30s) — Verbindung bricht nicht mehr nach 70s ab 2026-03-10 02:42:34 +01:00
cynfo3000 ef567874c6 fix: Win11 OS-Erkennung via Build >= 22000, v1.0.6 2026-03-10 02:34:57 +01:00
cynfo3000 154d1bd8c8 fix: handleExec ersetzt winget durch vollen Pfad automatisch 2026-03-10 02:24:59 +01:00
cynfo3000 0f496a54e7 fix: winget-Pfad dynamisch suchen (Service laeuft als SYSTEM ohne WindowsApps im PATH) 2026-03-10 02:22:06 +01:00
cynfo3000 a97b17a682 fix: -OutputEncoding entfernt (inkompatibel), KB null-safe, exec via PS 2026-03-10 02:17:05 +01:00
cynfo3000 557e59bfc5 fix: Windows handler liest params statt data, exec via PowerShell (winget-kompatibel) 2026-03-10 02:10:20 +01:00
cynfo3000 5eae071bf9 fix: CustomerAssign in WindowsPanel identisch mit AgentPanel (onChange direkt, kein OK-Button) 2026-03-10 02:07:32 +01:00
cynfo3000 1f8fda6a83 fix: Windows-Seite identisches Format wie Firewalls (Spaltenwahl, Sort, MiniBar) 2026-03-10 02:06:39 +01:00
cynfo3000 4e21fe3c4e feat: Windows-Seite in Navigation + Agents-Filter excludes Windows 2026-03-10 02:03:40 +01:00
cynfo3000 0e6154a0dd fix: system_data als RawJSON durchreichen — Windows-Daten nicht mehr weggeworfen 2026-03-10 01:56:09 +01:00
cynfo3000 e94fea3e91 feat: Windows Agent OTA-Updater
- PowerShell-Script-Methode: Binary herunterladen, detached PS1 tauscht Binary nach Dienst-Stop
- SHA256-Verifikation vor Update
- v1.0.1 im Firmware-Store
2026-03-10 01:52:16 +01:00
cynfo3000 2fe83e261a fix: heartbeat system_data als RawMessage — Windows/beliebige Plattformen ohne Datenverlust 2026-03-10 01:49:24 +01:00
cynfo3000 f7bbe3e4b1 fix: firmware/installer Windows support (label, badge, install cmd) 2026-03-10 01:39:51 +01:00
cynfo3000 fabc518bb8 fix: agent permission erlaubt installer/download 2026-03-10 01:34:50 +01:00
cynfo3000 346aea73b9 fix: installer endpoint erlaubt platform=windows 2026-03-10 01:32:52 +01:00
cynfo3000 4f71bd1520 feat: Windows Agent Frontend Panel
- WindowsPanel.jsx: Uebersicht (CPU/RAM/Disk), Software (winget), System
- Dashboard: Windows-Agents mit WIN-Badge, oeffnet WindowsPanel
- Gleiche Navigation wie OPNsense/Proxmox (Sidebar-Menue)
2026-03-10 01:28:30 +01:00
cynfo3000 8116b71b48 feat: Windows Agent v1.0.0
- Windows-Dienst (golang.org/x/sys/windows/svc)
- Collector: CPU (GetSystemTimes), RAM (GlobalMemoryStatusEx), Disks (GetDiskFreeSpaceEx)
- WS-Client: gleiche Verbindungslogik wie Linux/BSD Agent
- Commands: exec, winget list/install/upgrade/upgrade-all, Windows Updates check/install, reboot
- install.ps1: automatische Service-Installation mit Parametern
- make agent-windows VERSION=x.x.x
2026-03-10 01:22:19 +01:00
cynfo3000 1c7c82dfac fix: agent permission erlaubt firmware + agents endpoints fuer rmm-updater OTA 2026-03-10 01:08:14 +01:00
cynfo3000 1923b28fa2 refactor: Firmware Agent-Liste kompakt und nach Kunde gruppiert 2026-03-10 01:02:34 +01:00
cynfo3000 16a7cd3f87 fix: ProxmoxPanel Sub-Navigation als linkes Sidebar-Menü wie AgentPanel 2026-03-10 00:58:21 +01:00
cynfo3000 67e15040fb feat: ProxmoxPanel mit verschachtelter Navigation wie AgentPanel
Haupt-Tabs: Uebersicht / Virtualisierung / Speicher / System
Sub-Tabs: VMs+Container | Storage+ZFS+Backups+PBS | Dienste+Updates+Aufgaben+Tunnel+Agent
2026-03-10 00:53:37 +01:00
cynfo3000 81669c59a5 feat: kein automatischer read-Key mehr bei Kundenerstellung 2026-03-10 00:42:32 +01:00
cynfo3000 56cb19d052 feat: API-Keys in Einstellungen gruppiert nach Kunde 2026-03-10 00:36:31 +01:00
cynfo3000 cdb2443d8f refactor: API-Keys in Einstellungen kompakter (gleicher Stil wie Kunden-Panel) 2026-03-10 00:34:42 +01:00
cynfo3000 4023a14fe1 feat: Agent zeigt Warnung wenn er nicht den Kunden-Key nutzt
- last_api_key Spalte in agents, wird bei Heartbeat gesetzt
- GetAgentsByCustomer liefert last_api_key mit
- Frontend: rot + Warnsymbol wenn Key abweicht vom Kunden-Agent-Key
- Grau wenn noch kein Heartbeat mit Key-Info
2026-03-10 00:23:59 +01:00
cynfo3000 20a976767b fix: getCustomerAgents liefert status + agent_version 2026-03-10 00:21:58 +01:00
cynfo3000 4a79305eee feat: Kunden-Panel zeigt Agents + API-Keys nebeneinander 2026-03-10 00:20:56 +01:00
cynfo3000 ebd8f1ebb8 fix: agent permission erlaubt /api/v1/agent/register (BSD Agent braucht das zum Start) 2026-03-10 00:15:17 +01:00
cynfo3000 97eefcde5d fix: Kopieren auf HTTP nutzt execCommand-Fallback (clipboard API braucht HTTPS) 2026-03-10 00:07:47 +01:00
cynfo3000 5cc3476479 feat: Kunden-Seite zeigt API-Keys beim Aufklappen
- Klick auf Kundenzeile klappt Key-Panel auf
- Zeigt Agent + Read-only Keys mit Permission-Badge
- Key teilweise maskiert, Kopier-Button vorhanden
- Backend: GET /api/v1/customers/{id}/apikeys
- DB: ListCustomerAPIKeys() nach customer_id gefiltert
2026-03-10 00:06:16 +01:00
cynfo3000 fba824da8b fix: Agent-Key braucht 'agent' Permission, nicht 'read'
- Auto-Erstellung bei neuem Kunden: jetzt agent-Key + read-Key
- agent: fuer OPNsense/Linux Agents (WS + Heartbeat)
- read:  fuer externe Lesezugriffe / Dashboards
- Agent-Keys fuer alle 4 Kunden nachtraglich erstellt
2026-03-10 00:03:19 +01:00
cynfo3000 15ad9be8e7 feat: Auto Read-only API-Key bei Kunden-Erstellung
- createCustomer erstellt automatisch einen customer-scoped Read-only Key
- Response gibt Customer + neuen API-Key zurueck
- Bestehende 4 Kunden Keys nachtraglich erstellt
2026-03-09 23:56:47 +01:00
cynfo3000 f658f3c4db fix: deleteAPIKey this.del statt this.delete (JS-Fehler) 2026-03-09 23:55:45 +01:00
cynfo3000 ec30be7246 security: API-Key Permissions + Customer-Scoping
- DB Migration: api_keys bekommt 'permissions' + 'customer_id' Spalten
- Permissions: agent | read | write | admin
  - agent:  nur /api/v1/agent/ws + /api/v1/agent/heartbeat
  - read:   GET-Endpoints (optional customer-scoped)
  - write:  alles ausser Terminal
  - admin:  voll (Terminal bleibt JWT-only)
- Bestehende Keys werden auf 'admin' migriert (Abwaertskompatibilitaet)
- Frontend: API-Key Verwaltung zeigt Permissions-Badge + Kunden-Scope
- API-Client: createAPIKey nimmt jetzt permissions + customer_id
2026-03-09 23:52:26 +01:00
cynfo3000 91385b42d1 security: Terminal-Endpoint JWT-only (kein API-Key Zugriff)
- Neue JWTOnlyAuth Middleware: akzeptiert nur JWT, kein API-Key
- Terminal-Route aus allgemeinem CombinedAuth raus, eigener Mount
- API-Keys für Monitoring/Automation erlaubt, aber Terminal braucht
  echten Login mit User/Pass + 2FA
- ?token= Query-Param weiterhin erlaubt (Browser-WS kann kein Header setzen)
2026-03-09 23:44:12 +01:00
cynfo3000 e9a47bee26 fix: Terminal Auth per JWT-Token statt leerem API-Key
- TerminalModal nutzt jetzt JWT aus localStorage (api.getToken()) fuer WS-Auth
- Backend Middleware: ?token= Query-Parameter fuer WebSocket JWT-Auth
- Behebt: api_key= leer -> 401 -> Terminal nicht erreichbar
2026-03-09 23:39:38 +01:00
cynfo3000 358682e5f3 fix: Backend platform-aware Agent-Update (nicht mehr hardcoded freebsd) 2026-03-09 20:31:26 +01:00
cynfo3000 291d2e3c17 feat: VM/CT Start/Stop im Frontend + Agent proxmox_action Handler
- Agent: neuer 'proxmox_action' Command (start/stop/shutdown fuer VMs und LXC)
- Backend: POST /api/v1/agents/{id}/proxmox/action Endpoint
- Frontend: Start/Stop/Shutdown Buttons in VMs- und Container-Tab
  - Play (gruen) = starten (nur wenn gestoppt)
  - Power (gelb) = Graceful Shutdown (nur VMs, nur wenn running)
  - Stop (rot) = Hard Stop (wenn running)
- api/client.js: proxmoxAction() Methode
2026-03-09 20:22:45 +01:00
cynfo3000 4cd9764cec docs: config.example.js auf aktuelles Runtime-Config-Pattern gebracht 2026-03-09 19:11:58 +01:00
cynfo3000 682dd4183e docs: Debian 13 PostgreSQL-Versionskonflikt mit TimescaleDB dokumentiert
Debian 13 (Trixie) liefert PostgreSQL 17.8, TimescaleDB benoetigt >= 17.9.
Loesung: offizielles PostgreSQL-Apt-Repo (apt.postgresql.org/bookworm-pgdg)
statt Debian-eigene Pakete verwenden.
Fehlerbehebung fuer bestehende Installationen ebenfalls dokumentiert.
2026-03-08 21:14:18 +01:00
cynfo3000 e76f39e9f4 chore: linux binary zu .gitignore 2026-03-08 19:17:53 +01:00
cynfo3000 10684dfc0a feat: TOTP 2FA + diverse Verbesserungen
2FA (TOTP):
- backend/api/auth.go: zweistufiger Login-Flow mit Pending-Token (5min),
  Endpunkte /2fa/validate, /2fa/setup, /2fa/confirm, /2fa/disable
- backend/db/users.go: GetUserByID, SetTOTPSecret, EnableTOTP, DisableTOTP
- backend/db/postgres.go: Migration totp_secret + totp_enabled Spalten
- backend/models/user.go: TOTPEnabled/TOTPSecret Felder, neue Request-Typen
- backend/main.go: neue Routen registriert (/2fa/validate ohne Auth, rest geschuetzt)
- backend/go.mod+sum: github.com/pquerna/otp hinzugefuegt
- frontend/src/pages/Login.jsx: zweistufiger Login (Passwort -> TOTP)
- frontend/src/pages/SettingsPage.jsx: TwoFactorSection mit Setup/Deaktivieren
- frontend/src/stores/auth.js: validateTOTP Action
- frontend/src/api/client.js: setupTOTP, confirmTOTP, disableTOTP, validateTOTP

Weitere Aenderungen (unstaged -> jetzt committed):
- frontend/src/components/ScriptModal.jsx: neu
- frontend/src/components/AgentPanel.jsx: Erweiterungen
- frontend/src/components/ProxmoxPanel.jsx: Erweiterungen
- agent-linux/ws/handler.go: Erweiterungen
- backend/api/scheduler.go + tasks.go: Erweiterungen
- backend/db/tasks.go + models/task.go: Erweiterungen
2026-03-08 19:17:43 +01:00
cynfo3000 c76868e806 feat: Updates-Tab, Aufgaben-Tab ProxmoxPanel, security_only Tasks, 3x Netzwerk-Charts, Updates-Spalte Übersicht, dist-upgrade, DeleteAgent cascades metrics 2026-03-07 14:30:12 +01:00
cynfo3000 a51d1bb02f docs: Linux-Agent vollständige Command-Referenz (exec, reboot, tunnel, pty_start/stop/resize, agent_update, OTA-Prozess) 2026-03-07 00:43:33 +01:00
cynfo3000 879cf5cd28 feat: Web Terminal fuer FreeBSD/OPNsense-Agent (PTY Manager + pty_start/stop/resize Commands) 2026-03-07 00:40:17 +01:00
cynfo3000 b4caf498a0 feat: Web Terminal in OPNsense TunnelTab; README auf Multi-Platform aktualisiert (OPNsense + Linux/Proxmox) 2026-03-07 00:36:54 +01:00
cynfo3000 cb5922714c docs: Nginx-Config mit API-Proxy + WebSocket-Support, vite ws:true 2026-03-07 00:33:38 +01:00
cynfo3000 e44bd314e8 fix: Terminal WS ueber Nginx-Proxy statt direkt zum Backend (kein self-signed Cert Problem) 2026-03-07 00:30:59 +01:00
cynfo3000 257eee0c83 fix: HTTP/2 deaktivieren fuer WebSocket-Kompatibilitaet (Terminal WSS) 2026-03-07 00:29:07 +01:00
cynfo3000 fa623569f6 fix: copyToClipboard Fallback fuer HTTP-Kontext (navigator.clipboard nur HTTPS) 2026-03-07 00:26:42 +01:00
cynfo3000 73ff57eaf0 fix: Proxmox TunnelTab SSH-Copy identisch zu OPNsense (auto-copy + grüne Bestätigung + SSH-Button pro Tunnel) 2026-03-07 00:24:29 +01:00
cynfo3000 67a337ed9f feat: Web Terminal (xterm.js + PTY over WebSocket) + SSH-Copy-Karte im Tunnel-Tab 2026-03-07 00:20:03 +01:00
cynfo3000 3c83cf11de feat: PBS — Disk-Auslastung via df, laufende Tasks, Kacheln kleiner ohne Debian-Version 2026-03-07 00:08:01 +01:00
cynfo3000 6487c2cf59 fix: PBS Backup-Count robusteres find-Pattern fuer alle Namespace-Strukturen 2026-03-06 23:58:16 +01:00
cynfo3000 5995f2e9cc fix: PBS Backup-Anzahl via find statt snapshot-Befehl (existiert nicht in dieser PBS-Version) 2026-03-06 23:56:22 +01:00
cynfo3000 e565039743 fix: Linux-Agent Update — platform im Heartbeat mitschicken, Backend nutzt plattformspezifische Firmware statt hardcoded freebsd 2026-03-06 23:41:22 +01:00
cynfo3000 7ebbdc76cb fix: React.useState -> useState in PBSTab 2026-03-06 23:37:55 +01:00
cynfo3000 1204e05d0b feat: PBS Tab — Stat-Karten (Datastores/Backups/SyncJobs/Kernel) + neues Layout 2026-03-06 23:36:48 +01:00
cynfo3000 67651a5aeb feat: PBS Datastores — Backup-Anzahl, neues Layout mit GC/Verify/Prune Buttons 2026-03-06 23:34:43 +01:00
cynfo3000 a036849565 fix: hostname-basiertes Agent-Matching entfernt — gleiche Kurzhostnames (z.B. PVE-REP) bei verschiedenen Kunden bekamen dieselbe ID 2026-03-06 23:26:09 +01:00
cynfo3000 d54027047a fix: install.sh loescht alte agent_id bei Neuinstall — verhindert ID-Kollision bei geclonten Systemen 2026-03-06 23:19:20 +01:00
cynfo3000 474a396589 feat: PBS-Badge neben Hostname in Proxmox-Uebersicht 2026-03-06 23:11:13 +01:00
cynfo3000 c1d1bd8a5e feat: PBS Collector — automatische Erkennung, Datastores + Tasks + GC, Frontend-Tab 'Backup Server' 2026-03-06 23:02:54 +01:00
cynfo3000 a0fb6b465f fix: Linux Installationsanleitung auf /installer/download Endpoint und install-linux.sh umgestellt 2026-03-06 22:22:26 +01:00
cynfo3000 ae1a8617f5 fix: Linux install.sh erstellt (systemd, Debian/Proxmox), Makefile nutzt plattformspezifische install.sh 2026-03-06 22:20:20 +01:00
cynfo3000 9cb504fea1 feat: Interface-Durchsatz-Chart — Backend berechnet RX/TX-Rate (bps), Frontend zeigt Dual-Sparkline per Klick auf Interface 2026-03-06 22:00:33 +01:00
cynfo3000 eb5266f848 feat: Sparkline-Charts für CPU und RAM (8h) — generischer useMetricChart Hook 2026-03-06 21:56:03 +01:00
cynfo3000 aca013b848 feat: PF States Chart (Sparkline letzte 8h) — Backend schreibt pf_states in TimescaleDB, Frontend zeigt SVG-Sparkline 2026-03-06 21:47:47 +01:00
cynfo3000 e01fd7698c docs: 10 weitere Screenshots hinzugefügt (Login, Dashboard, Netzwerk, Sicherheit) 2026-03-06 18:54:12 +01:00
cynfo3000 225332f519 docs: 5 neue Screenshots hinzugefügt (Backups, Aufgaben, Tunnel, Updates, Agent) 2026-03-06 18:53:13 +01:00
cynfo3000 337f20165a docs: Screenshot 03 — IPs, MACs und Hostname geschwärzt 2026-03-06 12:55:36 +01:00
cynfo3000 fccf5b823a docs: Screenshots hinzugefügt (Firewalls, System, Netzwerk, HAProxy) 2026-03-06 12:47:21 +01:00
cynfo3000 3060516080 docs: Donate-Link hinzugefügt 2026-03-06 12:33:56 +01:00
cynfo3000 0e56b518b0 fix: Makefile agent-bsd Pfad korrigiert, install.sh ins Release-ZIP aufgenommen 2026-03-06 10:11:32 +01:00
cynfo3000 138a43e69b docs: updater/README.md erstellt (cross-platform, FreeBSD+Linux), Komponenten-Tabelle ergänzt 2026-03-06 10:07:15 +01:00
cynfo3000 0698c26a29 docs: README Komponenten-Tabelle aktualisiert — AGENT.md/FIRMWARE.md entfernt, agent-bsd/agent-linux README verlinkt 2026-03-06 10:04:42 +01:00
cynfo3000 8e831e241a docs: FIRMWARE.md in agent-bsd/README.md zusammengeführt und gelöscht 2026-03-06 09:58:50 +01:00
cynfo3000 afed19724d docs: AGENT.md entfernt (veraltet, ersetzt durch agent-bsd/README.md und agent-linux/README.md) 2026-03-06 09:56:42 +01:00
cynfo3000 f0e06a93df docs: FIRMWARE.md komplett überarbeitet — Installer-ZIP vs. Agent-Binary klar getrennt, make release dokumentiert 2026-03-06 09:54:07 +01:00
cynfo3000 72dadf19b1 docs: agent-bsd README scp durch fetch + Git-Clone ersetzt 2026-03-06 09:49:53 +01:00
cynfo3000 b24b91b686 chore: beispielbilder/ und Lastenheft.md entfernt 2026-03-06 09:48:24 +01:00
cynfo3000 f3b052e2c7 refactor: agent/ → agent-bsd/, README.md für BSD-Agent erstellt, Referenzen aktualisiert 2026-03-06 09:48:05 +01:00
cynfo3000 39c168e946 docs: agent-linux README auf Git-Clone umgestellt (kein scp mehr) 2026-03-06 09:45:07 +01:00
cynfo3000 d096922479 docs: echte Agent-IDs und Hostnamen aus README entfernt 2026-03-06 09:42:08 +01:00
cynfo3000 8fd83c2f2b docs: POSTGRES_SETUP.md vollständig aktualisiert — alle 13 Tabellen, Auto-Migration Hinweis, nützliche Abfragen 2026-03-06 09:40:26 +01:00
cynfo3000 a163037ee8 docs: FRONTEND.md auf Linux korrigiert (NodeSource statt Homebrew, Build direkt auf Server) 2026-03-06 09:36:26 +01:00
cynfo3000 28ebb5378d docs: FRONTEND.md vollständig (Nginx, Node, config.js, deploy) + config.js aus Repo entfernt 2026-03-06 09:30:33 +01:00
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