Installation
Einleitung
Ich hatte mein Wiki am Anfang auf einer eigenen kleinen VM in Betrieb und habe Bookstack dabei als Docker Installation auf einem Rocky Linux 9 System betrieben. Da ich das Wiki öffentlich stellen wollte, stellte sich die Frage, ob man den Server einfach hinter einem Reverse Proxy ins Internet stellt ... oder den Webspace benutzt, den ich bei Strato sowieso in meinem Paket habe und auf dem aktuell gähnende Leere herrscht.
Dieser Artikel beschreibt also nun die manuelle Installation von BookStack auf einem klassischen Hosted Webspace mit SSH-Zugang, PHP und einer MySQL- oder MariaDB-Datenbank. Zuerst folgt der allgemeine Ablauf, anschließend die konkret getestete Umsetzung auf einem STRATO-Webhosting-Paket.
BookStack unterstützt Shared PHP Hosting offiziell nicht. Der Betrieb ist trotzdem möglich, wenn PHP über SSH ausgeführt werden kann, Git und Composer
vorhanden sind und die Domain direkt auf das BookStack-Verzeichnis public zeigen kann.
Alle Datenbanknamen, Benutzer und Kennwörter in diesem Artikel sind natürlich Platzhalter. Die laufende Einrichtung steht im getrennten Artikel Konfiguration. Für spätere Versionswechsel gibt es die eigene Anleitung Update.
Verwendete Umgebung
Stand: 27. August 2026
| Komponente | Verwendete Konfiguration |
|---|---|
| Anwendung | BookStack release-Branch, ursprüngliche Installation v26.05.2, aktuell v26.05.4 |
| Webhosting | STRATO Hosted Webspace mit (temporärem) SSH-Zugang |
| Webadresse | https://klausing.info |
| Installationspfad | ~/wiki |
| Öffentlicher Pfad | ~/wiki/public |
| PHP-CLI bei STRATO | /opt/RZphp84/bin/php-cli |
| Composer bei STRATO | $HOME/bin/composer |
| Datenbank | vom Provider bereitgestellte MySQL-/MariaDB-Datenbank |
Standardinstallation auf Hosted Webspace
Voraussetzungen prüfen
BookStack benötigt aktuell PHP 8.2 oder neuer, MySQL 8.0 oder MariaDB 10.6, Git und Composer 2.2 oder neuer. PHP muss auch auf der Kommandozeile verfügbar sein. Die benötigten PHP-Erweiterungen nennt die offizielle Installationsanleitung.
php -v
php -m
git --version
composer --version
Im Kundenbereich des Hosters werden eine leere Datenbank und ein eigener
Datenbankbenutzer angelegt. Benötigt werden Datenbankserver, Port, Datenbankname,
Benutzername und Kennwort. Bei Hosted Webspace ist der Datenbankserver häufig
nicht localhost; maßgeblich ist immer die Angabe des Providers.
Bei STRATO kann hier einfach über das Webinterface eine neue Datenbank Instanz angelegt und diese Anmeldedaten später in der Konfiguration verwendet werden.
Datenbank Name und Benutzer werden hier von Strato direkt vergeben, das Kennwort kann konfiguriert werden. Vorteil ist, dass STRATO sich hier auch direkt um die Datensicherung der Datenbank kümmert.
BookStack herunterladen
Der Branch release ist der stabile Updatekanal von BookStack:
cd ~/wiki
git clone \
--depth 1 \
--branch release \
--single-branch \
https://source.bookstackapp.com/bookstack.git \
bookstack
cd ~/wiki/bookstack
ls -l artisan composer.json composer.lock
Die drei zuletzt geprüften Dateien müssen vorhanden sein. Alle folgenden
Composer- und Artisan-Befehle werden aus ~/wiki/bookstack ausgeführt.
PHP-Abhängigkeiten installieren
composer install \
--no-dev \
--optimize-autoloader \
--no-interaction
Anwendung konfigurieren
cp .env.example .env
chmod 600 .env
nano .env
Mindestens diese Werte werden angepasst:
APP_KEY=
APP_URL=https://wiki.example.org
APP_ENV=production
APP_DEBUG=false
DB_HOST=DATENBANKSERVER
DB_PORT=3306
DB_DATABASE=DATENBANKNAME
DB_USERNAME=DATENBANKBENUTZER
DB_PASSWORD="DATENBANKPASSWORT"
APP_URL wird ohne abschließenden Schrägstrich angegeben. Das
Datenbankkennwort steht bei Sonderzeichen in doppelten Anführungszeichen.
Der Anwendungsschlüssel wird einmalig erzeugt:
php artisan key:generate
grep '^APP_KEY=' .env
Der erzeugte APP_KEY wird später mitgesichert und nicht neu erzeugt. Er wird
unter anderem zur Verschlüsselung interner Daten und von MFA-Geheimnissen
verwendet.
Schreibrechte und Datenbank
chmod -R u+rwX storage bootstrap/cache public/uploads
php artisan migrate --force
php artisan config:clear
php artisan cache:clear
php artisan view:clear
Pauschale Rechte wie chmod -R 777 sind dafür nicht erforderlich.
Domain anbinden
Der Document Root der Wiki-Domain zeigt ausschließlich auf:
~/wiki/public
Das wird bei Strato in der Konfiguration der Domain eingestellt:
Das übergeordnete Verzeichnis ~/wiki darf nicht öffentlich
ausgeliefert werden. Andernfalls könnten .env, Quellcode und interne
Konfigurationsdateien erreichbar werden.
Nach der Domainzuordnung wird HTTPS aktiviert. Die Startseite sollte danach mit
200, 301 oder 302 antworten, interne Dateien dagegen mit 403 oder 404:
# Erwartet 200
curl -I https://klausing.info/
# Erwartet 403/404
curl -I https://klausing.info/.env
curl -I https://klausing.info/composer.json
curl -I https://klausing.info/artisan
Erster Login
Bei der manuellen Installation lauten die initialen Zugangsdaten normalerweise:
E-Mail: admin@admin.com
Passwort: password
E-Mail-Adresse und Kennwort werden sofort geändert. Danach werden MFA für das
Administratorkonto, Registrierung, öffentlicher Zugriff und die Rolle Public
geprüft.
Angepasster Ablauf für STRATO
Bei STRATO unterscheiden sich vor allem PHP auf der Kommandozeile, der Composer-Aufruf, der Datenbankserver und die Domainzuordnung vom Standardweg. Die Anwendung selbst bleibt unverändert.
Festes PHP-CLI und Composer verwenden
Die im STRATO-Kundenbereich gewählte Web-PHP-Version gilt nicht automatisch für SSH-Befehle. Für diese Installation wird PHP 8.4 daher immer über den vollständigen Pfad aufgerufen:
PHP=/opt/RZphp84/bin/php-cli
COMPOSER="$HOME/bin/composer"
"$PHP" -v
"$PHP" "$COMPOSER" --version
Composer wird mit demselben PHP-Binary und ohne Speicherbegrenzung gestartet:
cd ~/wiki/bookstack
"$PHP" \
-d memory_limit=-1 \
"$COMPOSER" install \
--no-dev \
--optimize-autoloader \
--no-interaction
STRATO-Datenbank eintragen
DB_HOST erhält exakt den Servernamen aus der STRATO-Datenbankverwaltung. localhost funktioniert hier nicht:
APP_KEY=
APP_URL=https://klausing.info
APP_ENV=production
APP_DEBUG=false
DB_HOST=DATENBANKSERVER_AUS_DEM_STRATO_KUNDENBEREICH
DB_PORT=3306
DB_DATABASE=DATENBANKNAME
DB_USERNAME=DATENBANKBENUTZER
DB_PASSWORD="DATENBANKPASSWORT"
Installation abschließen
cd ~/wiki
PHP=/opt/RZphp84/bin/php-cli
"$PHP" artisan key:generate
chmod -R u+rwX storage bootstrap/cache public/uploads
"$PHP" artisan migrate --force
"$PHP" artisan config:clear
"$PHP" artisan cache:clear
"$PHP" artisan view:clear
Root-Rechte oder sudo werden auf dem Webspace nicht vorausgesetzt. Die
benutzerbezogenen Schreibrechte reichen in der verwendeten STRATO-Konfiguration
aus, weil PHP im Kontext des Hostingaccounts läuft.
Domain intern auf public legen
Im STRATO-Kundenbereich wird klausing.info per interner Domainumleitung auf
dieses Verzeichnis gesetzt:
/wiki/public
Danach wird SSL für die Domain aktiviert. Die abschließende Kontrolle erfolgt ohne Anmeldung:
# Erwartet 200
curl -I https://klausing.info/
# Erwartet 403/404
curl -I https://klausing.info/.env
curl -I https://klausing.info/composer.json
curl -I https://klausing.info/artisan
Nur die Startseite darf erfolgreich ausgeliefert werden. Damit ist die Installation abgeschlossen; Einstellungen, Backups, Sitemap, RSS und Updates folgen im Artikel Konfiguration.


No comments to display
No comments to display