rmm2/docs/FRONTEND.md

3.4 KiB

Frontend — Build & Deploy

React + Vite + TailwindCSS Web-Frontend, deployed als statische Dateien auf Nginx.

Eckdaten

  • Server: your-backend (Debian 13, Nginx)
  • Tech: React 18, Vite, TailwindCSS, Recharts, Zustand, lucide-react
  • Theme: Dark mit Orange-Akzent, komplett deutsch
  • Auth: JWT Login (8h Token)
  • Default-Login: admin / YOUR_PASSWORD

Seiten

Seite Beschreibung
Dashboard Uebersicht aller Firewalls, Status-Kacheln, AgentPanel per Klick
Firewalls Suchbare Tabelle, AgentPanel mit Tabs (Uebersicht, Interfaces, Dienste, Tunnel, VPN, WireGuard, Routen, DHCP, Zertifikate, Backups, Agent); Firewall hinzufuegen/loeschen
Tunnel Globale Tunnel-Uebersicht ueber alle Firewalls
Firmware Multi-Plattform Firmware-Upload, Agent-Update-Trigger
Kunden CRUD Kundenverwaltung
Einstellungen Benutzerverwaltung, Passworte aendern

Features (v1.0.3)

Firewall hinzufuegen / Pre-Registration

  • Dialog mit Name + optionalem Kunden
  • Zeigt Installationsanleitung mit Copy-Buttons fuer die Shell-Befehle
  • Agent wird mit hostname="(ausstehend)" angelegt, automatisches Matching bei Registration

Firewall loeschen

  • Papierkorb-Icon im AgentPanel
  • Loescht Agent und alle zugehoerigen Daten (Systemdaten, Events, Backups, Metriken)

OPNsense Business Edition Lizenz-Anzeige

Im Uebersicht-Tab des AgentPanel:

  • Product Name (z.B. "OPNsense Business Edition")
  • Subscription Key
  • Ablaufdatum
  • Restlaufzeit mit visuellem Farbbalken (gruen/gelb/rot je nach verbleibender Zeit)

Agent-Tab

  • Agent-Info: Version, Agent-ID, Plattform, Uptime
  • Update-Button: Direktes Agent-Update anfordern
  • Befehle: Remote-Shell-Befehle direkt aus dem Frontend ausfuehren

Firmware-Seite

  • Multi-Platform Upload (FreeBSD, Linux, Windows)
  • Versions-Uebersicht pro Plattform mit SHA256-Hash und Groesse
  • Agent-Update-Buttons (einzeln oder alle)

Build & Deploy

cd frontend
npm run build                                              # ~330 KB JS, ~32 KB CSS
ssh root@your-backend 'rm -rf /var/www/html/assets/*'     # Alte Hashes loeschen!
scp -r dist/* root@your-backend:/var/www/html/

Wichtig: Vor Deploy immer assets/ loeschen — Vite generiert Hash-basierte Dateinamen, alte Dateien bleiben sonst auf dem Server und Browser-Cache liefert 404.

Dateistruktur

frontend/
├── src/
│   ├── App.jsx              # Router + ProtectedRoute
│   ├── api/client.js        # API Client (auth, agents, firmware, tunnels, etc.)
│   ├── stores/auth.js       # Zustand Auth Store (JWT Token)
│   ├── layouts/AppLayout.jsx # Sidebar + Outlet
│   ├── components/
│   │   ├── AgentPanel.jsx   # Side Panel mit Tabs (Uebersicht bis Agent)
│   │   └── StatusBadge.jsx  # Online/Offline/Stale Badge
│   └── pages/
│       ├── Dashboard.jsx    # Status-Kacheln + Agent-Liste
│       ├── Agents.jsx       # Firewall-Tabelle
│       ├── AgentDetail.jsx  # Detail-Ansicht (full page)
│       ├── Tunnels.jsx      # Globale Tunnel-Uebersicht
│       ├── Firmware.jsx     # Multi-Plattform Firmware + Update-Trigger
│       ├── Customers.jsx    # Kunden CRUD
│       ├── SettingsPage.jsx # User-Management
│       └── Login.jsx        # JWT Login
├── vite.config.js
└── package.json