Installation · 11 min read · Oct 21, 2025
Wie man BookStack mit Nginx auf Ubuntu 20.04 installiert

BookStack ist eine selbstgehostete, Open-Source-Plattform, die einfach zu bedienen ist, um Informationen zu organisieren und zu speichern. Sie kann für verschiedene Zwecke wie ein Wiki, eine Dokumentationswebsite und eine Notiz-App verwendet werden. Sie ist mit dem Laravel PHP-Framework erstellt und verwendet MySQL zur Datenspeicherung. Für Bearbeitungszwecke bietet sie die Wahl zwischen einem WYSIWYG- oder einem Markdown-Editor. Sie unterstützt Multi-Faktor-Authentifizierung und den Dunkelmodus und ist mehrsprachig.
Dieses Tutorial zeigt Ihnen, wie Sie BookStack auf einem Ubuntu 20.04-basierten Server installieren.
Voraussetzungen
- Ein Server, der Ubuntu 20.04 ausführt
- Ein vollständig qualifizierter Domainname (FQDN), der auf den Server zeigt.
- Ein Nicht-Root-Benutzer mit Sudo-Rechten.
- PHP-Version 7.3 oder höher.
- MySQL>=5.6 und MariaDB>=10.0
- Git und Composer.
Schritt 1 - Firewall konfigurieren
Der erste Schritt besteht darin, die Firewall zu konfigurieren. Ubuntu wird standardmäßig mit ufw (Uncomplicated Firewall) geliefert.
Überprüfen Sie, ob die Firewall läuft.
$ sudo ufw statusSie sollten die folgende Ausgabe erhalten.
Status: inactiveErlauben Sie den SSH-Port, damit die Firewall die aktuelle Verbindung beim Aktivieren nicht unterbricht.
$ sudo ufw allow OpenSSHErlauben Sie auch die HTTP- und HTTPS-Ports.
$ sudo ufw allow 80
$ sudo ufw allow 443Aktivieren Sie die Firewall
$ sudo ufw enable
Befehl kann bestehende SSH-Verbindungen stören. Mit der Operation fortfahren (y|n)? y
Firewall ist aktiv und beim Systemstart aktiviertÜberprüfen Sie den Status der Firewall erneut.
$ sudo ufw statusSie sollten eine ähnliche Ausgabe sehen.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)Schritt 2 - Git installieren
Der erste Schritt besteht darin, Git zu installieren. Es wird benötigt, um BookStack herunterzuladen und zu aktualisieren. Führen Sie den folgenden Befehl aus, um Git zu installieren.
$ sudo apt install gitÜberprüfen Sie die Installation.
$ git --versionSchritt 3 - PHP und Erweiterungen installieren
Da BookStack von PHP abhängt, müssen Sie PHP und seine Erweiterungen installieren.
Ubuntu wird mit einer veralteten PHP-Version geliefert. Zuerst müssen wir Ondrejs PHP-Repository hinzufügen.
$ sudo add-apt-repository ppa:ondrej/phpInstallieren Sie als Nächstes PHP und die von BookStack benötigten Erweiterungen.
$ sudo apt install php7.4-fpm php7.4-mbstring php7.4-gd php7.4-xml unzip php7.4-bcmath php7.4-curl php7.4-mysqlÜberprüfen Sie die Installation.
$ php --version
PHP 7.4.25 (cli) (gebaut: 22. Okt 2021 12:34:33) (NTS)
Copyright (c) Die PHP-Gruppe
Zend Engine v3.4.0, Copyright (c) Zend Technologies
mit Zend OPcache v7.4.25, Copyright (c), von Zend TechnologiesSchritt 4 - MariaDB installieren und konfigurieren
Ubuntu wird mit einer älteren Version von MariaDB geliefert. Um die neueste Version zu installieren, fügen Sie das offizielle MariaDB-Repository hinzu. Führen Sie die folgenden Befehle aus, um das Repository hinzuzufügen.
$ curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
$ sudo bash mariadb_repo_setup --mariadb-server-version=10.6Führen Sie den folgenden Befehl aus, um den MariaDB-Server zu installieren.
$ sudo apt install mariadb-serverSichern Sie die MariaDB-Installation.
$ sudo mysql_secure_installationSie werden mit verschiedenen Eingabeaufforderungen konfrontiert. Beantworten Sie diese wie folgt.
Geben Sie das aktuelle Passwort für root ein (leer für keines): Drücken Sie die Eingabetaste
Wechseln Sie zur Unix-Socket-Authentifizierung [Y/n] Geben Sie y ein
Möchten Sie das Root-Passwort ändern? [Y/n] Geben Sie n ein
Anonyme Benutzer entfernen? [Y/n] Geben Sie y ein
Root-Login aus der Ferne verbieten? [Y/n] Geben Sie y ein
Testdatenbank und Zugriff darauf entfernen? [Y/n] Geben Sie y ein
Privilegientabellen jetzt neu laden? [Y/n] Geben Sie y einVerbinden Sie sich mit der MariaDB-Shell mit dem folgenden Befehl.
$ sudo mysqlErstellen Sie eine neue Datenbank für Bookstack.
$ create database bookstack;Erstellen Sie einen neuen Datenbankbenutzer.
$ CREATE USER 'bookstackuser'@'localhost' identified by 'bookstackpassword';Wählen Sie ein starkes Passwort.
Erteilen Sie dem Benutzer Berechtigungen auf der Datenbank.
$ grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `bookstack`.* to 'bookstackuser'@'localhost';Verlassen Sie die MySQL-Shell.
$ exitSchritt 5 - Composer installieren
Composer ist ein Abhängigkeitsverwaltungstool für PHP und wird von Laravel benötigt, auf dem BookStack basiert.
Laden Sie das Composer-Installationsskript herunter.
$ curl -sS https://getcomposer.org/installer -o composer-setup.phpFühren Sie die folgenden Befehle aus, um den Installer zu überprüfen.
$ HASH=`curl -sS https://composer.github.io/installer.sig`
$ echo $HASH
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verifiziert'; } else { echo 'Installer beschädigt'; unlink('composer-setup.php'); } echo PHP_EOL;"Die obigen Befehle erfassen den Hashwert des Installers und vergleichen ihn mit Ihrem heruntergeladenen Skript. Sie sollten die folgende Ausgabe sehen, wenn der Installer sicher zu verwenden ist.
Installer verifiziertInstallieren Sie Composer.
$ sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composerÜberprüfen Sie die Installation, indem Sie die Version überprüfen.
$ composer --version
Composer version 2.1.9 2021-10-05 09:47:38Schritt 6 - BookStack herunterladen und installieren
Erstellen Sie den Stammordner für die BookStack-App.
$ sudo mkdir -p /var/www/bookstackÄndern Sie den Besitz des Verzeichnisses /var/www/bookstack auf den aktuell angemeldeten Benutzer.
$ sudo chown -R $USER:$USER /var/www/bookstackKlonen Sie den Release-Zweig des BookStack-GitHub-Repositorys in den neu erstellten Ordner.
$ cd /var/www/bookstack
$ git clone https://github.com/BookStackApp/BookStack.git --branch=release --single-branch .Vergessen Sie nicht den Punkt am Ende des clone-Befehls. Er stellt sicher, dass alle Dateien im aktuellen Verzeichnis heruntergeladen werden, anstatt ein neues zu erstellen.
Führen Sie den Composer-Installer aus dem Verzeichnis /var/www/bookstack aus.
$ composer install --no-devKopieren Sie die .env.example-Datei in .env, um Umgebungsvariablen für die Installation zu speichern.
$ cp .env.example .envÖffnen Sie die Datei zur Bearbeitung.
$ sudo nano .envFüllen Sie die Anwendungs-URL und die Datenbankdetails aus. Wenn Sie die E-Mail-Funktionen verwenden möchten, fügen Sie die SMTP-Details ein, oder löschen Sie sie aus der Datei.
APP_URL=https://example.com
DB_HOST=localhost
DB_DATABASE=bookstack
DB_USERNAME=bookstackuser
DB_PASSWORD=bookstackpasswordSpeichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden. Es gibt viele weitere Einstellungen, die Sie konfigurieren können. Um mehr darüber zu erfahren, öffnen Sie die Datei .env.example.complete und kopieren Sie die, die Sie benötigen, in Ihre .env-Datei.
Generieren Sie einen eindeutigen Anwendungsschlüssel. Dieser Wert wird automatisch in der .env-Datei ausgefüllt. Geben Sie yes ein, um mit dem Befehl fortzufahren.
$ php artisan key:generate
**************************************
* Anwendung in Produktion! *
************************************
Möchten Sie diesen Befehl wirklich ausführen? (ja/nein) [nein]:
> ja
Anwendungsschlüssel erfolgreich gesetzt.Aktualisieren Sie die Datenbank.
$ php artisan migrate************************************ * Anwendung in Produktion! * ************************************** Möchten Sie diesen Befehl wirklich ausführen? (ja/nein) [nein]: > ja Migrationstabelle erfolgreich erstellt. Migration: 2014_10_12_000000_create_users_table Migriert: 2014_10_12_000000_create_users_table (0.12 Sekunden) .......
Schritt 7 - Let’s Encrypt SSL installieren
Um ein SSL-Zertifikat mit Let’s Encrypt zu installieren, müssen wir das Certbot-Tool installieren.
Wir werden dafür den Snapd-Paketinstaller verwenden. Die meisten Ubuntu-Server werden nicht mit dem Snap-Tool geliefert. Um das zu beheben, installieren Sie Snap.
$ sudo apt install snapdStellen Sie sicher, dass Ihre Version von Snapd auf dem neuesten Stand ist.
$ sudo snap install core
$ sudo snap refresh coreInstallieren Sie Certbot.
$ sudo snap install --classic certbotVerwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zum Verzeichnis /usr/bin erstellen.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbotÜberprüfen Sie die Installation.
$ certbot --version
certbot 1.20.0Generieren Sie das SSL-Zertifikat.
$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m [email protected] -d example.comDer obige Befehl lädt ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/etherpad.example.com auf Ihrem Server herunter.
Generieren Sie ein Diffie-Hellman-Gruppen-Zertifikat.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048Erstellen Sie ein Challenge-Web-Root-Verzeichnis für die automatische Erneuerung von Let’s Encrypt.
$ sudo mkdir -p /var/lib/letsencryptErstellen Sie einen Cron-Job zur Erneuerung des SSL. Er wird jeden Tag ausgeführt, um das Zertifikat zu überprüfen und bei Bedarf zu erneuern. Erstellen Sie dazu zuerst die Datei /etc/cron.daily/certbot-renew und öffnen Sie sie zur Bearbeitung.
$ sudo nano /etc/cron.daily/certbot-renewFügen Sie den folgenden Code ein.
#!/bin/sh
certbot renew --cert-name bookstack.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Ändern Sie die Berechtigungen der Aufgaben-Datei, um sie ausführbar zu machen.
$ sudo chmod +x /etc/cron.daily/certbot-renewSchritt 8 - Nginx installieren und konfigurieren
Ubuntu wird mit einer älteren Version von Nginx geliefert. Um die neueste Version zu installieren, müssen Sie das offizielle Nginx-Repository herunterladen.
Fügen Sie das Repository für die stabile Version von Nginx hinzu.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.listInstallieren Sie Nginx.
$ sudo apt install nginxÜberprüfen Sie die Installation.
$ nginx -v
nginx version: nginx/1.20.1Aktivieren Sie den Nginx-Dienst.
$ sudo systemctl enable nginxPHP-FPM konfigurieren
Öffnen Sie die Datei /etc/php/7.4/fpm/pool.d/www.conf.
$ sudo nano /etc/php/7.4/fpm/pool.d/www.confWir müssen den Unix-Benutzer/die Gruppe der PHP-Prozesse auf nginx setzen. Suchen Sie die Zeilen user=www-data und group=www-data in der Datei und ändern Sie sie in nginx.
...
; Unix-Benutzer/-gruppe der Prozesse
; Hinweis: Der Benutzer ist obligatorisch. Wenn die Gruppe nicht festgelegt ist, wird die Standardbenutzergruppe verwendet.
; wird verwendet.
user = nginx
group = nginx
...Suchen Sie auch die Zeilen listen.owner=www-data und listen.group=www-data in der Datei und ändern Sie sie in nginx.
listen.owner = nginx
listen.group = nginxSpeichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Starten Sie den PHP-fpm-Prozess neu.
$ sudo systemctl restart php7.4-fpmNginx konfigurieren
Erstellen und öffnen Sie die Datei /etc/nginx/conf.d/bookstack.conf zur Bearbeitung.
$ sudo nano /etc/nginx/conf.d/bookstack.confFügen Sie den folgenden Code ein.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name bookstack.example.com;
access_log /var/log/nginx/bookstack.access.log;
error_log /var/log/nginx/bookstack.error.log;
ssl_certificate /etc/letsencrypt/live/bookstack.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/bookstack.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/bookstack.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
root /var/www/bookstack/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
# HTTPS erzwingen
server {
listen 80;
listen [::]:80;
server_name bookstack.example.com;
return 301 https://$host$request_uri;
}Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Öffnen Sie die Datei /etc/nginx/nginx.conf zur Bearbeitung.
$ sudo nano /etc/nginx/nginx.confFügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu.
server_names_hash_bucket_size 64;Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden. Validieren Sie Nginx erneut.
Überprüfen Sie die Syntax der Nginx-Konfigurationsdatei.
$ sudo nginx -t
nginx: die Konfigurationsdatei /etc/nginx/nginx.conf Syntax ist ok
nginx: Konfigurationsdatei /etc/nginx/nginx.conf Test war erfolgreichStarten Sie schließlich den Nginx-Dienst, um die neue Konfiguration zu aktivieren.
$ sudo systemctl start nginxÄndern Sie den Besitz des Verzeichnisses auf den Benutzer nginx, damit der Webserver auf den Ordner zugreifen und darin schreiben kann.
$ sudo chown -R nginx:nginx /var/www/bookstackSchritt 9 - BookStack ausführen
Ihr Bookstack ist bereit zur Verwendung. Öffnen Sie die URL https://bookstack.example.com in Ihrem Browser, und Sie erhalten die Anmeldeseite.

Melden Sie sich mit dem Standardadministrator-Konto [email protected] und dem Passwort password an. Öffnen Sie die Seite Einstellungen >> Benutzer und klicken Sie auf die Schaltfläche NEUEN BENUTZER HINZUFÜGEN.

Füllen Sie die Benutzerdetails aus, setzen Sie ein Häkchen im Feld Admin unter Benutzerrollen und deaktivieren Sie Benutzereinladungs-E-Mail senden, da wir keine SMTP-Details festgelegt haben. Wählen Sie ein starkes Passwort. Klicken Sie auf Speichern, wenn Sie fertig sind.

Klicken Sie als Nächstes auf den Standard-Admin-Benutzer und löschen Sie den Benutzer, indem Sie auf die Schaltfläche Benutzer löschen klicken.

Übertragen Sie den Besitz des Admin-Benutzers auf Ihren neu erstellten Benutzer, indem Sie ihn aus dem Dropdown-Menü auswählen, bevor Sie ihn löschen. Klicken Sie auf Bestätigen, um den Vorgang abzuschließen. Wenn Sie mit diesem Benutzer angemeldet sind, werden Sie automatisch abgemeldet. Sie müssen sich erneut mit dem neu erstellten Benutzer anmelden.

Backup und Wiederherstellung von BookStack
Backup von BookStack
Sie müssen die Datenbank und die Dateien separat sichern. Um die Datenbank zu sichern, verwenden Sie das Tool mysqldump.
$ sudo mysqldump -u bookstackuser bookstack > bookstack.backup.sqlSie müssen auch die folgenden Dateien und Ordner sichern.
.env- Datei mit wichtigen Konfigurationen.public/uploads- Ordner mit hochgeladenen Bildern.storage/uploads- Ordner mit hochgeladenen Seitenanhängen.
Führen Sie den folgenden Befehl aus, um ein komprimiertes Archiv der oben genannten Dateien und Ordner zu erstellen.
$ sudo tar -czvf bookstack-files-backup.tar.gz .env public/uploads storage/uploadsWiederherstellung von BookStack
Führen Sie den folgenden Befehl aus, um die Datenbank wiederherzustellen.
$ sudo mysql -u bookstack < bookstack.backup.sqlWenn Sie auf eine neue Version von BookStack wiederherstellen, müssen Sie den Befehl sudo php artisan migrate ausführen.
Um die oben erstellten komprimierten Dateien wiederherzustellen, verwenden Sie den folgenden Befehl.
$ sudo tar -xvzf bookstack-files-backup.tar.gzSie müssen auch die Berechtigungen ändern.
BookStack aktualisieren
Bevor Sie BookStack aktualisieren, stellen Sie sicher, dass Sie ein ordnungsgemäßes Backup mit dem zuvor beschriebenen Verfahren erstellen.
Um BookStack zu aktualisieren, ziehen Sie die Originaldateien aus dem Git-Repository.
$ cd /var/www/bookstack
$ sudo git pull origin releaseFühren Sie die folgenden Befehle aus, um die Installation fortzusetzen.
$ sudo composer install --no-dev
$ sudo php artisan migrateSie müssen auch die folgenden Befehle ausführen, um den Cache zu leeren.
$ sudo php artisan cache:clear
$ sudo php artisan config:clear
$ sudo php artisan view:clearFazit
Dies beendet unser Tutorial zur Installation von BookStack auf einem Ubuntu 20.04-Server. Wenn Sie Fragen haben, stellen Sie diese bitte in den Kommentaren unten.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.