# Docker Stack Stats UI (v5) Ein leichtgewichtiges Dashboard für die Übersicht über Docker-Stacks und deren Container-Ressourcen (CPU, RAM, Container). Die Node.js-Serverkomponente wertet Docker-Statistiken aus, stellt sie über eine kleine REST-API bereit und liefert eine statische Weboberfläche aus `public/`. ## Highlights - Gruppierte Ansicht nach Stack/Compose-Projekt mit persistierbarem Toggle für Stapel-/Flat-Ansicht - Sortierbare Spaltenköpfe und kompakteres UI für doppelt so viele Zeilen auf einen Blick - System- und Container-RAM-Anzeige inklusive prozentualer Nutzung des Hosts - Flat-View mit Spalten-filtern, Stack-Spalte und adaptiver Detailsicht ## Projektstruktur - `server.js`: Express-Server, Basis-Auth, Docker-Stats-Erfassung und API-Endpunkte - `public/`: Gebündelte UI für das Dashboard - `web/`: Alternative Version der Oberfläche (für Referenz oder eigenes Frontend) - `docker-compose.yml` & `Dockerfile`: Containerisierung - `extension/`: eigenständige Browser-Erweiterung (nicht Teil der Runtime, liegt hier als Referenz) ## Voraussetzungen - Docker Engine (Abfrage über Socket `/var/run/docker.sock`) - Node.js 18+ (für lokale Entwicklung) ## Lokale Entwicklung 1. Repository klonen und Abhängigkeiten installieren: ```bash npm install ``` 2. Server starten (liefert UI unter http://localhost:8080): ```bash npm start ``` 3. Alternativ mit einem Live-Proxy bzw. lokalen Backend an `server.js` binden und `public/` separat hosten. ## Docker 1. Image bauen: ```bash docker build -t docker-stack-stats-ui . ``` 2. Beispiel-Container starten (Docker-Socket mounten, optional Basic Auth): ```bash docker run -d --name stack-stats -p 8080:8080 \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ -e BASIC_AUTH_USER=me -e BASIC_AUTH_PASS=secret \ --restart unless-stopped \ docker-stack-stats-ui ``` 3. Oder mit Docker Compose: ```bash docker compose up -d ``` ## Konfiguration (Umgebungsvariablen) - `PORT` (Default: `8080`) - `BASIC_AUTH_USER` + `BASIC_AUTH_PASS`: Aktivieren Basic Auth; die Werte werden für den Zugriff auf das Dashboard geprüft. - `MEM_SUBTRACT_CACHE` (`true`/`false`, Default `true`): Zieht Caches aus dem Statistik-Usage, um die sichtbare RAM-Nutzung auf aktiv verwendete Speicher zu begrenzen. ## API-Endpunkte - `GET /api/summary`: Gesamtdaten pro Stack inklusive CPU/MEM, Host-Systeminformationen. - `GET /api/group/:name`: Detailinformationen zu einem Stack (Container-Liste, Summen). - `GET /api/containers`: Liste aller Container (Name, Stack, CPU %, RAM MiB, Host-%). - `GET /health`: Prüft Docker-Ping und Anzahl der Container; nützlich für Monitoring. Alle Antworten sind JSON; Fehler mit HTTP 500 liefern ein `error`-Feld. ## Sicherheit & Betrieb - Der Zugriff erfolgt über die statischen Dateien in `public/`, daher sollte der Container nur intern erreichbar gemacht oder Basic Auth aktiviert werden. - Der Server benötigt nur Leserechte auf `/var/run/docker.sock`, daher ist das Mounten im `:ro`-Modus empfehlenswert. - Neustart-policy (`unless-stopped`) sichert den Betrieb über Host-Reboots.