Skip to main content

Bookstack Proxmox VE Community Script

BookStack über Proxmox Community Scripts installieren

Die Installation von BookStack über die Proxmox VE Community Scripts ist sehr einfach. Sie erfolgt über dieses Skript:
Proxmox VE Community Script: Bookstack

Das Skript erstellt einen LXC-Container mit Debian und installiert sowie konfiguriert alles Notwendige.

Betriebssystem im Container (Stand Beispiel):

root@lxc-bookstack:~# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.2
ID=debian
...

MariaDB-Datenbank (Beispiel-Status):

root@lxc-bookstack:~# systemctl status mariadb --no-pager
● mariadb.service - MariaDB 12.2.1 database server
     Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; preset: enabled)
    Drop-In: /etc/systemd/system/mariadb.service.d
             └─migrated-from-my.cnf-settings.conf
     Active: active (running) since Sun 2025-12-14 14:15:56 UTC; 19min ago
...

Backup

Zum Sichern der BookStack-Dateien und Inhalte gibt es ein integriertes CLI-Tool.

  • Verbinde dich direkt mit dem LXC-Container (z. B. über die Proxmox-Konsole oder pct enter <CTID>)
  • Wechsle in das BookStack-Verzeichnis:
    cd /opt/bookstack
    
  • Starte den Backup-Befehl:
    ./bookstack-system-cli backup
    

Beispielausgabe:

WARNING: This CLI is in alpha testing.
There's a high chance of issues, and the CLI API is subject to change.
Checking system requirements...
Dumping the database via mysqldump...
Adding database dump to backup archive...
Adding BookStack upload folders to backup archive...
Adding BookStack theme folders to backup archive...
Saving backup archive...
Backup finished.
Output ZIP saved to: /opt/bookstack/storage/backups/bookstack-backup-2025-12-14-143913.zip

Die fertige Sicherung liegt dann als ZIP-Datei im Verzeichnis /opt/bookstack/storage/backups/.

Restore (Wiederherstellen)

Um ein Backup wiederherzustellen, gehe wie folgt vor:

  1. Verbinde dich mit dem LXC-Container
  2. Wechsle ins BookStack-Verzeichnis:
    cd /opt/bookstack
    
  3. Starte den Restore-Befehl und gib den Pfad zur ZIP-Datei an:
    ./bookstack-system-cli restore storage/backups/bookstack-backup-2025-12-12-162653.zip
    

Während des Vorgangs zeigt die CLI eine Zusammenfassung des Backup-Inhalts und warnt vor den Auswirkungen:

  • Bestehende Dateien und hochgeladene Inhalte werden überschrieben
  • Vorhandene Datenbanktabellen werden gelöscht
  • Die Zielinstanz muss die gleiche oder eine neuere BookStack-Version haben
  • Server-seitige Konfigurationen (z. B. /etc/...) werden nicht wiederhergestellt

Du wirst vor der eigentlichen Ausführung zur Bestätigung aufgefordert.

Wichtiger Hinweis zu Berechtigungen beim Restore von außerhalb des Containers

Dieser Abschnitt behandelt ein häufig auftretendes Problem, wenn man nach einem Restore keine Dateien mehr hochladen kann.

Wenn du das LXC-Root-Dateisystem auf dem Proxmox-Host gemountet hast und das Backup von außen in den Container kopiert hast, führe bookstack-system-cli niemals direkt auf dem Host aus. Das führt zu falschen Datei-Eigentümern und -Berechtigungen.

Falls das Problem bereits aufgetreten ist, kannst du die Berechtigungen vom Proxmox-Host aus korrigieren:

Beispiel (angenommen Container-ID = 120):

# LXC-Root-Dateisystem mounten
pct mount 120
# → mounted CT 120 in '/var/lib/lxc/120/rootfs'

# In das BookStack-Verzeichnis wechseln
cd /var/lib/lxc/120/rootfs/opt/bookstack

# Aktuelle Eigentümer prüfen
ls -l

Beispielausgabe (falsch):

root@pve:/var/lib/lxc/120/rootfs/opt/bookstack# ls -l
total 755
drwxr-xr-x 23 100033 100033 23 Dec 14 12:52 app
-rwxr-xr-x 1 100033 100033 1685 Dec 14 12:52 artisan

Korrektur der Berechtigungen:

chown -R 100033:100033 *

In dieser Installation entspricht 100033:100033 dem Benutzer und der Gruppe www-data innerhalb des Containers.

Hinweis:
Der Befehl php artisan bookstack:regenerate-permissions behebt keine Dateisystem-Berechtigungen oder Eigentümer. Er kann dieses Problem nicht lösen.

Empfohlene Vorgehensweise (Best Practice):

  1. LXC-Root-Dateisystem mounten (pct mount <CTID>)
  2. Backup-ZIP-Datei an den richtigen Ort kopieren
  3. Sofort die Berechtigungen korrigieren (chown -R 100033:100033 ...)
  4. Dateisystem wieder unmounten (pct unmount <CTID>)
  5. In den Container wechseln (pct enter <CTID>) und den Restore-Befehl ausführen

So bleiben die Berechtigungen durchgehend korrekt.