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