{"id":394,"date":"2023-09-07T11:00:00","date_gmt":"2023-09-07T09:00:00","guid":{"rendered":"https:\/\/jet0jlh.de\/?p=394"},"modified":"2023-09-06T00:07:46","modified_gmt":"2023-09-05T22:07:46","slug":"nextcloud-bauen-mit-jet-64-bit-edition-03-einrichtung-des-webservers","status":"publish","type":"post","link":"https:\/\/jet0jlh.de\/?p=394","title":{"rendered":"Nextcloud bauen mit Jet &#8211; 64 Bit Edition #03 &#8211; Einrichtung des Webservers"},"content":{"rendered":"\n<p>Der Webserver ist der Hauptdienst, \u00fcber 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\u00e4uft \u00fcber den Webserver. Ich hab es sehr ausf\u00fchrlich im Video erkl\u00e4rt, aber es gibt doch einige Einstellungen bei denen es viel einfacher ist, nicht alles abschreiben zu m\u00fcssen \ud83d\ude05<\/p>\n\n\n\n<figure class=\"wp-block-embed is-provider-youtube wp-block-embed-youtube\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Die Einrichtung des Webservers | Nextcloud bauen mit Jet 64 Bit #03\" width=\"625\" height=\"352\" src=\"https:\/\/www.youtube.com\/embed\/vHbxkwSGpXo?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>Alle Befehle in diesem Tutorial werden mit Administratorenrechten ausgef\u00fchrt.<br>Daher bitte einmal den Befehl <code>sudo -s<\/code> ausf\u00fchren, um Rootrechte zu erhalten.<\/p><\/blockquote><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Die Verschl\u00fcsselung<\/h3>\n\n\n\n<p>Da mir die Sicherheit eurer Nextcloud sehr wichtig ist, machen wir es in diesem Tutorial gleich richtig. Unser Webserver wird n\u00e4mlich nur per HTTPS erreichbar sein.<br>Um das zu erreichen ben\u00f6tigen wir erst mal ein Zertifikat. Normalerweise w\u00fcrde 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\u00fcrde, stellen wir unser Zertifikat einfach selber aus. F\u00fcr unsere Zwecke reicht das vollkommen aus und hat keine sicherheitstechnischen Einschr\u00e4nkungen. In einem sp\u00e4teren Tutorial schauen wir uns aber vielleicht die Einrichtung von Lets Encrypt Zertifikaten, f\u00fcr \u00fcber das Internet erreichbare Clouds an.<br>Um das Zertifikat zu erstellen werden wir folgende Befehle absetzen (Notwendige Felder entwerder beim Standard belassen oder selber ausf\u00fcllen. Ein Passwort vergeben wir aber f\u00fcr unser Zertifikat nicht. Die Tage der G\u00fctigkeit k\u00f6nnen gerne auch l\u00e4nger gew\u00e4hlt werden):<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">mkdir \/var\/cert\ncd \/var\/cert\nopenssl genrsa -out server.key 4096\nopenssl req -new -key server.key -out server.csr -sha256\nopenssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt<\/pre>\n\n\n\n<p>Nun sollten sich im Ordner \/var\/cert drei Dateien befinden.<br>server.crt, server.csr und server.key<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pfade f\u00fcr den Webserver<\/h3>\n\n\n\n<p>Der Apache Webserver verwendet standardm\u00e4\u00dfig 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\u00e4tzlichen Speichermedium anlegen und aus Sch\u00f6nheitsgr\u00fcnden auch nicht den Ordner &#8222;html&#8220; weiter verwenden. Nat\u00fcrlich setzen wir auch noch die Verzeichnisrechte gleich richtig.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">mkdir \/media\/festplatte\/nextcloud\nchown -R www-data:www-data \/media\/festplatte\/nextcloud\nmkdir \/var\/www\/nextcloud\nrm -R \/var\/www\/html<\/pre>\n\n\n\n<p>Damit Apache \u00fcberhaupt das neue Verzeichnis auf dem Speichermedium akzeptiert, begeben wir uns in die \/etc\/apache2\/apache2.conf Datei und f\u00fcgen folgendes dort ein (Am geschicktesten nat\u00fcrlich in der N\u00e4he der anderen &#8222;Directory&#8220; Eintr\u00e4gen):<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;Directory \/media\/festplatte\/nextcloud>\n        Options Indexes FollowSymLinks\n        AllowOverride None\n        Require all granted\n&lt;\/Directory><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Aktivierung der Seite<\/h3>\n\n\n\n<p>Damit Apache wei\u00df was zutun ist werden wir die bestehende Konfiguration so ab\u00e4ndern, dass diese alle Zugriffe \u00fcber http nach https weiter leitet, im richtigen Verzeichnis nach den Nextclouddateien sucht und nat\u00fcrlich auch die https Seite mit unseren Zertifikaten verschl\u00fcsselt. Daher bearbeiten wir die \/etc\/apache2\/sites-available\/000-default.conf Datei so, dass sie ungef\u00e4hr so aussieht:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;VirtualHost *:80>\n\tDocumentRoot \/var\/www\/nextcloud\n\t&lt;IfModule mod_rewrite.c>\n\t\tRewriteEngine On\n\t\tRewriteCond %{HTTPS} off\n\t\tRewriteRule (.*) https:\/\/%{HTTP_HOST}%{REQUEST_URI} [R=301,L]\n\t&lt;\/IfModule>\n&lt;\/VirtualHost>\n&lt;IfModule mod_ssl.c>\n\t&lt;VirtualHost *:443>\n\t\tDocumentRoot \/var\/www\/nextcloud\n\t\tSSLEngine on\n\t\tSSLCertificateFile \/var\/cert\/server.crt\n\t\tSSLCertificateChainFile \/var\/cert\/server.csr\n\t\tSSLCertificateKeyFile \/var\/cert\/server.key\n\t&lt;\/VirtualHost>\n&lt;\/IfModule><\/pre>\n\n\n\n<p>Wenn wir nun alles richtig gemacht haben, k\u00f6nnen wir mit dem Befehl <code>systemctl reload apache2<\/code> den Webserver dazu anweisen, die neue ge\u00e4nderte Konfiguration zu laden. Wenn keine Fehler erscheinen, ist das schon mal ein gutes Zeichen. Bei Problemen ist es immer gut den Befehl <code>apachectl configtest<\/code> auszuf\u00fchren, um gerade Schreibfehler schnell zu idenifizieren.<\/p>\n\n\n\n<p>Zum testen kann einfach eine index.html Datei im Verzeichnis \/var\/www\/nextcloud\/ abgelegt werden (Bitte danach wieder l\u00f6schen!) und versucht werden auf den Pi per Webbrowser zuzugreifen. Wenn ihr eine Zertifikatswarnung erh\u00e4llt ist das okay. Das Zertifikat best\u00e4tigen und schauen ob eure index.html Seite geladen wird (Sollte dazu nat\u00fcrlich auch was drin stehen \ud83d\ude05)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Webserver ist der Hauptdienst, \u00fcber 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\u00e4uft \u00fcber den Webserver. Ich hab es sehr ausf\u00fchrlich im Video erkl\u00e4rt, aber es gibt doch einige Einstellungen bei denen&#8230; <a href=\"https:\/\/jet0jlh.de\/?p=394\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,5],"tags":[],"class_list":["post-394","post","type-post","status-publish","format-standard","hentry","category-nextcloud","category-tutorials"],"_links":{"self":[{"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/posts\/394","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=394"}],"version-history":[{"count":4,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/posts\/394\/revisions"}],"predecessor-version":[{"id":479,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/posts\/394\/revisions\/479"}],"wp:attachment":[{"href":"https:\/\/jet0jlh.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=394"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}