Backup + Migration
❓ Ich habe BookStack per Docker installiert (wie in der Anleitung). Kannst du mir bitte erklären, wie ich Backups erstelle (vollständige Inhaltssicherung), sodass ich die Website bei Bedarf z.B. zu einem anderen Server/Domain umziehen kann? Hier ist die offizielle Anleitung von BookStack.
Vollständiges BookStack-Backup (Docker) – so, dass ein Umzug auf anderen Server/Domain klappt 🧰📦
Du brauchst für eine komplette, wiederherstellbare Sicherung im Wesentlichen zwei Bausteine:
- Datenbank (alle Seiten, Bücher, Nutzer, Rechte, Einstellungen …)
- Dateien/Config (Uploads, Anhänge,
.env/APP_KEY, ggf. Themes/Module)
Da du das Setup wie in deiner Anleitung hast (/opt/bookstack mit docker-compose.yml, Volumes ./mariadb und ./bookstack), ist das erfreulich simpel.
✅ Was genau muss gesichert werden?
1) Datenbank (MariaDB)
- Inhalt steckt im DB-Container, in deinem Setup dauerhaft unter:
./mariadb(als Volume./mariadb:/config)
- Sauberster Weg: SQL-Dump (portabel, versionstolerant)
2) Dateien (BookStack-Container-Volume)
- Persistente Daten liegen bei dir unter:
./bookstack(als Volume./bookstack:/config)
- Darin sind insbesondere wichtig:
.env(inkl. APP_KEY!)- Uploads/Attachments
- ggf.
www/themes/custom/...(deine Hacks/Module)
3) Compose/Caddy (für den Umzug hilfreich)
docker-compose.ymlCaddyfile- Caddy-Daten optional:
./caddy/data&./caddy/config(Zertifikate/State).
Nicht zwingend nötig, aber spart manchmal Re-Issue/Rate-Limits.
🗂️ Backup erstellen (empfohlenes Vorgehen)
Annahme: Projekt liegt in
/opt/bookstackund die Container heißen wie in deiner YAML:
bookstack-mariadbundbookstack.
Schritt 1: Backup-Ordner anlegen
cd /opt/bookstack
mkdir -p backups
Schritt 2: Datenbank als SQL dumpen 💾
docker exec -i bookstack-mariadb \
mysqldump -u bookstack -pbookstack \
--single-transaction --routines --triggers \
bookstack > backups/bookstack-db-$(date +%F).sql
Wichtig: Ersetze -pbookstack durch dein echtes Passwort (aus MYSQL_PASSWORD).
Alternativ (sicherer, weil Passwort nicht in der Shell-History landet):
Lass-p...weg, dann fragtmysqldumpinteraktiv nach dem Passwort:docker exec -it bookstack-mariadb mysqldump -u bookstack -p --single-transaction --routines --triggers bookstack > backups/bookstack-db-$(date +%F).sql
Schritt 3: Dateien/Volumes archivieren 📦
tar -czvf backups/bookstack-files-$(date +%F).tar.gz \
docker-compose.yml Caddyfile \
bookstack mariadb caddy
Wenn du Caddy nicht mitsichern willst, geht auch schlanker:
tar -czvf backups/bookstack-files-$(date +%F).tar.gz \
docker-compose.yml Caddyfile \
bookstack mariadb
Schritt 4: (Optional) Integritätscheck ✅
ls -lh backups/
head -n 5 backups/bookstack-db-*.sql
tar -tzf backups/bookstack-files-*.tar.gz | head
🔁 Restore (auf neuem Server) – inkl. Domain/URL-Umzug
Schritt 0: Voraussetzungen
- Docker + Docker Compose installiert
- DNS der neuen Domain zeigt auf den neuen Server (für HTTPS via Caddy)
Schritt 1: Backup rüberkopieren
Auf alten Server packen oder direkt kopieren:
scp -r /opt/bookstack/backups user@neuer-server:/opt/bookstack/
Schritt 2: Dateien wiederherstellen (Compose/Volumes) 📂
Auf dem neuen Server:
cd /opt/bookstack
tar -xvzf backups/bookstack-files-YYYY-MM-DD.tar.gz
(Datum natürlich anpassen.)
Schritt 3: Container starten (DB soll schon laufen) 🐳
cd /opt/bookstack
docker compose up -d mariadb
Warte ein paar Sekunden, bis MariaDB bereit ist.
Schritt 4: Datenbank importieren 🧩
cat backups/bookstack-db-YYYY-MM-DD.sql | \
docker exec -i bookstack-mariadb mysql -u bookstack -pbookstack bookstack
Wieder: Passwort anpassen bzw. interaktiv nutzen.
Schritt 5: BookStack starten
docker compose up -d
🌍 Domain/URL geändert? (sehr wichtig!)
Wenn du auf eine andere URL/Domain umziehst, musst du:
1) APP_URL im .env anpassen
In deinem Volume liegt die .env typischerweise unter:
./bookstack/www/.env(häufig bei linuxserver/bookstack)- oder
./bookstack/.env(je nach Image/Setup)
Suche sie so:
find /opt/bookstack/bookstack -maxdepth 3 -name ".env" -print
Dann APP_URL=https://neue-domain.tld setzen.
Achte darauf: Die
APP_KEYmuss die alte bleiben (sonst gehen u.a. verschlüsselte Daten kaputt, z. B. MFA-Secrets).
2) BookStack-Command: „Update System URL“
Damit Inhalte/Links in der DB sauber umgeschrieben werden:
docker exec -it bookstack php /app/www/artisan bookstack:update-url https://alte-domain.tld https://neue-domain.tld
(Falls der Pfad im Container anders ist, funktioniert oft auch: php artisan ... aus /app/www.)
🧠 Praktische Hinweise (damit’s wirklich „umzugsicher“ ist)
-
Backup immer offsite speichern (anderes System/Storage).
-
Datenbank-Dump + Datei-Archive ist am portabelsten.
-
Wenn du auf eine neuere BookStack-Version wiederherstellst:
-
Restore DB
-
Container hoch
-
Dann Migration laufen lassen (falls nötig):
docker exec -it bookstack php /app/www/artisan migrate --force
-
Wenn du willst: Ich mache dir ein „1-Kommando-Backup-Skript“ 🧾
Sag mir kurz:
- Liegt deine
.envunterbookstack/www/.env? - Wie heißen deine Container wirklich (
docker ps-Auszug)? - Willst du Caddy-Zertifikate mitsichern oder lieber nicht?
Dann gebe ich dir ein kleines Skript inkl. Rotation (z. B. „halte die letzten 7 Backups“) und optionalem Upload zu S3/Hetzner Storage Box.