Nextcloud bauen mit Jet #03

      16 Kommentare zu Nextcloud bauen mit Jet #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 😅

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.
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) :

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

Nun sollten sich im Ordner /var/cert drei Dateien befinden.

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.

sudo mkdir /media/festplatte/nextcloud
sudo chown -R www-data:www-data /media/festplatte/nextcloud
sudo mkdir /var/www/nextcloud
sudo 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 sudo 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.

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 😅)

<– Einrichtung des SpeichermediumsKonfiguration des Datenbankservers –>

16 thoughts on “Nextcloud bauen mit Jet #03

  1. Pingback: Nextcloud bauen mit Jet #04 – Jet0JLH.de

  2. Thomas Erbe

    Hallo,
    habe mir die ganzen Videos angesehen und die gefallen mir sehr gut.
    Möchte mir die Nextcloud im RasperryPi installieren.

    Habe mal eine entscheidene Frage an dich, habe mit Programmieren nix am Hut, denke bekomme das aber hin.
    Was ich aber nicht verstehe, wenn du am programmieren bist in der commando zeile für den Pi, ist das am windows Rechner oder hast du monitor am Pi.
    Weil du zwischen Pi und Nextcloud hin und her springst.
    Hoffe habe mich verständlich ausgedrückt.
    Gruß Thomas

    1. jet0jlh Post author

      Ich arbeite mit dem Programm Putty für Windows. Das ermöglicht es mir per SSH eine Verbindung auf das Terminal des Raspberrys herzustellen. Dazu muss aber SSH auf dem Raspberry aktiviert sein.
      Wenn du dir unsicher bist, dann schau am Besten nocheinmal in Video #01 rein, wo ich das Betriebssystem installiere. Dort lege ich eine SSH Datei an, welche genau das ermöglicht.

  3. Thomas Erbe

    Hallo,
    danke für die Antwort.
    Ich habe mich schon bischen eingelesen, bin da auch auf Putty gestoßen,
    Habs schon installiert. Rasperry starter Kit mit 4GB ist bestellt.

    Hast du für mich paar gute Links zum Pi, interessiere mich sehr dafür.
    Wäre super wenn du für mich was hättest zum lernen.
    Gruß Thomas

  4. Thomas Erbe

    Hi,
    bin gerade an der Verschlüsselung.
    wenn ich die Zeile eingebe: sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt bekomme ich die Meldung.
    x509: Unknown parameter server.crt
    Kannst du mir bitte weiter helfen.

    Gruß Thomas

    1. jet0jlh Post author

      Hallo Thomas,

      für mich klingt das auf den ersten Blick, also ob da eventuell das openssl in deinem Befehl fehlen könnte, oder die Reihenfolge der Parameter verdreht sein könnten.
      Ich mach mir aber weniger Sorgen, dass es was größeres ist.

      Viele Grüße zurück.
      Jet

  5. Wolfgang

    Hallo,
    leider bekomme ich mit keine sichere Verbindung, ich benutze den Google Chrome Version 84.0.4147.89 (Offizieller Build) (64-Bit). In der /var/cert sind die 3 Dateien vorhanden, in der /etc/apache2/apache2.conf und in der /etc/apache2/sites-available/000-default.conf gibt es auch keine Fehler. Bin etwas ratlos und für jeden Hinweis dankbar.
    Gruß Wolfgang

    1. jet0jlh Post author

      Hallo Wolfgang,

      alles ist in Ordnung. Die unsichere Verbindung kommt nur auf, da das Zertifikat selbst ausgestellt wurde und somit nicht als Vertrauenswürdig gillt.
      Die Seite selber ist allerdings verschlüsselt und das Zertifikat muss nur im Browser bestätigt werden.

      Viele Grüße

      Jet

  6. Simon Wollnik

    Hallo und schönen guten Tag,

    ich bin nun seit einiger Zeit dran Ihr Tutorial zu befolgen und habe nun einen Fehler beim starten bzw. neuladen des Apache Servers aus dem ich nicht schlau werde:

    pi@NextCloud:~ $ sudo /etc/init.d/apache2 start
    [….] Starting apache2 (via systemctl): apache2.serviceJob for apache2.service
    failed because the control process exited with error code.
    See „systemctl status apache2.service“ and „journalctl -xe“ for details.
    failed!
    pi@NextCloud:~ $ systemctl status apache2.service
    ● apache2.service – The Apache HTTP Server
    Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
    Active: failed (Result: exit-code) since Mon 2020-09-21 15:25:16 CEST; 40s ag
    Docs: https://httpd.apache.org/docs/2.4/
    Process: 754 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILUR

    Sep 21 15:25:16 NextCloud systemd[1]: Starting The Apache HTTP Server…
    Sep 21 15:25:16 NextCloud apachectl[754]: apache2: Syntax error on line 231 of /
    Sep 21 15:25:16 NextCloud apachectl[754]: Action ’start‘ failed.
    Sep 21 15:25:16 NextCloud apachectl[754]: The Apache error log may have more inf
    Sep 21 15:25:16 NextCloud systemd[1]: apache2.service: Control process exited, c
    Sep 21 15:25:16 NextCloud systemd[1]: apache2.service: Failed with result ‚exit-
    Sep 21 15:25:16 NextCloud systemd[1]: Failed to start The Apache HTTP Server.
    lines 1-13/13 (END)…skipping…
    ● apache2.service – The Apache HTTP Server
    Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
    Active: failed (Result: exit-code) since Mon 2020-09-21 15:25:16 CEST; 40s ag
    Docs: https://httpd.apache.org/docs/2.4/
    Process: 754 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILUR

    Sep 21 15:25:16 NextCloud systemd[1]: Starting The Apache HTTP Server…
    Sep 21 15:25:16 NextCloud apachectl[754]: apache2: Syntax error on line 231 of /
    Sep 21 15:25:16 NextCloud apachectl[754]: Action ’start‘ failed.
    Sep 21 15:25:16 NextCloud apachectl[754]: The Apache error log may have more inf
    Sep 21 15:25:16 NextCloud systemd[1]: apache2.service: Control process exited, c
    Sep 21 15:25:16 NextCloud systemd[1]: apache2.service: Failed with result ‚exit-
    Sep 21 15:25:16 NextCloud systemd[1]: Failed to start The Apache HTTP Server.

    Leider werde ich nicht schlau draus, was ich falsch gemacht habe, da ich Ihr Tutorial genau befolgt habe.
    Könnten Sie mir bitte helfen?

    Mit freundlichen Grüßen
    Simon Wollnik

    1. jet0jlh Post author

      Ohh auf Anhieb werde ich da auch nicht schlau drauß.
      Als ersten Schritt würde ich mal versuchen wollen die Konfig auszuschließen. Nicht, dass bereits hier Fehler drin sind.
      Zum Testen kann man den Befehl „apachectl configtest“ absetzen. Sollten bereits hier nicht ein eindeutiges „Syntax OK“ zurück kommen, so müsste man sich die Konfig nocheinmal im Detail ansehen.

  7. Pingback: Nextcloud bauen mit Jet #02 – Jet0JLH.de

  8. Manuel

    Herzlichen Dank für die Anleitung.
    Leider komme ich nicht weiter. Ich habe jeden Schritt 1:1 befolgt. An dieser Stelle:
    /etc/apache2/sites-available/000-default.conf
    ist das File aber leider komplett leer. Wenn ich dort deine Befehle einfüge bekomme ich die Fehlermeldung
    [ Fehler beim Schreiben von /etc/apache2/sites-avaiable/000-default.conf: Datei oder Verzeichnis nicht gefunden ]

    Wie komme ich dort denn nun weiter? Was könnte ich vielleicht falsch gemacht haben?

    1. jet0jlh Post author

      Klingt eher danach, dass der Editor nicht per sudo aufgerufen wurde und somit nicht die notwendigen Rechte hat. Könnte ich aber auch echt etwas deutlicher schreiben. Am besten ist es wenn du daher am Anfang einmal sudo -s abschickst. Dann bist du duaerhaft root und solltest nicht mehr in diese Probleme laufen.

Schreibe einen Kommentar