So installierst du BookStack unter Debian 12

BookStack ist eine kostenlose und quelloffene Wiki-Software, die in PHP mit dem Web-Framework Laravel geschrieben wurde. BookStack soll eine einfache und selbst gehostete Plattform zum Speichern und Organisieren von Informationen sein.

In diesem Tutorial führen wir dich Schritt für Schritt durch den Installationsprozess von BookStack auf dem Debian 12 Server, damit du deine eigene wiki-ähnliche Plattform zum Veröffentlichen von Informationen hast.

Voraussetzungen

Bevor du beginnst, solltest du sicherstellen, dass du Folgendes hast:

  • Einen Debian 12 Server.
  • Einen Nicht-Root-Benutzer mit sudo-Administrator-Rechten.
  • Einen Domainnamen, der auf die IP-Adresse des Servers zeigt.

Installieren der Abhängigkeiten

BookStack ist eine Wiki-Plattform, die in PHP und MySQL/MariaDB geschrieben wurde. Zurzeit wird sie vollständig von PHP 8.2 unterstützt. In diesem Schritt installierst du die Abhängigkeiten für BookStack. Dazu gehören die LAMP Stack (Apache2, MariaDB, PHP) Pakete, Git und Composer.

Aktualisiere deinen Debian-Paketindex mit dem folgenden Befehl.

sudo apt update

Repo aktualisieren

Sobald das Repository aktualisiert ist, installierst du die Paketabhängigkeiten für BookStack, indem du den folgenden Befehl apt install ausführst. Mit diesem Befehl installierst du das LAMP Stack-Paket, Composer und Git.

sudo apt install apache2 mariadb-server composer curl php php-xml libapache2-mod-php php-fpm php-curl php-mbstring php-ldap php-tidy php-zip php-gd php-mysql git

Gib y ein, um mit der Installation fortzufahren.

Abhängigkeiten installieren

Nachdem die Abhängigkeiten installiert sind, überprüfe die einzelnen Abhängigkeiten, indem du den folgenden Befehl ausführst.

Überprüfe den apache2-Dienst mit dem folgenden systemctl-Befehl, um sicherzustellen, dass der Dienst läuft und aktiviert ist.

sudo systemctl is-enabled apache2
sudo systemctl status apache2

Die folgende Ausgabe bestätigt, dass der apache2-Dienst läuft und aktiviert ist.

apache2 prüfen

Überprüfe nun den mariadb-Dienst mit dem folgenden Befehl.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

Die Ausgabe sollte zeigen, dass der mariadb-Dienst auf deinem System läuft und aktiviert ist.

mariadb prüfen

Als Nächstes überprüfst du die PHP-Version und listest die aktivierten Erweiterungen mit dem unten stehenden Befehl auf.

php -v
php -m

Aus der folgenden Ausgabe geht hervor, dass PHP 8.2 auf deinem System installiert ist.

php prüfen

Überprüfe abschließend den Composer mit dem folgenden Befehl. Dadurch wird die Composer-Binärdatei gefunden und ihre Version überprüft.

which composer
sudo -u www-data composer -v

Du solltest sehen, dass der Composer 2.5.5 unter /usr/bin/composer installiert ist.

Komponist prüfen

PHP konfigurieren

Nachdem du die Abhängigkeiten installiert hast, musst du als Nächstes die PHP-Installation konfigurieren, indem du Änderungen an der Datei php.ini auf deinem Debian-Rechner vornimmst.

Öffne die Standard-PHP-Konfiguration /etc/php/8.2/apache2/php.ini mit dem folgenden Befehl des nano-Editors.

sudo nano /etc/php/8.2/apache2/php.ini

Ändere einige Standardeinstellungen mit der folgenden Konfiguration. Achte darauf, dass du die Parameter date.timezone und memory_limit an deine Serverumgebung anpasst.

date.timezone = Europe/Amsterdam
memory_limit = 512M

Speichere die Datei und beende den Editor, wenn du fertig bist.

Führe nun den folgenden systemctl-Befehl aus, um den apache2-Dienst neu zu starten und die vorgenommenen Änderungen anzuwenden.

sudo systemctl restart apache2

MariaDB Server konfigurieren

Nachdem PHP nun konfiguriert ist, konfigurierst du im nächsten Schritt die Installation des MariaDB-Servers mit dem Dienstprogramm mariadb-secure-installation, mit dem du die grundlegende Sicherheit für MariaDB einrichten kannst. Außerdem legst du eine neue Datenbank und einen neuen Benutzer an, die von BookStack verwendet werden.

Führe den folgenden Befehl mariadb-secure-installation aus, um deine MariaDB-Installation zu sichern.

sudo mariadb-secure-installation

Während des Prozesses wirst du nach einigen Konfigurationen gefragt. Gib Y ein, um zuzustimmen und die neuen Änderungen zu übernehmen, oder gib n für No ein, um die Konfiguration abzulehnen.

  • Bei der Standard-MariaDB-Serverinstallation ohne Root-Passwort drückst du ENTER, wenn du nach dem Passwort gefragt wirst.
  • Die lokale Authentifizierung für MariaDB-Root-Benutzer ist standardmäßig gesichert. Gib „n“ ein, wenn du die Authentifizierungsmethode auf „unix_socket“ ändern möchtest.
  • Gib „Y“ ein, um ein neues MariaDB Root-Passwort zu erstellen. Gib dann das sichere Passwort für deinen MariaDB-Root-Benutzer ein und wiederhole den Vorgang.
  • Wenn du gefragt wirst, ob du die Fernauthentifizierung für den MariaDB-Root-Benutzer deaktivieren möchtest, gibst du „Y“ ein, um zuzustimmen.
  • Die Standardinstallation des MariaDB-Servers enthält die Datenbank „test“ und erlaubt einem anonymen Benutzer den Zugriff auf diese Datenbank. Gib für beide Einstellungen „Y“ ein, um die Standarddatenbank „test“ und die anonymen Rechte zu entfernen.
  • Gib abschließend „Y“ ein, um das Neuladen der Tabellenrechte zu bestätigen.

Nachdem du MariaDB konfiguriert hast, erstellst du mit dem Befehl mariadb client eine neue MariaDB-Datenbank und einen neuen Benutzer, die von BookStack verwendet werden sollen.

Melde dich mit dem folgenden mariadb-Befehl am MariaDB-Server an. Gib dein MariaDB Root-Passwort ein, wenn du dazu aufgefordert wirst.

sudo mariadb -u root -p

Führe nun die folgenden Abfragen aus, um eine neue Datenbank und einen neuen Benutzer für BookStack zu erstellen. In diesem Beispiel erstellst du eine neue Datenbank und den Benutzer bookstack mit dem Passwort p4ssword.

CREATE DATABASE bookstack;
CREATE USER bookstack@localhost IDENTIFIED BY 'p4ssword';
GRANT ALL ON bookstack.* TO bookstack@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;

Datenbank und Benutzer anlegen

Als Nächstes führst du die folgende Abfrage aus, um die Berechtigungen für den Benutzer bookstack zu überprüfen.

SHOW GRANTS FOR bookstack@localhost;

Du solltest sehen, dass der Benutzer bookstack auf die Datenbank bookstack, die von BookStack verwendet wird, zugreifen und sie verwalten darf.

Benutzerprivilegien überprüfen

Gib quit ein, um den MariaDB Server zu verlassen.

Bookstack herunterladen

Nachdem du nun den PHP- und MariaDB-Server konfiguriert hast, kannst du BookStack installieren. In diesem Abschnitt wirst du BookStack über Git und Composer installieren.

Als Erstes erstellst du die neuen Verzeichnisse /var/www/.config und /var/www/.cache, die von Composer zum Speichern von Abhängigkeiten, Cache und Konfiguration verwendet werden. Dann musst du auch die Eigentumsrechte an beiden Verzeichnissen auf den Benutzer www-data ändern.

mkdir -p /var/www/{.config,.cache}
sudo chown -R www-data /var/www/{.config,.cache}

Wechsle in das Verzeichnis /var/www und lade den BookStack-Quellcode in das bookstack-Verzeichnis herunter. Dein BookStack-Installationsverzeichnis sollte /var/www/bookstack sein.

cd /var/www
git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch bookstack

Ändere nun den Eigentümer des Verzeichnisses /var/www/bookstack auf den Benutzer www-data und gehe in das Verzeichnis.

sudo chown -R www-data:www-data /var/www/bookstack
cd /var/www/bookstack

Bücherstapel herunterladen

Als Nächstes kopierst du die Datei .env.example nach .env und öffnest die neue Datei mit dem folgenden Befehl des nano-Editors.

sudo -u www-data cp .env.example .env
sudo -u www-data nano .env

Gib deinen Domainnamen in die Option APP_URL ein und gib die Details deiner MariaDB-Datenbank in die DB_-Einstellungen ein.

# The application URL
APP_URL=http://bookstack.hwdomain.io
# Database values also need to be modified
# If you follow previous command, you only need to add your DB_PASSWORD
DB_DATABASE=bookstack
DB_USERNAME=bookstack
DB_PASSWORD=p4ssword

Speichere und schließe die Datei, wenn du fertig bist.

Als nächstes führst du den folgenden Befehl aus, um die PHP-Abhängigkeiten über Composer zu installieren.

sudo -u www-data composer install --no-dev --no-plugins

Während der Installation wird die folgende Ausgabe angezeigt.

download install dependencies

Nachdem die PHP-Abhängigkeiten installiert sind, führe den folgenden Befehl aus, um den geheimen Schlüssel zu erzeugen und die Datenbank zu migrieren.

sudo -u www-data php artisan key:generate --no-interaction --force
sudo -u www-data php artisan migrate --no-interaction --force

Der geheime Schlüssel in der .env-Datei wird aktualisiert, und im Folgenden wird der Prozess der Datenbankmigration dargestellt.

Geheimschlüssel generieren und Datenbank migrieren

Nachdem alles erledigt ist, führe den folgenden Befehl aus, um die Eigentümerschaft einiger Verzeichnisse auf den Benutzer www-data zu ändern und sicherzustellen, dass diese Verzeichnisse beschreibbar sind.

sudo chown www-data:www-data -R bootstrap/cache public/uploads storage 
sudo chmod u+rw bootstrap/cache public/uploads storage

Zum Schluss führst du den folgenden Befehl aus, um die Berechtigung der .env-Datei auf 640 zu ändern. Damit wird sichergestellt, dass nur der Benutzer www-data Änderungen an der Datei vornehmen kann.

sudo chmod -R 640 /var/www/bookstack/.env

Virtuellen Apache2-Host konfigurieren

Im folgenden Abschnitt erstellst du eine neue Konfiguration des virtuellen Apache2-Hosts, auf dem BookStack laufen soll. Du musst also sicherstellen, dass du deinen Domainnamen vorbereitet hast und dass er auf die IP-Adresse des Servers zeigt.

Bevor du eine virtuelle Hostkonfiguration erstellst, führe den folgenden Befehl aus, um das Rewrite-Modul im Apache2 zu aktivieren.

sudo a2enmod rewrite

Rewrite-Modul aktivieren

Erstelle nun eine neue virtuelle Hostkonfiguration /etc/apache2/sites-available/bookstack.conf mit dem folgenden nano-Editor-Befehl.

sudo nano /etc/apache2/sites-available/bookstack.conf

Füge die folgende Konfiguration ein und achte darauf, den Domainnamen in der Option ServerName zu ändern. Im folgenden Beispiel wird die Domain bookstack.hwdomain.io für die BookStack-Installation verwendet.

<VirtualHost *:80>
    ServerName bookstack.hwdomain.io
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/bookstack/public/
<Directory /var/www/bookstack/public/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
</Directory>

ErrorLog ${APACHE_LOG_DIR}/bookstack-error.log
CustomLog ${APACHE_LOG_DIR}/bookstack-access.log combined
</VirtualHost>

Speichere und schließe die Datei, wenn du fertig bist.

Als Nächstes führst du den folgenden Befehl aus, um die virtuelle Hostdatei bookstack.conf zu aktivieren und deine Apache2-Syntax zu überprüfen.

sudo a2ensite bookstack.conf
sudo apachectl configtest

Wenn du die richtige Syntax verwendest, wird die Ausgabe„Syntax OK“ in deinem Terminal ausgegeben.

vhosts einrichten

Zum Schluss führst du den Befehl systemctl aus, um den aapche2-Dienst neu zu starten und die vorgenommenen Änderungen zu übernehmen.

sudo systemctl restart apache2

Bookstack mit SSL/TLS-Zertifikaten absichern

In dieser Anleitung wirst du BookStack mit SSL/TLS-Zertifikaten sichern, die du mit dem Tool Certbot von Letsencrypt generieren kannst.

Installiere Certbot und das Certbot Apache Plugin mit dem Befehl apt install. Bestätige mit y und fahre mit der Installation fort.

sudo apt install certbot python3-certbot-apache

certbot installieren

Führe nun den unten stehenden Certbot-Befehl aus, um SSL/TLS-Zertifikate zu erzeugen und deine BookStack-Installation zu sichern. Achte darauf, dass du den Domainnamen und die E-Mail-Adresse im folgenden Befehl änderst.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email admin@hwdomain.io -d bookstack.hwdomain.io

Nachdem der Vorgang abgeschlossen ist, sind deine SSL/TLS-Zertifikate im Verzeichnis /etc/letsencrypt/live/bookstack.hwdomain.io verfügbar. Außerdem wird deine BookStack-Installation automatisch mit HTTPS konfiguriert, das über das Certbot Apache Plugin eingerichtet wird.

Zugriff auf Bookstack

Jetzt ist alles konfiguriert und deine BookStack-Installation ist abgeschlossen. Du kannst nun auf deine BookStack-Installation zugreifen.

Starte deinen Webbrowser und rufe den Domainnamen deiner BookStack-Installation auf, z. B. https://bookstack.hwdomain.io/. Du wirst dann auf die BookStack-Anmeldeseite weitergeleitet.

Gib die Standard-E-Mail-Adresse admin@admin.com und das Passwort password ein und klicke dann auf Login.

Anmeldung bei Bookstack

Wenn die Anmeldung erfolgreich war, solltest du das BookStack-Dashboard wie folgt sehen:

Bookstack Dashboard

Fazit

Zum Schluss hast du BookStack erfolgreich auf einem Debian 12 Server installiert. Du hast BookStack über Git, Composer und mit den LAMP-Stack-Paketen (Apache2, MariaDB und PHP) installiert. Außerdem hast du BookStack mit SSL/TLS-Zertifikaten von Letsencrypt abgesichert. Von hier aus kannst du nun deine Informationen eingeben und deine eigene Dokumentation erstellen.

Das könnte dich auch interessieren …