Installation unter Debian 10

Dieser Guide lehnt an die offizielle Dokumentation von BookStack an und funktioniert so mit Version 0.31.6. Das von BookStack bereitgestellte Installationsscript für Ubuntu funktioniert auf Grund der Abhängigkeiten leider nicht unter Debian 10, sodass der hier beschriebene Weg die Schritte des Scripts in angepasster Form manuell durchläuft.

Vorbereitung

Um BookStack auf einem frisch installierten Debian 10 einzurichten, müssen zunächst die benötigten Pakete installiert werden. Benötigt wird ein Webserver (hier: Apache2), ein Datenbankserver (hier: MySQL) sowie PHP:

apt update
apt install -y apache2 libapache2-mod-php7.3 php7.3 php7.3-fpm php7.3-curl php7.3-mbstring php7.3-ldap php7.3-tidy php7.3-xml php7.3-zip php7.3-gd php7.3-mysql mariadb-server mariadb-client git curl

Einrichtung der Datenbank

Im Anschluss sollte die Sicherheit der MySQL-Installation erhöht werden, hierzu einfach dem Dialog des Scripts folgen:

mysql_secure_installation

Anschließend richten wir eine Datenbank samt User für BookStack ein. Der User wird lediglich zur Anbindung der Datenbank benötigt, nicht zum Login auf der Weboberfläche:

mysql -u root -p
CREATE DATABASE bookstack;
CREATE USER 'RANDOMUSER'@'localhost' IDENTIFIED BY 'RANDOMPASSWORD';
GRANT ALL ON bookstack.* TO 'RANDOMUSER'@'localhost';
FLUSH PRIVILEGES;
quit

Installation

Nun laden wir BookStack von der offiziellen GitHub-Seite herunter:

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

Jetzt laden wir den Comoser nach und lassen das Setup durchlaufen. Der Composer sollte danach wieder gelöscht werden:

cd /var/www/bookstack
curl -s https://getcomposer.org/installer > composer-setup.php
php composer-setup.php --quiet
rm -f composer-setup.php
export COMPOSER_ALLOW_SUPERUSER=1
php composer.phar install --no-dev --no-plugins

Konfiguration BookStack

Nach erfolgreicher Installation verbinden wir BookStack nun mit der eingerichteten Dankenbank. Hierzu wird die Hauptkonfigurationsdatei genutzt, die wir zunächst umbenennen müssen:

cd /var/www/bookstack
mv .env.example .env

Folgende Einträge müssen hier angepasst werden:

  • APP_URL=http://HOSTNAME/
  • DB_HOST=localhost
  • DB_DATABASE=bookstack
  • DB_USERNAME=RANDOMUSER
  • DB_PASSWORD=RANDOMPASSWORD

Nun können wir den App-Key generieren und die Datenbank füttern:

php artisan key:generate --no-interaction --force
php artisan migrate --no-interaction --force

Abschließend passen wir die Rechte entsprechend an, sodass der Webserver auf die benötigten Subfolder von BookStack Zugriff hat:

chown www-data:www-data -R bootstrap/cache public/uploads storage
chmod -R 755 bootstrap/cache public/uploads storage

An dieser Stelle ist das Setup von BookStack fertiggestellt - was jedoch noch fehlt ist die Konfiguration des Webservers.

Konfiguration Apache2

WICHTIG: Die hier gezeigte Konfiguration stellt eine Basiskonfiguration dar, die so nicht über das Internet erreichbar sein sollte! Externer Einstieg in die Materie: https://www.linuxmaker.com/linux/absicherung-von-apache24.html

Zunächst muss das Apache2-Modul "mod_rewrite" aktiviert werden:

a2enmod rewrite

Anschließend wird eine Virtual-Host Datei /etc/apache2/sites-available/bookstack.conf mit folgendem Inhalt angelegt:

<VirtualHost *:80>
	ServerName FQDN
	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}/error.log
	CustomLog \${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Ist die Datei angelegt (Anpassung des Hostnamen in Zeile 2 nicht vergessen), können wir die Konfiguration aktivieren:

a2dissite 000-default.conf
a2ensite bookstack.conf
systemctl restart apache2

BookStack ist nun über den Hostnamen/IP des Systems im Browser aufrufbar. Der Default-Login lautet:

admin@admin.com

password

Neben der Absicherung des Apache2 sollte zudem die Anmeldung in einem öffentlichen Netzwerk nur via HTTPS (und Zertifikat) erfolgen. Selbstverständlich sollte auch der Default-Login schnellstmöglich geändert und die offizielle Dokumentation zu Rate gezogen werden: https://www.bookstackapp.com/docs/admin/security/