Files
stack-stats-dashboard/README.md
2025-11-11 10:36:31 +01:00

69 lines
3.1 KiB
Markdown

# 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.