Add Docker runtime helper and explicitly labelled service inventory
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# Docker-Laufzeit und Weitere Dienste
|
||||
|
||||
Decks Webserver besitzt keinen Docker-Socket. Ein kleiner, root-eigener
|
||||
Systemhelfer bietet über `/run/athena-deck-docker/control.sock` ausschließlich
|
||||
zwei feste Aktionen: Status/Inventar und Docker-Erstinstallation. Keine freie
|
||||
Shell, keine Exec-/Mount-/Container-Erstellungsoperationen. Unix-Dateirechte
|
||||
und Linux SO_PEERCRED begrenzen Clients auf root und die eingerichtete Deck-UID.
|
||||
Die öffentliche Deck-API verlangt eine Admin-Sitzung, POST zusätzlich den
|
||||
bestehenden CSRF-Schutz.
|
||||
|
||||
## Explizite Container-Zuordnung
|
||||
|
||||
Nur Container mit **beiden exakten Labels** erscheinen unter Weitere Dienste:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
studio:
|
||||
labels:
|
||||
io.athena-deck.managed: "true"
|
||||
io.athena-deck.role: "application"
|
||||
```
|
||||
|
||||
`docker ps -a` wird bereits beim Daemon auf diese Labels gefiltert. Es werden nur
|
||||
ID, Name, Image, Zustand und Status übertragen; keine Umgebungsvariablen,
|
||||
Mounts, Secrets oder Anwendungslogs. Vorhandene Container werden nicht automatisch
|
||||
übernommen. Labels sind eine explizite Zuordnung, keine Sicherheitsgrenze gegenüber
|
||||
jemandem mit eigenem Docker-Administratorzugriff.
|
||||
|
||||
Die erste Ansicht zeigt nur den Bestand. Ein Anwendungskatalog sowie Installation,
|
||||
Start/Stopp, Öffnen und Deinstallation einzelner Studios folgen separat mit
|
||||
anwendungsspezifischen Rezepten. Keine dekorativen, funktionslosen Aktionsknöpfe.
|
||||
Gewichte und Nutzerdaten werden durch diese Funktion nicht verändert.
|
||||
|
||||
## Bestehende Docker-Testinstallation anbinden
|
||||
|
||||
```sh
|
||||
sudo ./install.sh --docker-helper --directory /opt/athena-deck-dev/runtime
|
||||
```
|
||||
|
||||
Richtet ausschließlich `athena-deck-docker-helper.service` ein und erneuert Deck,
|
||||
um das private Helfer-Socketverzeichnis einzubinden. Kein Docker-Daemon-Neustart,
|
||||
keine Paketinstallation. Der Helfer läuft hier mit schreibgeschütztem System und
|
||||
**ohne Installationsrecht**. Bestehendes Docker wird nur erkannt und verwendet.
|
||||
Neue Docker-Testinstallationen richten diese lesende Anbindung automatisch ein.
|
||||
|
||||
## Optionales Nachinstallieren auf nativem Debian
|
||||
|
||||
Der native Deck-Basisinstaller muss den Helfer mit der tatsächlichen UID/GID des
|
||||
Deck-Service und ausdrücklich mit Installationsrecht provisionieren:
|
||||
|
||||
```sh
|
||||
sudo python3 deploy/setup_docker_helper.py --client-uid DECK_UID --client-gid DECK_GID --allow-install
|
||||
```
|
||||
|
||||
Die Flags DECK_UID/DECK_GID durch die numerischen Werte ersetzen. Der vollständige
|
||||
native Basisinstaller ist weiterhin noch nicht fertig; dieser Bootstrap ist separat.
|
||||
Anschließend bietet Einstellungen → Laufzeiten → Docker die Erstinstallation an.
|
||||
Vor Auslösung zeigt die GUI die konkreten Auswirkungen und verlangt die bewusste
|
||||
Bestätigung der Installation samt Dienst und Docker-Netzwerk-/Firewallregeln.
|
||||
|
||||
Unterstützt Debian 12/13, amd64/arm64. Installiert aus dem offiziellen signierten
|
||||
Docker-APT-Repository: docker-ce, docker-ce-cli, containerd.io, Buildx und Compose.
|
||||
Vorhandene Docker-/Containerd-Pakete, Konfigurationen oder Daten führen zum Abbruch
|
||||
vor Änderungen. Kein Entfernen von Konfliktpaketen, kein Upgrade bestehender
|
||||
Docker-Installationen, keine Treiberinstallation und kein Host-Reboot. NVIDIA
|
||||
Container Toolkit ist für GPU-Container separat erforderlich. Bereits vorhandenes
|
||||
Docker wird nicht über diese Oberfläche aktualisiert.
|
||||
|
||||
Paketinstallation läuft serverseitig weiter, wenn die Seite geschlossen wird.
|
||||
Kein Abbrechen mitten in dpkg; Fehler werden angezeigt, Teilinstallationen nicht
|
||||
blind repariert. Der Helfer muss apt und Maintainer-Skripte privilegiert ausführen;
|
||||
diese Berechtigung wird auf vorhandenen Athena-Installationen nicht aktiviert.
|
||||
|
||||
Tests decken API-Schutz, Label-Filter, verbotene Helferaktionen, feste Paketbefehle,
|
||||
Installationsfehler und Bestandsschutz ab. Ein echter Erstinstallationslauf auf
|
||||
einem frischen Debian-Host steht noch aus; auf Athena wird dafür nichts ersetzt.
|
||||
|
||||
API: `GET /api/v1/docker`, `POST /api/v1/docker/install` mit `{"confirm": true}`.
|
||||
Referenz: https://docs.docker.com/engine/install/debian/
|
||||
Reference in New Issue
Block a user