Add encrypted configuration backup and planned restore

This commit is contained in:
Mikei386
2026-09-30 14:20:21 +02:00
parent 18adaf4a52
commit e7a1deaab0
22 changed files with 844 additions and 28 deletions
+8 -5
View File
@@ -2,8 +2,8 @@
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
feste Aktionen für Status/Inventar, Docker-Erstinstallation, registrierte Videodienste
und begrenzten Konfigurations-Backup/Restore. Keine freie Shell oder Docker-RPC. 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.
@@ -20,9 +20,10 @@ services:
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
`docker ps -a` wird bereits beim Daemon auf diese Labels gefiltert. Die normale Inventaransicht überträgt nur
ID, Name, Image, Zustand und Status. Der ausdrücklich angeforderte, verschlüsselte Backup-Export
sichert zusätzlich die Konfigurationen markierter Anwendungen einschließlich Secret-Dateien;
Anwendungslogs und Medien bleiben ausgeschlossen. Vorhandene Container werden nicht automatisch
übernommen. Labels sind eine explizite Zuordnung, keine Sicherheitsgrenze gegenüber
jemandem mit eigenem Docker-Administratorzugriff.
@@ -103,3 +104,5 @@ Der eigenständige KI-Bereich Video speichert lediglich die aktive Laufzeit-ID.
Interne Verwaltungs-API: GET `/api/v1/video`, POST `/api/v1/video/service` mit `{ "id": "ltx" }`, POST `/api/v1/video/mode` mit `{ "mode": "video" }` oder `llm`. Bestehender Sitzungsschutz gilt. Start/Stop laufen asynchron und zeigen Phase sowie API-Bereitschaft.
Der zusätzliche Transport `video-http` ist nur über das private Unix-Socket zugänglich und an registrierte Dienst-IDs gebunden. Zielhost und Upstream-Zugangsdaten stammen ausschließlich aus der root-eigenen Konfiguration, niemals aus einer Client-Anfrage. Keine Redirect-Verfolgung, kein freier HTTP-Proxy. Payloads werden gestreamt und nicht protokolliert. Der öffentliche Deck-Endpunkt prüft vorher seinen Bearer-Token und den aktiven Videomodus.
Konfigurations-Backup und eingeschränkte Container-Wiederherstellung: [Backup & Restore](../BACKUP.md).