Was ist das?

Ein Dashboard zur Überwachung meines Servers. Zeigt Systemmetriken wie CPU, RAM, Festplatte und Netzwerk in Echtzeit an. Dazu lassen sich systemd-Services und Docker-Container einsehen und bei Bedarf direkt neustarten. Eine zentrale Log-Ansicht rundet das Ganze ab.

Die Grundlage dafür stammt von Alex, einem guten Freund und ehemaligen Kollegen, der das ursprüngliche Service-Panel entwickelt hat. Ich habe es an meine eigene Infrastruktur angepasst — unter anderem mit Single Sign-On über mein selbst gehostetes Zitadel-Setup und einem einheitlichen Design passend zu meinen anderen Tools. Danke an dieser Stelle an Alex für die solide Basis!

Features

  • Übersicht: CPU-, RAM-, Disk- und Netzwerk-Auslastung auf einen Blick
  • Services: Alle systemd-Services auflisten, filtern und neustarten
  • Container: Docker-Container-Status mit Restart-Funktion
  • Logs: Zentrale Log-Ansicht für Services und Container mit Download-Option
  • Monitoring: Automatische Warnungen bei hoher RAM- oder Disk-Auslastung
  • Dark/Light Mode mit einheitlichem Style-Guide

Tech-Stack

BereichTechnologie
FrontendVue 3 mit Vite
BackendExpress + TypeScript
AuthZitadel OIDC ( SSO )
DeploymentDocker + Nginx + GitHub Actions

Wie es funktioniert

Die App läuft als Docker-Container auf dem Server. Ein Background-Poller sammelt regelmäßig Systemdaten — Metriken alle 5 Sekunden, Service- und Container-Status jede Minute. Die Ergebnisse werden gecacht, sodass das Dashboard sofort laden kann.

Da der Container keinen direkten Zugriff auf den Host hat, werden Befehle wie systemctl und journalctl über nsenter im Host-Namespace ausgeführt. Das ist die größte technische Besonderheit des Setups.

Das Deployment läuft automatisch: Bei jedem Push auf main baut GitHub Actions das Docker-Image neu und deployed es auf den Server.

Sicherheit

  • Zugang nur mit gültiger SSO-Session über Zitadel, meinen selbst gehosteten Identity Provider für Single Sign-On über alle meine Dienste
  • Rate Limiting auf allen Routen
  • Security Headers inkl. CSP und HSTS
  • Eingaben werden validiert, Shell-Commands haben Timeouts

Glossar

Single Page Application (SPA)
Eine Webanwendung, die als eine einzige HTML-Seite geladen wird und Inhalte dynamisch per JavaScript nachlädt. Navigation, Datenabfragen und UI-Updates passieren ohne vollständigen Seitenreload — der Server liefert nur eine API.
Background Polling
Ein Muster, bei dem der Server periodisch Daten sammelt und cached, statt bei jedem Request live abzufragen. API-Requests bekommen sofort den letzten Snapshot — ideal für Dashboards mit vielen gleichzeitigen Nutzern oder kurzen Abfrageintervallen.
nsenter
Ein Linux-Tool, das Prozesse in bestehenden Namespaces ausführt. Ermöglicht es einem Container, Befehle im Mount-Namespace des Hosts zu starten — z.B. nsenter -t 1 -m -- systemctl status, um auf systemd des Hosts zuzugreifen.
OpenID Connect (OIDC)
Ein Authentifizierungsprotokoll auf Basis von OAuth 2.0. Der Identity Provider bestätigt die Identität eines Nutzers und liefert Informationen wie Name, E-Mail und Rollen in einem signierten ID-Token zurück.
Single Sign-On (SSO)
Ein Authentifizierungsverfahren, bei dem sich ein Nutzer einmalig anmeldet und danach auf mehrere Anwendungen zugreifen kann, ohne sich erneut einloggen zu müssen. Der Identity Provider verwaltet die zentrale Session.
Docker Container
Eine isolierte Laufzeitumgebung, die eine Anwendung mit allen Abhängigkeiten verpackt. Container teilen sich den Kernel des Host-Systems, starten in Millisekunden und garantieren, dass Software überall gleich läuft — lokal wie auf dem Server.
CI/CD
Continuous Integration und Continuous Deployment — automatisierte Prozesse, die Code nach jedem Push testen, bauen und auf den Server deployen. Reduziert manuelle Fehlerquellen und ermöglicht schnelle, reproduzierbare Deployments.