Nextcloud bauen mit Jet – 64 Bit Edition #03 – Einrichtung des Webservers

Der Webserver ist der Hauptdienst, über den die ganze Cloud funktioniert. Egal ob die Website angezeigt werden, eine Datei herauf- oder heruntergeladen werden, oder ein Termineintrag aktualisiert werden soll. Alles läuft über den Webserver. Ich hab es sehr ausführlich im Video erklärt, aber es gibt doch einige Einstellungen bei denen es viel einfacher ist, nicht alles abschreiben zu müssen 😅

Alle Befehle in diesem Tutorial werden mit Administratorenrechten ausgeführt.
Daher bitte einmal den Befehl sudo -s ausführen, um Rootrechte zu erhalten.

Die Verschlüsselung

Da mir die Sicherheit eurer Nextcloud sehr wichtig ist, machen wir es in diesem Tutorial gleich richtig. Unser Webserver wird nämlich nur per HTTPS erreichbar sein.
Um das zu erreichen benötigen wir erst mal ein Zertifikat. Normalerweise würde man jetzt bei einem Server der im Internet steht ein richtiges Zertifikat von einer autorisierten Zertifikatsstelle anfordern und verwenden. Da das aber meistens Geld kostet und einen Mehraufwand bedeuten würde, stellen wir unser Zertifikat einfach selber aus. Für unsere Zwecke reicht das vollkommen aus und hat keine sicherheitstechnischen Einschränkungen. In einem späteren Tutorial schauen wir uns aber vielleicht die Einrichtung von Lets Encrypt Zertifikaten, für über das Internet erreichbare Clouds an.
Um das Zertifikat zu erstellen werden wir folgende Befehle absetzen (Notwendige Felder entwerder beim Standard belassen oder selber ausfüllen. Ein Passwort vergeben wir aber für unser Zertifikat nicht. Die Tage der Gütigkeit können gerne auch länger gewählt werden):

mkdir /var/cert
cd /var/cert
openssl genrsa -out server.key 4096
openssl req -new -key server.key -out server.csr -sha256
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Nun sollten sich im Ordner /var/cert drei Dateien befinden.
server.crt, server.csr und server.key

Pfade für den Webserver

Der Apache Webserver verwendet standardmäßig den Ordner /var/www/html als Verzeichnis, welches sich auf der SD Karte des Raspberrys befindet. Wir wollen das ganze etwas aufteilen indem wir ein weiteres Verzeichnis auf unserem zusätzlichen Speichermedium anlegen und aus Schönheitsgründen auch nicht den Ordner „html“ weiter verwenden. Natürlich setzen wir auch noch die Verzeichnisrechte gleich richtig.

mkdir /media/festplatte/nextcloud
chown -R www-data:www-data /media/festplatte/nextcloud
mkdir /var/www/nextcloud
rm -R /var/www/html

Damit Apache überhaupt das neue Verzeichnis auf dem Speichermedium akzeptiert, begeben wir uns in die /etc/apache2/apache2.conf Datei und fügen folgendes dort ein (Am geschicktesten natürlich in der Nähe der anderen „Directory“ Einträgen):

<Directory /media/festplatte/nextcloud>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Aktivierung der Seite

Damit Apache weiß was zutun ist werden wir die bestehende Konfiguration so abändern, dass diese alle Zugriffe über http nach https weiter leitet, im richtigen Verzeichnis nach den Nextclouddateien sucht und natürlich auch die https Seite mit unseren Zertifikaten verschlüsselt. Daher bearbeiten wir die /etc/apache2/sites-available/000-default.conf Datei so, dass sie ungefähr so aussieht:

<VirtualHost *:80>
	DocumentRoot /var/www/nextcloud
	<IfModule mod_rewrite.c>
		RewriteEngine On
		RewriteCond %{HTTPS} off
		RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
	</IfModule>
</VirtualHost>
<IfModule mod_ssl.c>
	<VirtualHost *:443>
		DocumentRoot /var/www/nextcloud
		SSLEngine on
		SSLCertificateFile /var/cert/server.crt
		SSLCertificateChainFile /var/cert/server.csr
		SSLCertificateKeyFile /var/cert/server.key
	</VirtualHost>
</IfModule>

Wenn wir nun alles richtig gemacht haben, können wir mit dem Befehl systemctl reload apache2 den Webserver dazu anweisen, die neue geänderte Konfiguration zu laden. Wenn keine Fehler erscheinen, ist das schon mal ein gutes Zeichen. Bei Problemen ist es immer gut den Befehl apachectl configtest auszuführen, um gerade Schreibfehler schnell zu idenifizieren.

Zum testen kann einfach eine index.html Datei im Verzeichnis /var/www/nextcloud/ abgelegt werden (Bitte danach wieder löschen!) und versucht werden auf den Pi per Webbrowser zuzugreifen. Wenn ihr eine Zertifikatswarnung erhällt ist das okay. Das Zertifikat bestätigen und schauen ob eure index.html Seite geladen wird (Sollte dazu natürlich auch was drin stehen 😅)

Schreibe einen Kommentar