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
| Bereich | Technologie |
|---|---|
| Frontend | Vue 3 mit Vite |
| Backend | Express + TypeScript |
| Auth | Zitadel OIDC ( SSO ) |
| Deployment | Docker + 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