diff --git a/README.md b/README.md new file mode 100644 index 0000000..82be366 --- /dev/null +++ b/README.md @@ -0,0 +1,64 @@ +# 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 |