Zum Hauptinhalt springen

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).
  • /appdata sollte ein ZFS-Dataset auf dem Apps-Pool sein, z. B. apps/appdata mit Mountpoint /appdata. Liegt /appdata nicht auf ZFS, landet alles auf der Systemplatte; die Oberfläche weist darauf hin. Weil /appdata schon 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/bunkerbox gehö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:

StatusBedeutung
Läuftalle Container laufen
Teilweise aktivein Teil der Container läuft
Gestopptkeine Container oder alle beendet
Fehlerein Container startet ständig neu, ist defekt oder meldet unhealthy
UnbekanntDocker läuft nicht

Die Seite aktualisiert sich automatisch (alle 10 s, während eines Vorgangs alle 2 s).

Aktionen​

AktionBefehl
Startendocker compose up --detach --remove-orphans
Stoppendocker compose down --remove-orphans
Neu startendocker compose restart
Aktualisierendocker 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 sind bunkerbox, docker, summary, validate, operations, new und catalog.
  • Compose-Datei: neue Apps bekommen docker-compose.yml. Relative Pfade wie ./data zeigen 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 .env wird mit Rechten 600 gespeichert (nur root kann sie lesen).
  • Nach dem Anlegen starten: führt direkt up aus.

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/docker oder /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.