Zum Hauptinhalt springen

Installation

Bunkerbox läuft nativ auf Debian 13 (trixie), 64 Bit, als systemd-Dienst bunkerbox mit root-Rechten (nötig für ZFS, Samba, NFS, Benutzerverwaltung und Docker). Docker wird nur für Apps verwendet, nicht für Bunkerbox selbst.

Installation mit einem Befehl​

Als root auf dem frisch installierten Debian:

curl -fsSL https://bunkerbox.znbw.de/install.sh | sudo bash

Das Skript lädt die aktuelle Version von der Homepage, prüft die SHA256-Prüfsumme und startet deploy/install.sh aus dem Paket. Das Paket ist fertig gebaut, auf dem Zielsystem wird nichts kompiliert.

Am Ende fragt das Skript nach dem Namen und Passwort des ersten Administrators (siehe unten).

Was das Skript einrichtet​

  • Debian-Komponente contrib (für OpenZFS), falls noch nicht aktiv, als /etc/apt/sources.list.d/bunkerbox-contrib.sources
  • Pakete: zfs-dkms, zfsutils-linux, linux-headers-<arch>, samba, nfs-kernel-server, nfs-common, cifs-utils, acl, smartmontools, lm-sensors, parted, gdisk, perl, curl
  • Docker Engine und das Compose-Plugin aus dem Debian-Repository von Docker (/etc/apt/sources.list.d/docker.sources)
  • Node.js 24 (NodeSource), falls keine passende Version vorhanden ist
  • Pakete der Zusatzfunktionen (auch bei jedem Update nachinstalliert): incus, ovmf, rsync, rclone, openssh-client, nut-server, nut-client, hdparm, e2fsprogs, openssl
  • ein selbstsigniertes Zertifikat für HTTPS unter /appdata/bunkerbox/data/tls/ (HTTPS wird unter Sicherheit eingeschaltet)
  • die Dienste smbd, nfs-server und docker (aktiviert und gestartet)
  • die Gruppe bunkerbox-admin und den ersten Administrator
  • den Dienst bunkerbox (Port 80)

Mit BUNKERBOX_SKIP_ZFS=1 bzw. BUNKERBOX_SKIP_DOCKER=1 lassen sich ZFS bzw. Docker überspringen.

Erster Administrator​

Administratoren sind Linux-Benutzer in der Gruppe bunkerbox-admin. Das Installationsskript legt den ersten an, sobald noch keiner existiert:

  • interaktiv: Abfrage von Name und Passwort am Terminal (funktioniert auch bei curl … | sudo bash)
  • ohne Terminal: BUNKERBOX_ADMIN=<name> und BUNKERBOX_ADMIN_PASSWORD=<passwort> setzen

Ein bereits vorhandener Linux-Benutzer wird nur zur Gruppe hinzugefügt und behält sein Passwort. Ein neuer Benutzer bekommt keine Login-Shell (/usr/sbin/nologin); das Passwort wird als Linux- und als Samba-Passwort gesetzt.

Weitere Administratoren:

sudo /appdata/bunkerbox/app/deploy/install.sh --add-admin <name>

Ablage​

PfadInhalt
/appdata/bunkerbox/releases/<version>installierte Versionen (die letzten drei bleiben erhalten)
/appdata/bunkerbox/appSymlink auf die aktive Version
/appdata/bunkerbox/dataEinstellungen, Sitzungen, Daten der Bereiche, Zugangsdaten für Netzlaufwerke (Rechte 700)
/appdata/bunkerbox/bunkerbox.envoptionale Umgebungsvariablen, z. B. PORT (Rechte 600)

Nach Änderungen an bunkerbox.env: systemctl restart bunkerbox.

Bunkerbox wird direkt angesprochen, ohne Reverse-Proxy. Der Dienst startet node --require ./preload.cjs server.js; das kleine Vorladeskript reicht die tatsächliche Gegenstelle jeder Verbindung an die Anwendung weiter, damit die Anmeldesperre nicht mit gefälschten X-Forwarded-For-Kopfzeilen umgangen werden kann. Steht doch ein Reverse-Proxy davor (z. B. für HTTPS), trägst du ihn in bunkerbox.env ein:

BUNKERBOX_TRUSTED_PROXIES=127.0.0.1, 10.0.0.0/8

Adressen und Netze (IPv4 und IPv6, CIDR) werden durch Komma oder Leerzeichen getrennt. Nur Anfragen von diesen Adressen dürfen X-Forwarded-For und X-Forwarded-Proto setzen; als Client-Adresse gilt der rechte Eintrag von X-Forwarded-For, der kein vertrauenswürdiger Proxy ist.

Bunkerbox und /appdata auf ZFS​

Bunkerbox selbst liegt unter /appdata/bunkerbox – bei der Installation meist noch auf der Systemplatte. Soll /appdata später ein Dataset auf dem Apps-Pool werden, legst du es unter Speicher → Datasets mit Einhängepunkt /appdata und „Vorhandenen Inhalt übernehmen“ an: Bunkerbox kopiert dann zuerst alles aus /appdata (einschließlich der eigenen Installation) in das neue Dataset und hängt es erst danach dort ein (siehe Speicher). Die Dienst-Unit wartet mit RequiresMountsFor beim Systemstart, bis /appdata/bunkerbox eingehängt ist.

Installation aus dem Quellcode​

Aus einer Kopie des Repos als root:

./deploy/install.sh

Das Skript baut dann zuerst ein Release-Paket (scripts/pack-release.sh, braucht Node.js) und installiert es wie oben.

Updates und Rollback: siehe Updates.