📖 Offizielles Docklite Wiki
Willkommen in der Dokumentation für Docklite – die radikal schlanke, sichere Alternative zu Portainer in Go und Astro.
1. Einführung
Docklite wurde entwickelt, um den immensen Ressourcenverbrauch von Portainer auf Servern, Raspberry Pis und Homelabs zu eliminieren. Während Portainer 150 bis über 300 MB Arbeitsspeicher beansprucht, benötigt Docklite lediglich 10 bis 15 MB RAM und liefert dennoch alle essentiellen Funktionen:
- Echtzeit-Monitoring von CPU-, RAM-, Disk- und Netzwerk-Verbrauch
- Container starten, stoppen, neustarten, pausieren und inspizieren
- Live-Log-Streaming direkt aus dem Docker-Multiplexing-Stream
- Vollständige HTTP REST API und SSE-Live-Events
2. Architektur & Docker-Socket
Docklite benötigt keine Container-in-Container-Konstrukte oder externe Datenbanken. Die Go-Binary kommuniziert direkt über den lokalen Docker-Socket:
- Linux: Unix Domain Socket unter
/var/run/docker.sock - Windows: Named Pipe unter
//./pipe/docker_engine
Das gesamte Astro-Frontend wird beim Build in statisches HTML/CSS/JS übersetzt und via embed.FS vollständig in die ausführbare Go-Datei eingebunden.
3. Installation & Setup
Docklite wird als eigenständige, statische Binary ohne externe Laufzeitabhängigkeiten bereitgestellt.
Empfohlen: Go Install (Automatisch Latest)
go install github.com/benzjeremy/docklite@latest docklite --port 8080
Vorkompilierte Binaries (Latest Release)
Alle vorkompilierten Archive für Linux (AMD64) und Windows (AMD64) stehen im GitHub Repository unter Releases (Latest) bereit.
Linux Standalone
# Auspacken und starten: tar -xzf docklite-*-linux-amd64.tar.gz ./docklite --port 8080
Windows Standalone
Lade docklite-*-windows-amd64.zip herunter, entpacke das Archiv und führe docklite.exe in der PowerShell oder per Doppelklick aus.
4. REST API Referenz
Alle API-Routen sind versioniert unter dem Präfix /api/v1/:
| Methode | Endpunkt | Beschreibung |
|---|---|---|
GET |
/api/v1/ping |
Prüft Docker-Socket Erreichbarkeit und Status |
GET |
/api/v1/system |
Liefert NCPU, Gesamtspeicher und Engine-Version |
GET |
/api/v1/containers?all=true&stats=true |
Liefert alle Container mit berechneten Stats |
GET |
/api/v1/containers/{id}/stats |
Gibt CPU %, Mem MB & %, Net und Disk I/O zurück |
GET |
/api/v1/containers/{id}/top |
Gibt laufende Linux-Prozesse (PID, User, Time, CMD) des Containers zurück |
GET |
/api/v1/containers/{id}/logs?tail=150 |
Demuxte Stdout/Stderr Logs mit Timestamp-Parsing |
POST |
/api/v1/containers/{id}/{action} |
Aktionen: start, stop, restart, pause, unpause |
POST |
/api/v1/containers/{id}/update |
Aktualisiert Container-Konfiguration (z. B. RestartPolicy) |
DELETE |
/api/v1/containers/{id}?force=true |
Entfernt einen Container (optional mit Force) |
POST |
/api/v1/images/pull |
Zieht ein Image aus der Registry (inkl. Live-Progress-Stream) |
DELETE |
/api/v1/images/{id}?force=true |
Löscht ein lokales Docker Image |
GET |
/api/v1/volumes |
Listet alle lokalen Docker Volumes auf |
GET |
/api/v1/networks |
Listet alle Docker Netzwerke inklusive Subnetzen & Gateways auf |
GET |
/api/v1/live |
Server-Sent Events (SSE) Stream aller Container-Metriken in Echtzeit |
5. Systemd Service Setup (Linux)
Erstelle die Datei /etc/systemd/system/docklite.service:
[Unit] Description=Docklite - Lightweight Docker Monitor After=docker.service Requires=docker.service [Service] Type=simple User=root ExecStart=/usr/local/bin/docklite --port 8080 Restart=always RestartSec=5s [Install] WantedBy=multi-user.target
Aktivieren mit:
sudo systemctl daemon-reload sudo systemctl enable --now docklite
6. Sicherheitsarchitektur
Docklite implementiert strikte Sicherheitsrichtlinien gemäß Jeremy Benz' Coding Standards:
- Anti-DNS-Rebinding: Der HTTP-Host-Header wird validiert. Fremde Domainnamen werden mit HTTP 403 abgewiesen.
- Anti-CSRF: Mutierende POST-Requests validieren Origin- und Referer-Header.
- Strikte Security-Header: Content Security Policy (CSP),
X-Frame-Options: DENY,X-Content-Type-Options: nosniff. - Optionale Token-Authentifizierung: Mittels
--token <token>wird jeder API-Request autorisiert.