BookStack auf dem Synology NAS installieren: das Firmen-Wiki für IT-Dokumentation
BookStack als selbstgehostetes Firmen-Wiki auf dem Synology NAS – mit linuxserver.io-Image, MariaDB und Container Manager. Schritt-für-Schritt mit APP_KEY-Generierung und Verifikation nach jedem Schritt.

Wer im KMU-Alltag IT-Dokumentation betreibt, kennt das Problem: Netzwerkpläne liegen im E-Mail-Postfach, Zugangsdaten stehen auf Notizzetteln, und das Notfallhandbuch existiert – irgendwo. BookStack löst genau dieses Problem. Es ist eine quelloffene, selbst gehostete Dokumentationsplattform (MIT-Lizenz), aufgebaut auf Laravel/PHP, die Wissen hierarchisch in Regalen, Büchern, Kapiteln und Seiten strukturiert. Der integrierte WYSIWYG-Editor macht sie für alle Teammitglieder zugänglich, ohne technische Vorkenntnisse zu verlangen. Als Confluence- oder Notion-Alternative ohne laufende Lizenzkosten ist BookStack besonders für IT-Admins und KMU-Betreiber interessant, die bereits ein Synology NAS als Self-Hosted-Infrastruktur betreiben.
Voraussetzungen
- Synology NAS mit x86-64-CPU (Intel/AMD) oder ARM64-SoC und DSM 7.2 oder neuer
- Mindestens 2 GB RAM empfohlen (BookStack ~200 MB + MariaDB ~100 MB im Betrieb)
- Synology Container Manager aus dem Package Center installiert (ersetzt das ältere Docker-Paket)
- SSH-Zugang zum NAS für die APP_KEY-Generierung und PUID/PGID-Ermittlung
- Mindestens 10 GB freier Speicherplatz auf /volume1
- Feste lokale IP-Adresse oder DDNS-Hostname (für APP_URL)
- Optional: eigene Domain und SSL-Zertifikat für HTTPS-Betrieb hinter dem Synology Reverse Proxy
Schritt 1: PUID/PGID ermitteln und Ordnerstruktur anlegen
Das linuxserver.io-Image benötigt die korrekten Benutzer- und Gruppen-IDs des NAS-Dateisystems, damit der Container Dateien im gemounteten Volume lesen und schreiben darf. Auf Synology-Systemen weichen diese Werte häufig von den generischen Standardwerten 1000/1000 ab.
Öffne eine SSH-Verbindung zu deinem NAS (z. B. mit PuTTY oder dem macOS-Terminal) und führe folgenden Befehl aus:
id
Die Ausgabe sieht beispielsweise so aus:
uid=1026(dein-benutzer) gid=100(users) groups=100(users),101(administrators)
Notiere dir die Werte für uid= und gid=. Typisch auf Synology: PUID=1026, PGID=100. Lege danach die Verzeichnisse per File Station oder SSH an:
mkdir -p /volume1/docker/bookstack/config
mkdir -p /volume1/docker/bookstack/db
Verifizieren: Führe nach dem Anlegen folgenden Befehl aus – beide Verzeichnisse müssen erscheinen:
ls /volume1/docker/bookstack/
config db
Schritt 2: APP_KEY generieren
Der APP_KEY ist der Laravel-Verschlüsselungsschlüssel von BookStack. Ohne ihn – oder mit einem leeren Wert – startet der Container zwar, zeigt aber sofort eine 500-Fehlerseite. Der Schlüssel muss vor dem ersten Start generiert werden.
Führe in der SSH-Sitzung folgenden Einmalbefehl aus. Der Container wird nach der Ausgabe sofort wieder entfernt (--rm):
docker run -it --rm --entrypoint /bin/bash \
lscr.io/linuxserver/bookstack:latest appkey
Die Ausgabe enthält eine Zeile der Form:
base64:AbCdEfGhIjKlMnOpQrStUvWxYz1234567890AbCdEfG=
Kopiere den kompletten String inklusive base64:-Präfix. Du trägst ihn im nächsten Schritt in die compose.yaml ein.
Verifizieren: Die Ausgabe beginnt exakt mit base64: und ist rund 45 Zeichen lang. Enthält sie kein Leerzeichen (abgesehen vom abschließenden =), ist sie gültig.
Schritt 3: compose.yaml erstellen
Öffne im Synology Container Manager die Ansicht „Projekt“ und klicke auf „Erstellen“. Wähle als Pfad /volume1/docker/bookstack. Trage folgende compose.yaml ein und ersetze die markierten Platzhalter durch deine eigenen Werte:
PUIDundPGID: die in Schritt 1 ermittelten WerteAPP_URL: die vollständige lokale Adresse deines NAS, z. B.http://192.168.1.100:6875– kein abschließender Slash, exakt das Protokoll, die IP und den PortAPP_KEY: der in Schritt 2 generiertebase64:...-StringDB_PASSWORDundMYSQL_PASSWORD: identischer, sicherer WertMYSQL_ROOT_PASSWORD: separates, sicheres Root-Passwort für MariaDB
services:
bookstack:
image: lscr.io/linuxserver/bookstack:latest
container_name: bookstack
environment:
- PUID=1026
- PGID=100
- TZ=Europe/Berlin
- APP_URL=http://192.168.1.100:6875
- APP_KEY=base64:HIER_GENERIERTEN_KEY_EINFUEGEN
- DB_HOST=bookstack-db
- DB_PORT=3306
- DB_USERNAME=bookstack
- DB_PASSWORD=BuchstackDB_Passwort123
- DB_DATABASE=bookstack
- QUEUE_CONNECTION=database
volumes:
- /volume1/docker/bookstack/config:/config
ports:
- 6875:80
restart: unless-stopped
depends_on:
- bookstack-db
bookstack-db:
image: lscr.io/linuxserver/mariadb:latest
container_name: bookstack-db
environment:
- PUID=1026
- PGID=100
- TZ=Europe/Berlin
- MYSQL_ROOT_PASSWORD=Root_Sicheres_Passwort123
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=BuchstackDB_Passwort123
volumes:
- /volume1/docker/bookstack/db:/config
restart: unless-stopped
networks:
default:
name: bookstack-net
Wichtige Details zur compose.yaml:
- Das
version:-Feld fehlt bewusst – neuere Versionen des Synology Container Managers (Compose-Spec v2+) lehnen es ab. - Der interne Container-Port ist
80, nicht8080– ein häufiger Fehler aus veralteten Anleitungen, die ein anderes Image beschreiben. - MariaDB speichert ihre Daten unter
/configim Container, nicht unter/var/lib/mysql– so ist es im linuxserver.io-Image konzipiert. QUEUE_CONNECTION=databaseaktiviert asynchrone Verarbeitung für E-Mail-Benachrichtigungen und Webhooks.
Verifizieren: Speichere die Datei im Container Manager. Er validiert die YAML-Syntax beim Speichern. Erscheint kein roter Fehlerhinweis, ist die Syntax korrekt.
Schritt 4: Stack starten und Logs prüfen
Starte das Projekt im Container Manager über die Schaltfläche „Starten“. Beide Container – bookstack-db und bookstack – sollten innerhalb von 30–60 Sekunden den Status „Läuft“ anzeigen. Prüfe die Logs des bookstack-Containers direkt im Container Manager unter „Container“ → „bookstack“ → „Log“.
Alternativ per SSH:
docker logs bookstack --tail 50
Erwartete Ausgabe (letzte Zeilen) nach erfolgreichem Start:
[services.d] starting services
[services.d] done.
Server configured; please restart nginx.
Verifizieren: Öffne in einem Browser auf demselben Netzwerk die Adresse, die du als APP_URL eingetragen hast, z. B. http://192.168.1.100:6875. Du siehst die BookStack-Anmeldeseite. Erscheint eine 500-Fehlerseite, ist der APP_KEY nicht korrekt eingetragen – zurück zu Schritt 2. Erscheint ein kaputtes Layout ohne CSS, stimmt APP_URL nicht mit der tatsächlichen Adresse überein – Schritt 3 korrigieren.
Schritt 5: Erster Login und Passwort ändern
Melde dich mit den Standard-Zugangsdaten an:
- Benutzername:
admin@admin.com - Passwort:
password
Diese Zugangsdaten sind öffentlich bekannt und müssen sofort nach dem ersten Login geändert werden. Klicke oben rechts auf das Profilbild und wähle „Profil bearbeiten“. Ändere dort E-Mail-Adresse, Anzeigename und Passwort. Unter „Einstellungen“ (Zahnrad-Symbol) passt du außerdem die Sprache auf Deutsch an: Settings > App Language > Deutsch.
Verifizieren: Melde dich nach der Passwortänderung ab und erneut mit dem neuen Passwort an. Der Login mit dem alten Passwort password muss nun fehlschlagen.
Schritt 6: IT-Doku-Struktur anlegen (KMU-Vorlage)
BookStack organisiert Wissen in einer vierstufigen Hierarchie: Regale (Shelves) → Bücher (Books) → Kapitel (Chapters) → Seiten (Pages). Für ein KMU-IT-Wiki empfiehlt sich folgende Grundstruktur als Ausgangspunkt:
| Regal | Buch | Beispiel-Kapitel |
|---|---|---|
| Infrastruktur | Netzwerk | IP-Adresspläne, VLANs, Firewall-Regeln |
| Infrastruktur | Server & Dienste | Synology NAS, Proxmox, Docker-Stacks |
| Infrastruktur | Notfallhandbuch | Wiederanlaufplan, Kontaktliste, RTO/RPO |
| Betrieb | Zugangsverwaltung | VPN-Zugänge, Admin-Accounts, MFA-Status |
| Betrieb | Onboarding | IT-Checkliste neue Mitarbeiter, Software-Liste |
| Projekte | Laufende Projekte | Einzelne Projektbücher nach Bedarf |
Erstelle das erste Regal über Bücher > Regale > Neues Regal. Bücher erzeugst du über den grünen Button „Neues Buch“ im jeweiligen Regal. Seiten lassen sich direkt im WYSIWYG-Editor anlegen – mit Tabellen, Codeblöcken, Bildern und eingebetteten Dateien. Für weiterführende Überlegungen zur Netzwerkdokumentation empfiehlt sich unsere Anleitung zur Netzwerkdokumentation und IP-Adressplan (IPAM) erstellen. Den Aufbau eines BSI-konformen Notfallhandbuchs beschreibt IT-Notfallhandbuch & BCM nach BSI 200-4: Vorlage für KMU.
BookStack unterstützt rollenbasierte Zugriffskontrolle (RBAC) auf jeder Hierarchieebene – vom Regal bis zur einzelnen Seite. Das ist nützlich, wenn nicht alle Mitarbeiter Zugriff auf sensible Zugangsdaten oder interne Admin-Dokumentation erhalten sollen.
Verifizieren: Lege eine erste Testseite in einem Buch an, speichere sie und rufe sie anschließend über die Suchfunktion (Lupen-Symbol oben rechts) mit einem Stichwort aus dem Seiteninhalt auf. BookStack indiziert alle Seiteninhalte automatisch für die Volltextsuche – erscheint die Seite in den Suchergebnissen, funktioniert die Indizierung korrekt.
Eckdaten auf einen Blick
| Parameter | Wert |
|---|---|
| Image (BookStack) | lscr.io/linuxserver/bookstack:latest |
| Stabiler Tag (10.06.2026) | lscr.io/linuxserver/bookstack:26.05.1 |
| Image (MariaDB) | lscr.io/linuxserver/mariadb:latest |
| Externer Port | 6875 (→ Container-intern 80) |
| Volume BookStack | /volume1/docker/bookstack/config:/config |
| Volume MariaDB | /volume1/docker/bookstack/db:/config |
| RAM-Bedarf (Betrieb) | ~200 MB (BookStack) + ~100 MB (MariaDB) |
| Architektur | x86-64 (amd64) + ARM64 |
| Lizenz | MIT (kostenlos, Open Source) |
| Standard-Login | admin@admin.com / password (sofort ändern!) |
Troubleshooting / Typische Fehler
- 500 Internal Server Error nach dem ersten Start: Ursache: APP_KEY ist leer oder fehlt. Lösung: Schritt 2 wiederholen, den
base64:...-String korrekt in die compose.yaml eintragen und den Stack neu starten. - Kaputtes Layout – kein CSS, keine Bilder: Ursache: APP_URL stimmt nicht mit der tatsächlichen Erreichbarkeit überein (fehlender Port, falsches Protokoll, IP statt Domain). Lösung: APP_URL korrigieren und nach Änderung im laufenden Container ausführen:
docker exec -it bookstack php /app/www/artisan bookstack:update-url http://ALTE_URL http://NEUE_URL - SQLSTATE[HY000] [2002] Connection refused beim ersten Start: Ursache: BookStack-Container startet schneller als MariaDB. Lösung:
depends_onist in der compose.yaml bereits vorhanden; bei hartnäckigem Problem den bookstack-Container manuell neu starten:docker restart bookstack - Dateiberechtigungsfehler, Container kann nicht schreiben: Ursache: PUID/PGID stimmen nicht mit dem tatsächlichen NAS-Benutzer überein. Lösung: Per SSH
idausführen, korrekte Werte in der compose.yaml eintragen, Stack neu starten. - MariaDB-Zugangsdaten werden nach Änderung nicht übernommen: Ursache: MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD werden nur beim allerersten Start ausgewertet. Lösung: Entweder das Verzeichnis
/volume1/docker/bookstack/dbvollständig löschen (Datenverlust!) und neu starten, oder die Änderungen direkt perdocker execin MariaDB vornehmen. - BookStack von anderen Geräten nicht erreichbar: Ursache: Synology-Firewall blockiert Port 6875. Lösung: In der DSM-Systemsteuerung unter „Sicherheit > Firewall“ eine Regel für TCP-Port 6875 anlegen.
- Container Manager lehnt compose.yaml ab: Ursache: Ein
version:-Feld ist angegeben. Lösung: Das Feld vollständig entfernen – Compose-Spec v2+ benötigt es nicht mehr. - Falscher interner Port (8080 statt 80): Ursache: Veraltete Anleitungen beschreiben ein anderes Image (solidnerd/bookstack), das auf 8080 lauscht. Das linuxserver.io-Image lauscht intern auf Port 80. Korrekte Konfiguration:
6875:80.
Häufige Fragen
Wie generiere ich den APP_KEY, wenn BookStack noch nicht läuft?
Per SSH-Einmalbefehl: docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey. Der Container wird nach der Ausgabe sofort wieder entfernt. Den ausgegebenen base64:...-String trägst du als APP_KEY in die compose.yaml ein, bevor du den Stack zum ersten Mal startest.
Welche PUID/PGID-Werte sind auf meinem Synology NAS korrekt?
Per SSH id eingeben. Die angezeigte uid= und gid= des aktuellen Benutzers sind die richtigen Werte. Typisch auf Synology: PUID=1026, PGID=100 – diese Werte können je nach NAS-Modell und DSM-Version abweichen.
Kann ich BookStack hinter dem Synology Reverse Proxy mit HTTPS betreiben?
Ja. Im Synology Reverse Proxy einen Eintrag anlegen: Quelle = HTTPS Port 443 (eigene Domain), Ziel = http://localhost:6875. Danach APP_URL auf die HTTPS-Adresse ändern und im laufenden Container ausführen: docker exec -it bookstack php /app/www/artisan bookstack:update-url http://ALTE_URL https://NEUE_URL. Kein TLS-Zertifikat im Container nötig.
Wie aktualisiere ich BookStack auf eine neue Version?
Im Container Manager das Projekt öffnen, ggf. den Image-Tag anpassen (oder :latest belassen), dann per SSH im Projektverzeichnis docker compose pull && docker compose up -d ausführen. Alle Daten bleiben erhalten, da sie außerhalb des Containers in /volume1/docker/bookstack/ gespeichert sind. Für festes Versions-Pinning statt :latest den Tag 26.05.1 verwenden.
Was bedeutet QUEUE_CONNECTION=database?
Diese Einstellung aktiviert eine interne Warteschlange für zeitintensive Aufgaben wie E-Mail-Benachrichtigungen und Webhook-Aktionen. Ohne sie werden solche Aktionen synchron ausgeführt und können zu Timeouts führen. Empfohlen sobald du SMTP-E-Mail-Benachrichtigungen nutzen möchtest.
Wie sichere ich meine BookStack-Daten?
Zwei Verzeichnisse sichern genügt: /volume1/docker/bookstack/config (alle Uploads, Themes, .env-Datei) und /volume1/docker/bookstack/db (MariaDB-Daten). Alternativ in BookStack unter „Administration > Wartung“ eine ZIP-Export-Sicherung des gesamten Inhalts erstellen.
Unterstützt BookStack LDAP oder Active Directory?
Ja. BookStack unterstützt LDAP/Active-Directory-Integration sowie SAML2 (Single Sign-On) ohne Zusatzkosten. Die Konfiguration erfolgt über Umgebungsvariablen in der compose.yaml – interessant für KMUs, die bereits eine Windows-Domäne betreiben und Benutzer nicht doppelt pflegen möchten.
Fazit
BookStack ist eines der ausgereiftesten Self-Hosted-Wikis für KMU-IT-Admins: MIT-lizenziert, aktiv gepflegt, sparsam im Ressourcenverbrauch und mit dem linuxserver.io-Image äußerst einfach auf dem Synology NAS zu betreiben. Die hierarchische Struktur aus Regalen, Büchern, Kapiteln und Seiten bietet genau das richtige Maß an Organisation – mehr als eine flache Notizsammlung, weniger Overhead als Confluence. Wer einmal die Grundstruktur mit Infrastruktur-Regal, Netzwerkbuch und Notfallhandbuch angelegt hat, wird schnell merken, wie viel effizienter die tägliche IT-Arbeit mit einer zentralen Wissensbasis wird. Für Teams in wachsenden KMUs sind die RBAC-Funktionen und die LDAP-Integration der natürliche nächste Schritt. Als Ergänzung findest du im gleichen Wissens-Cluster zwei weitere Self-Hosted-Doku-Alternativen: Outline auf Synology NAS – Team-Wiki als Notion-Alternative und Docmost auf Synology NAS – Confluence-Alternative.
Weiterführende Anleitungen und Quellen
- Outline auf dem Synology NAS installieren – modernes Team-Wiki als Alternative zu BookStack
- Netzwerkdokumentation und IP-Adressplan (IPAM) erstellen – Grundlage für das erste Netzwerk-Buch in BookStack
- IT-Notfallhandbuch & BCM nach BSI 200-4: Vorlage für KMU – Inhaltsstruktur für das Notfallhandbuch-Buch
Offizielle Quellen: linuxserver.io BookStack-Dokumentation | Docker Hub – lscr.io/linuxserver/bookstack | BookStack offizielle Installationsdokumentation