# 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 `Widgets` und `Network`) - CMake ≥ 3.16 - C++17-Compiler - Ein Unraid-Server mit aktivierter API (Unraid 7.x) ## Bauen ```bash cmake -B build -DCMAKE_BUILD_TYPE=Release cmake --build build -j$(nproc) ``` Das fertige Binary liegt anschließend unter `build/unraid-monitor`. ## Verwendung ```bash ./build/unraid-monitor ``` Beim ersten Start öffnet sich der Einstellungsdialog: 1. **API-Key erstellen** – in der Unraid-WebGUI unter *Einstellungen → Management Access → API Keys* (Lese-Rechte genügen) 2. **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 3. **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://` schlägt mit `tlsv1 unrecognized name` fehl – in dem Fall den Hostnamen statt der IP verwenden (z. B. `https://.myunraid.net` oder `https://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 |