| src | ||
| .gitignore | ||
| CMakeLists.txt | ||
| README.md | ||
Unraid Monitor
Ein leichtgewichtiger Desktop-Monitor für Unraid-Server auf Basis von C++ und Qt6. Liest Live-Daten über die offizielle Unraid GraphQL API und zeigt sie in einem aufgeräumten Dark-Mode-Dashboard – Festplatten, SMART-Werte, Docker-Container und Systemstatus auf einen Blick.
Funktionen
- System – Hostname, Unraid-/API-Version, Kernel, CPU, Uptime sowie CPU- und RAM-Auslastung mit Farbbalken
- Array – Status, Kapazität, freier Speicher und Fehlerzähler
- Pools / Cache – Belegung und Temperatur je Pool
- Festplatten – Parität und Daten-Disks mit Größe, Temperatur (inkl. Standby-Erkennung), Status, Fehlern und Belegung
- SMART / Laufwerke – Modell, Seriennummer, Schnittstelle, Temperatur und SMART-Status aller physischen Laufwerke
- Docker – Container mit Status-Anzeige (läuft / pausiert / gestoppt), Image, Laufzeit und Autostart
- Anpassbar – jedes Modul lässt sich einzeln ein- und ausblenden
- Automatische Aktualisierung mit konfigurierbarem Intervall
Voraussetzungen
- Qt 6 (Module
WidgetsundNetwork) - CMake ≥ 3.16
- C++17-Compiler
- Ein Unraid-Server mit aktivierter API (Unraid 7.x)
Bauen
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
Das fertige Binary liegt anschließend unter build/unraid-monitor.
Verwendung
./build/unraid-monitor
Beim ersten Start öffnet sich der Einstellungsdialog:
- API-Key erstellen – in der Unraid-WebGUI unter Einstellungen → Management Access → API Keys (Lese-Rechte genügen)
- Server-URL eintragen, z. B.
http://192.168.1.10- Bei HTTPS auf einem abweichenden Port den Port mit angeben:
https://tower.local:8443 - Bei selbstsigniertem Zertifikat die Option SSL-Zertifikatsfehler ignorieren aktivieren
- Bei HTTPS auf einem abweichenden Port den Port mit angeben:
- Intervall (3–600 s) und die gewünschten Module wählen
Die Einstellungen werden über QSettings gespeichert (unter Linux in ~/.config/tronax/unraid-monitor.conf).
Hinweis zu HTTPS: Unraids nginx bedient bei aktiviertem SSL nur den passenden Hostnamen (SNI). Ein Zugriff über
https://<IP>schlägt mittlsv1 unrecognized namefehl – in dem Fall den Hostnamen statt der IP verwenden (z. B.https://<hash>.myunraid.netoderhttps://tower.local).
Hinweis zur Sicherheit
Der API-Key wird unverschlüsselt in der Konfigurationsdatei abgelegt. Für eine gehärtete Speicherung (z. B. über den System-Schlüsselbund) müsste die Ablage auf QtKeychain / Secret Service umgestellt werden.
Projektstruktur
| Datei | Zweck |
|---|---|
src/main.cpp |
Einstiegspunkt, Dark-Theme-Setup |
src/MainWindow.* |
Hauptfenster, Karten-Layout, Auto-Refresh |
src/UnraidClient.* |
GraphQL-Client und Antwort-Parsing |
src/Cards.* |
Dashboard-Module (Karten) |
src/SettingsDialog.* |
Konfigurationsdialog |
src/Settings.h |
Laden/Speichern der Einstellungen |
src/Theme.h |
Farbpalette und Stylesheet |