69 lines
3.1 KiB
Markdown
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.
|