Mr.PlanB Logo

    Newsletter

    Newsletter abonnieren

    Neue Infrastruktur-Guides, Vergleichsberichte und Migrationshinweise direkt ins Postfach.

    Infrastruktur-Notizen, Guides und neue Tools. Jederzeit abbestellbar.

    Zurück zum Blog
    Proxmox
    Monitoring
    Homelab

    Stream Deck Proxmox-Monitor: Sicheres Read-Only-Setup im LXC

    4. Oktober 2026
    8 Min. Lesezeit

    Wenn Sie noch ein ungenutztes Elgato Stream Deck in der Schublade liegen haben, lässt sich daraus ein erstaunlich praktisches Überwachungspanel für Proxmox bauen. Sie müssen nicht mehr für jeden kurzen Blick auf CPU-Auslastung, VM-Zustände, Netzwerktraffic oder Dienstverfügbarkeit das Webinterface im Browser öffnen, weil diese Daten direkt auf physischen Tasten neben dem Server angezeigt werden. Mich interessiert dabei weniger die Hardware als die saubere architektonische Umsetzung.

    Ein aktuelles Open-Source-Projekt platziert den Monitoring-Agenten in einem unprivilegierten LXC-Container, stattet ihn mit einem reinen Read-Only-API-Token für Proxmox aus, reicht das USB-Gerät des Stream Decks in den Container durch und nutzt die Tasten zur Statusanzeige von Host und VMs. Sie können zwischen verschiedenen Seiten mit Host-Metriken, Gastzuständen, Netzwerkdurchsatz, einem manuellen Speedtest und simplen HTTP-Health-Checks blättern. Das ist um Welten besser, als ein beliebiges Python-Skript als Root direkt auf dem Hypervisor auszuführen. Wer sich ein physisches Proxmox-Dashboard wünscht, sollte es zwingend lesend, isoliert und leicht ersetzbar konzipieren.

    Was kann ein Stream Deck von Proxmox tatsächlich anzeigen?

    Nahezu alle Statusdaten, die die Proxmox-API liefert, lassen sich auf den kleinen Display-Tasten darstellen. Das zugrunde liegende Projekt generiert aktuell fünf Übersichtsseiten. Die Host-Seite visualisiert CPU-Last, RAM-Belegung, Festplattenauslastung, Swap, Load-Average und Uptime. Die Gast-Seite listet VMs und LXC-Container inklusive ihres Status (aktiv oder gestoppt) sowie deren CPU-Verbrauch auf. Die Netzwerk-Seite aggregiert den Datenverkehr und hebt die aktivsten Systeme hervor, während die Speedtest-Seite einen realen Internet-Geschwindigkeitstest direkt aus dem Monitoring-Container anstößt. Die Health-Seite prüft konfigurierte HTTP- oder HTTPS-Endpunkte und visualisiert den Zustand jedes Dienstes als grüne oder rote Kachel.

    Für ein kompaktes physisches Statuspanel ist das genau das richtige Maß an Information. Ein Stream Deck ist kein Grafana-Ersatz: Wer versucht, detaillierte Zeitreihendiagramme, Log-Streams, Latenz-Histogramme des Speichers und zwanzig Alarme auf wenige kleine LCD-Tasten zu quetschen, macht das System unbrauchbar. Es glänzt dann, wenn jede Kachel eine präzise Frage beantwortet: Ist der Host überlastet, läuft Home Assistant, welche VM beansprucht die meiste Bandbreite, antwortet der Reverse-Proxy, läuft ein Storage-Pool voll? Benötigen Sie tiefere Einblicke, öffnen Sie Ihr reguläres Monitoring-System; das Stream Deck liefert den schnellen Überblick im Vorbeigehen.

    Für weiterführende Architektur- und Monitoring-Konzepte bietet der Mr.PlanB Proxmox-Hub fundierte Orientierung weit über dieses einzelne Dashboard-Experiment hinaus.

    Warum sollte der Monitoring-Agent in einem LXC laufen?

    Weil der Proxmox-Host so schlank und unverändert wie möglich bleiben sollte. Der Stream-Deck-Agent ist ein externer Python-Prozess: Er kommuniziert mit USB-Hardware, pollt REST-APIs, rendert Grafiken, führt Netzwerkprüfungen durch und lädt Bibliotheken wie hidapi, libusb, Pillow, Requests und spezifische Stream-Deck-Module nach. Nichts davon gehört ohne zwingenden Grund direkt auf den Hypervisor.

    Das Projekt setzt stattdessen auf einen unprivilegierten Debian-LXC und führt den Agenten unter einem dedizierten Nicht-Root-Benutzer aus. Das schafft eine saubere Fehlergrenze für das Experiment. Stürzt ein Python-Paket ab, starten Sie einfach den Container neu. Verheddert sich die Konfiguration, setzen Sie den LXC neu auf. Verlieren Sie das Interesse, löschen Sie ihn rückstandslos. Und sollte der Agent über eine Drittanbieter-Bibliothek oder ein manipuliertes Health-Check-Ziel kompromittiert werden, landet ein Angreifer in einem isolierten, unprivilegierten Container statt im Host-System von Proxmox. Ein LXC ist zwar keine unüberwindbare Festung, aber der Schadensradius bleibt drastisch begrenzt.

    Proxmox realisiert unprivilegierte Container über User-Namespaces, wodurch UID 0 innerhalb des Containers einer völlig unprivilegierten UID auf dem Host entspricht. Für einen kleinen Hilfsdienst dieser Art ist das genau das gewünschte Maß an Isolation.

    Welche Proxmox-Berechtigungen sollte das Panel besitzen?

    Ausschließlich Leserechte für Statusdaten. Die Referenzimplementierung legt einen dedizierten Proxmox-Benutzer an und weist ihm die integrierte Rolle PVEAuditor auf Pfadebene / zu. Diese Rolle ist exakt für lesende Transparenz konzipiert. Der Agent authentifiziert sich über ein API-Token und fragt die Proxmox-REST-API verschlüsselt über HTTPS ab.

    Entscheidend ist, was das Panel ausdrücklich nicht darf: Es kann weder VMs starten noch stoppen, keinen Speicher löschen, keine Netzwerk-Bridges modifizieren, keine Container verändern und keine Clustereinstellungen anpassen. Das ist der einzig sinnvolle Standard. Ein reines Anzeigepanel benötigt keine Administrationsrechte, bloß weil die API solche Optionen anbietet.

    In der Community berichtete ein Nutzer von einem anderen Setup, bei dem ein Tastendruck je nach VM eine Remotedesktopsitzung oder PuTTY auf dem lokalen Arbeitsplatzrechner öffnet. Das ist weitgehend unkritisch, da die Taste lediglich ein lokales Client-Programm startet und keine Zustände auf der Infrastruktur über die Proxmox-API manipuliert.

    Man ahnt jedoch, wohin die Reise gehen kann: Sobald physische Tasten vorhanden sind, wünscht sich bald jemand einen "VM neustarten"-Knopf, einen "Host ausschalten"-Schalter oder einen großen roten Notfall-Button. Im Testlabor mag das amüsant sein, doch solche schreibenden Aktionen dürfen keinesfalls über die Zugangsdaten des Monitoring-Dienstes laufen. Wer Steuerungsfunktionen ergänzt, muss dafür einen separaten Pfad mit eigenen Rechten und expliziten Schutzmechanismen aufbauen. Schmuggeln Sie niemals Administrationsrechte in ein reines Monitoring-Token.

    Wie funktioniert das USB-Passthrough?

    Das ist der am wenigsten elegante Teil der Konstruktion. Das Stream Deck ist physisch am Proxmox-Host angeschlossen, der Python-Agent läuft jedoch im unprivilegierten LXC, sodass der Container Zugriff auf das USB-Gerät benötigt. Das Projekt erlaubt USB-Character-Devices und bind-mountet den /dev/bus/usb-Pfad des Hosts direkt in den Container. Die LXC-Konfiguration beinhaltet sinngemäß folgende Einträge:

    lxc.cgroup2.devices.allow: c 189:* rwm
    lxc.mount.entry: /dev/bus/usb dev/bus/usb none bind,optional,create=dir
    

    Eine udev-Regel auf dem Host regelt anschließend die Dateiberechtigungen für Elgato-Hardware unter Nutzung der USB-Vendor-ID 0fd9.

    Warum bind-mountet man den gesamten USB-Bus-Baum statt einer einzelnen Gerätedatei? Weil sich USB-Gerätenummern bei jedem Einstecken ändern. Ein Stream Deck, das zunächst unter einem bestimmten Pfad unter /dev/bus/usb/... auftaucht, erhält nach dem Aus- und wieder Einstecken eine neue Gerätenummer. Das Durchreichen des gesamten Bus-Baums erlaubt dem Container, das neu initialisierte Gerät ohne manuelle Konfigurationsänderung sofort wieder anzusprechen.

    Das ist bequem, legt aber auch mehr Schnittstellen offen als ein fixierter Gerätepfad. Die praktische Beschränkung basiert hier auf den Host-Berechtigungen und der Tatsache, dass der LXC unprivilegiert läuft. Hängen am Host weitere sensible USB-Geräte, sollten Sie genau prüfen, was Sie freigeben, bevor Sie diese Konfiguration blind kopieren.

    Auf einem reinen Homelab-Host mit einem einzelnen angeschlossenen Stream Deck ist dieser Kompromiss vertretbar. Auf einem Produktivserver mit USB-Sicherheitsschlüsseln, Lizenz-Dongles, Backup-Festplatten oder anderen privilegierten Peripheriegeräten wäre ich deutlich vorsichtiger.

    Warum verschwindet das Stream Deck nach dem Abziehen?

    USB-Bibliotheken verarbeiten das plötzliche Trennen eines Geräts nicht immer fehlerfrei. Der Autor stieß bei hidapi und libusb auf das Phänomen, dass der Prozess das Gerät nach dem erneuten Anstecken des Stream Decks schlicht nicht mehr erkannte. Ein vollständiger Neustart des Monitoring-Dienstes bereinigte den veralteten Bibliothekszustand, weshalb das Projekt ein Watchdog-Verhalten integrierte: Wird für eine definierte Zeitspanne kein Stream Deck erkannt, beendet sich der Prozess selbstständig, woraufhin systemd ihn mit frischem USB-Zustand neu startet.

    Idealerweise würde die Bibliothek jeden Reconnect sauber abfangen. In der Realität lautet der funktionierende Fix: "Gerät zu lange weg, starte den schlanken Dienst neu." Das ist ein absolut pragmatischer Umgang mit realer Hardware. Für eine Monitoring-Appliance ist das eine völlig legitime Strategie, da der Dienst kaum Statusdaten hält und ein Neustart praktisch keine Ressourcen kostet.

    Warum dimmt das Panel bei Inaktivität ab?

    Hauptsächlich, damit statische Grafiken die Displays nicht dauerhaft mit maximaler Helligkeit belasten. Die Konfiguration dimmt das Stream Deck nach 25 Sekunden ohne Tastenbetätigung ab und weckt es sofort auf, sobald eine Taste berührt wird. Der Entwickler vermerkt, dass Stromersparnis dabei nicht das Hauptargument ist, da Stream-Deck-Geräte ohnehin sehr wenig Energie aufnehmen. Das primäre Ziel ist es, grell leuchtende Tasten rund um die Uhr zu vermeiden.

    Es ist ein kleines Detail, das dem Projekt den Charakter einer echten Appliance verleiht. Wenn alles im grünen Bereich ist, tritt das Panel optisch dezent in den Hintergrund. Ein Fingertipp genügt für detaillierte Werte. Und erfordert ein Zustand sofortige Aufmerksamkeit, signalisieren die Kachelfarben das auch ohne Tastendruck unübersehbar.

    Ist das besser als Grafana oder das Proxmox-Webinterface?

    Nein, es erfüllt eine völlig andere Aufgabe. Grafana ist unübertroffen für historische Metriken, Dashboards, Korrelationen, Alarmierungen und langfristige Trends. Das Proxmox-Webinterface ist der Ort, an dem Sie reale administrative Eingriffe vornehmen. Ein vollwertiger Monitoring-Stack übernimmt Benachrichtigungen per Mail oder Chat. Das Stream Deck schenkt Ihnen dagegen eine passive, beiläufige Wahrnehmung Ihres Systemstatus.

    Seinen größten Nutzen entfaltet es, wenn der Proxmox-Host im selben Raum steht wie Ihr Schreibtisch, Ihr Rack oder Ihre Werkbank. Sie sehen auf einen Blick, dass alle VMs grün sind, ohne Fenster wechseln zu müssen; bemerken sofort, wenn eine VM ungewöhnlich viel Traffic erzeugt; oder starten per Tastendruck einen schnellen Verbindungstest. Es ersetzt Ihr Monitoring keineswegs, erspart Ihnen aber unzählige flüchtige Kontrollblicke in die Web-UI. Das klingt banal, summiert sich im Homelab-Alltag jedoch beträchtlich.

    Was würde das Panel noch nützlicher machen?

    Das Panel profitiert vermutlich mehr von aussagekräftigen Statussignalen als von noch mehr rohen Metriken. Eine Backup-Kachel könnte das Alter der letzten erfolgreichen Sicherung anzeigen, während eine Storage-Kachel auf Orange wechselt, wenn ein ZFS-Pool degradiert ist. Eine Ceph-Kachel könnte HEALTH_OK, HEALTH_WARN oder HEALTH_ERR zusammenfassen. Eine USV-Kachel könnte Netzbetrieb, Akkuladestand und Restlaufzeit visualisieren, während eine Cluster-Kachel den Quorum-Status abbildet. Eine PBS-Kachel könnte signalisieren, ob die letzte Datenspeicher-Verifikation fehlerfrei durchlief. Eine Zertifikats-Kachel könnte warnen, sobald ein wichtiges TLS-Zertifikat weniger als 30 Tage Restlaufzeit besitzt, und eine Update-Kachel könnte anstehende Proxmox-Paketaktualisierungen anzeigen, ohne sie zu installieren.

    Jeder dieser Vorschläge bliebe rein lesend, und genau dort gehört dieses Panel hin. Ein physisches Display, das Ihnen signalisiert, wo Sie genauer hinsehen sollten, und das selbst nichts verändern kann, bleibt dauerhaft nützlich und risikoarm. Sobald daraus eine Steuerkonsole wird, erfordert jede einzelne Taste gründliche Schutzvorkehrungen.

    Sollten Sie die Installationsskripte direkt übernehmen?

    Lesen Sie den Code vor der Ausführung gründlich durch. Das Projekt liefert zwei Skripte mit, die den LXC erstellen, USB-Passthrough einrichten, API-Benutzer sowie Tokens anlegen, Abhängigkeiten installieren und den systemd-Dienst konfigurieren. Für ein Homelab-Projekt ist das praktisch, stellt aber gleichzeitig Root-Automatisierung auf dem Proxmox-Host dar.

    Der Autor weist transparent darauf hin, dass die Skripte mit KI-Unterstützung entstanden sind. Das ist für sich genommen weder gut noch schlecht. Positiv ist vor allem, dass das Repository kompakt genug ist, um den gesamten Code in einer halben Stunde vollständig zu verstehen.

    Bevor Sie ein beliebiges Community-Skript mit Root-Rechten starten, prüfen Sie gezielt die Abschnitte, die:

    • /etc/pve/lxc modifizieren
    • Proxmox-Benutzer oder Tokens anlegen
    • udev-Regeln editieren
    • Dateirechte für USB-Geräte anpassen
    • Systempakete installieren
    • Python-Pakete herunterladen
    • systemd-Units einrichten

    Es geht nicht darum, dem Entwickler böse Absichten zu unterstellen. Sie müssen jedoch zwingend verstehen, welche Befehle auf Ihrem Hypervisor ausgeführt werden; das gilt ausnahmslos für jedes Komfortskript.

    Ein Proxmox Health Check hilft dabei, den Zustand des Hosts strukturiert zu bewerten, doch Sie sollten Fremdcode stets verstanden haben, bevor er Teil Ihrer Plattform wird.

    Das beste physische Proxmox-Panel sollte unspektakulär sein

    Das Stream Deck ist das optisch auffällige Element, doch die eigentliche Qualität liegt in den unscheinbaren architektonischen Entscheidungen: Der Agent läuft isoliert in einem unprivilegierten LXC unter einem Nicht-Root-Benutzer. Er nutzt ein striktes Read-Only-API-Token und arbeitet ausschließlich mit GET-Anfragen. Sie können den Container jederzeit neu aufbauen, ohne den Hypervisor anzufassen. Und schlägt die USB-Kommunikation fehl, startet ein winziger zustandsloser Dienst neu, während der Host völlig unberührt bleibt.

    Genau das macht das Setup interessant: Es demonstriert ein Muster, das generell für Homelab-Tools vorbildlich ist. Bringen Sie Komfort-Werkzeuge nah an Ihre Infrastruktur heran, aber verleihen Sie ihnen niemals dieselben weitreichenden Privilegien wie der Infrastruktur selbst.

    Ein Stream Deck mit bunten Statuskacheln macht Spaß; eines, das dabei versehentlich absolut nichts beschädigen kann, ist die deutlich bessere Lösung.

    Häufig gestellte Fragen

    Kann ein Elgato Stream Deck Proxmox überwachen?

    Ja. Ein schlanker Python-Agent fragt die Proxmox-API ab und zeigt Metriken wie CPU, RAM, Festplatten, Gast-Status, Netzwerk und Dienstzustände auf den Stream-Deck-Tasten an.

    Sollte ein Stream-Deck-Monitoring Admin-Rechte in Proxmox besitzen?

    Nein. Weisen Sie ihm ein dediziertes API-Token mit der integrierten Rolle PVEAuditor oder einer vergleichbaren Read-Only-Rolle zu, damit das Panel keine VMs starten, stoppen oder verändern kann.

    Warum sollte der Stream-Deck-Agent im LXC laufen?

    Ein unprivilegierter LXC verbannt den USB-steuernden Python-Prozess vom Proxmox-Host. Sollte der Agent abstürzen oder kompromittiert werden, begrenzen Container-Isolation und Read-Only-Token den potenziellen Schaden.