Apps
Apps sind Docker-Compose-Stacks. Jede App ist ein Verzeichnis /appdata/<name>/ mit einer Compose-Datei (docker-compose.yml, compose.yaml, compose.yml oder docker-compose.yaml) und einer .env-Datei. Der Verzeichnisname ist zugleich der Compose-Projektname, deshalb verhalten sich Stacks, die du per Hand mit docker compose up -d im Verzeichnis gestartet hast, genauso wie in der Oberfläche angelegte.
Voraussetzungen
- Docker Engine und das Compose-Plugin aus dem Debian-Repository von Docker (richtet der Installer ein).
/appdatasollte ein ZFS-Dataset auf dem Apps-Pool sein, z. B.apps/appdatamit Mountpoint/appdata. Liegt/appdatanicht auf ZFS, landet alles auf der Systemplatte; die Oberfläche weist darauf hin. Weil/appdataschon die Bunkerbox-Installation enthält, wird das Dataset mit „Vorhandenen Inhalt übernehmen“ angelegt, siehe Speicher.- Compose- und
.env-Dateien werden nur als normale Dateien gelesen und geschrieben, nie über symbolische Links: Container, die ihr Stack-Verzeichnis einbinden, könnten sonst über einen Link Dateien des Hosts überschreiben lassen. Ein Link an dieser Stelle wird mit einer Fehlermeldung abgelehnt. - Das Verzeichnis
/appdata/bunkerboxgehört Bunkerbox selbst und wird nie als App angezeigt.
Die Seite Apps zeigt oben, ob Docker installiert ist und läuft, die Versionen von Docker und Compose sowie das Dataset von /appdata.
Übersicht
Die Liste zeigt jede App mit Status, laufenden Containern und veröffentlichten Ports:
| Status | Bedeutung |
|---|---|
| Läuft | alle Container laufen |
| Teilweise aktiv | ein Teil der Container läuft |
| Gestoppt | keine Container oder alle beendet |
| Fehler | ein Container startet ständig neu, ist defekt oder meldet unhealthy |
| Unbekannt | Docker läuft nicht |
Die Seite aktualisiert sich automatisch (alle 10 s, während eines Vorgangs alle 2 s).
Aktionen
| Aktion | Befehl |
|---|---|
| Starten | docker compose up --detach --remove-orphans |
| Stoppen | docker compose down --remove-orphans |
| Neu starten | docker compose restart |
| Aktualisieren | docker compose pull, danach up --detach --remove-orphans (erstellt geänderte Container neu) |
Aktionen laufen im Hintergrund. Die Ausgabe erscheint live unter Letzter Vorgang. Pro App läuft höchstens ein Vorgang; solange einer läuft, sind weitere Aktionen, Speichern und Löschen gesperrt, und ein Update von Bunkerbox wird verweigert.
App anlegen und bearbeiten
Neue App öffnet den Editor:
- Name: Kleinbuchstaben, Ziffern,
-und_, höchstens 64 Zeichen. Reserviert sindbunkerbox,docker,summary,validate,operations,newundcatalog. - Compose-Datei: neue Apps bekommen
docker-compose.yml. Relative Pfade wie./datazeigen in das App-Verzeichnis. - Umgebung (.env): wahlweise als Schlüssel/Wert-Tabelle oder als Text. Die Tabelle behält Kommentare und Reihenfolge bei; Zeilen, die keine gültige Zuweisung sind, bleiben unverändert im Text. Die
.envwird mit Rechten 600 gespeichert (nur root kann sie lesen). - Nach dem Anlegen starten: führt direkt
upaus.
Prüfen führt docker compose config mit dem ungespeicherten Inhalt aus. Fehler werden mit der Originalmeldung von Compose angezeigt. Zusätzlich weist die Prüfung auf riskante Einstellungen hin:
privileged: true,network_mode: host,pid: host- eingebundener Docker-Socket (
/var/run/docker.sock), der root-Zugriff auf den Host bedeutet - eingebundene Systempfade wie
/,/etc,/root,/boot,/usr,/proc,/sys,/var/lib/dockeroder/appdata/bunkerbox - Warnungen von Compose, z. B. nicht gesetzte Variablen
Gespeichert wird nur, wenn die Prüfung ohne Fehler durchläuft. Änderungen wirken erst nach Neu starten bzw. Aktualisieren. Compose-Dateien dürfen höchstens 256 KiB, .env-Dateien höchstens 64 KiB groß sein.
Logs
Der Reiter Logs zeigt docker compose logs mit Zeitstempeln, wahlweise für alle oder einen Dienst und mit 100 bis 5000 Zeilen. Mit Mitlaufen fragt die Seite alle 2 s nur die neuen Zeilen ab.
App löschen
App löschen verlangt die Eingabe des App-Namens und führt docker compose down --remove-orphans aus. Optional:
- Auch benannte Docker-Volumes löschen (
--volumes). - Auch das Verzeichnis löschen: entfernt
/appdata/<name>mit allen Daten. Ist das Verzeichnis ein eigenes Dateisystem (z. B. ein eigenes Dataset) oder ein symbolischer Link, wird das Löschen verweigert; ein Dataset löschst du unter Speicher.
Ohne diese Optionen bleiben Verzeichnis und Daten erhalten. Gelöschte Daten lassen sich nur aus einem Snapshot wiederherstellen.
Testmodus
Mit BUNKERBOX_MOCK=1 simuliert Bunkerbox fünf Apps auf dem Dataset apps/appdata: Jellyfin, Nextcloud (App, MariaDB, Redis), Paperless (ein Container beendet), Home Assistant (Host-Netzwerk) und Vaultwarden (gestoppt). Aktionen, Prüfung und Logs werden simuliert; es wird nichts auf dem Rechner verändert.