Stefan's Weblog

3Apr/180

Nextcloud und Let´s Encrypt

Im Artikel ➡ Nextcloud auf dem Raspberry Pi habe ich beschrieben wie ihr Nextcloud auf einem Raspberry Pi einrichtet. In diesem Beitrag erkläre ich auch, wie ihr eure Nextcloud-Installation auch von unterwegs über das Internet erreicht.

Ihr benötigt für dieses Vorhaben entweder eine feste, statische IP-Adresse die euch vom ISP zugewiesen wird oder ihr verwendet einen DynDNS-Anbieter. Ich verwende hierfür den gleichen Anbieter und den gleichen Zugang, welchen ich schon für OpenVPN verwende ➡ Eigener VPN-Tunnel mit dem Raspberry Pi. In diesem Artikel habe ich auch schon beschrieben, wie der DynDNS-Zugang einzutragen ist.

Bevor es an die Erstellung des Zertifikats und an die Konfiguration des Raspberry Pi geht, muss eine Portweiterleitung auf eurem Router eingerichtet werden. Ich führe da hier an einem Beispiel eines AVM-Routers aus.

Die Portfreigabe für Nextcloud sieht wie folgt aus:

Portfreigabe einrichten

Portfreigabe einrichten

Portfreigabe einrichten - Gerät auswählen

Portfreigabe einrichten - Gerät auswählen

Portfreigabe einrichten - Portfreigabe

Portfreigabe einrichten - Portfreigabe

Portfreigabe einrichten - Portfreigabe

Portfreigabe einrichten - Portfreigabe

Nachdem ihr euren DynDNS-Anbieter und die Portfreigabe im Router eingetragen habt, könne wir auf dem Raspberry Pi Let´s Encrypt starten.

Ihr benötigt für die Konfiguration:

  1. eine gültige E-Mail-Adresse
  2. eueren DynDNS-Namen, den ihr im Router eingetragen habt

Startet die Einrichtung und folgt den Anweisungen. Let´s Encrypt aktiviert in diesem Zuge automatisch SSL für euren Apache2 Webserver.

sudo a2enmod ssl
sudo a2enmod headers
sudo service apache2 restart
sudo apt install git -y
cd /etc
sudo git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
sudo ./letsencrypt-auto

Der Ordner /etc/letsencrypt enthält alle Informationen und das Zertifikat und sollte am besten zusätzlich noch gesichert werden

Da das Let´s Encrypt nach 3 Monaten automatisch abläuft müssen wir es regelmäßig über einen CRON-Job erneuern lassen.
Wir legen dazu eine neue Datei mit den Domaininformationen an:

cd /etc/letsencrypt
sudo nano cli.ini

rsa-key-size = 4096
text = True
redirect = True
renew-by-default = True
agree-tos = True
email = 

Ihr müsst in der Zeile email eure E-Mail-Adresse, die ihr bei der Erzeugung des Zertifikats verwendet habt eintragen.

Den Update-Prozess für das Zertifikats könnt ihr im Terminal bereits prüfen, ihr müsst lediglich mydyndns.dns.de durch eure Domain ersetzen.

sudo /etc/letsencrypt/letsencrypt-auto certonly --agree-tos --renew-by-default -a webroot --webroot-path /var/www/html/ -d mydyndns.dns.de

Läuft alles ohne Fehlermeldung durch, können wir den Cron-Job anlegen

sudo crontab -e

Tragt am Ende der Datei die Zeile mit dem angepassten Domainnamen ein.

@weekly root /etc/letsencrypt/letsencrypt-auto certonly --agree-tos --renew-by-default -a webroot --webroot-path /var/www/html/ -d mydyndns.dns.de

Update vom 15.06.2018
Das mit der Erneuerung des Zertifikats hat bei mir mit dieser Option leider nicht funktioniert. Es war eine Anpassung erforderlich. Das Ganze gibts in einem extra Beitrag zum nachlesen
Let’s Encrypt – Zertifikatserneuerung schlägt fehlt

Das wars, damit wird euer Let´s Encrypt Zertifikat regelmäßg automatisch erneuert, vorausgesetzt euer Pi läuft.

Es sind nun noch zwei kleine Änderungen an Dateien des Apache2 zu machen:

  1. /etc/apache2/sites-available/000-default.conf
  2. /etc/apache2/sites-available/000-default-le-ssl.conf

Dort sind jeweils am Ende die folgenden Zeilen einzutragen:

<Directory /var/www/html/>
 Options +FollowSymlinks
 AllowOverride All
</Directory>

Bevor wir aber eine Änderung an den Dateien durchführen, legen wir noch ein Backup an.

cd /etc/apache2/sites-available
sudo cp 000-default.conf 000-default.conf-bak
sudo cp 000-default-le-ssl.conf 000-default-le-ssl.conf-bak
sudo nano 000-default.conf
sudo nano 000-default-le-ssl.conf
sudo service apache2 restart

/etc/apache2/sites-available/000-default.conf

/etc/apache2/sites-available/000-default.conf

/etc/apache2/sites-available/000-default-le-ssl.conf

/etc/apache2/sites-available/000-default-le-ssl.conf

Zum Schluss müssen wir Nextcloud noch mitteilen, dass wir eine eigene neue Domain haben über die wir das Webportal aufrufen können.
Die Konfiguration wird in der Datei /var/www/html/nextcloud/config/config.php gemacht.

Dort sucht ihr nach dem Abschnitt:

  'trusted_domains' =>
  array (
    0 => '192.xxx.xxx.xxx',

  ),

Fügt nach 0 => eine weitere Zeile hinzu und tragt dort eure Domain ein

  'trusted_domains' =>
  array (
    0 => '192.xxx.xxx.xxx',
    1 => 'mydyndns.dns.de',
  ),

Startet nun euren Apache neu und ihr solltet über euere Domain eure Nextcloud-Instanz erreichen.

sudo service apache2 restart

Nextcloud empfiehlt noch ein dem Beitrag Hardening and Security Guidance den Webtraffic ständig über SSL laufen zu lassen. Hierfür ist es erforderlich, dass ihr eine Virtual Hosts-Datei im Verzeichnis /etc/apache2/sites-available/ anlegt.

Der Name der Datei setzt sich zusammen aus eurem Domain-Namen und der Datei-Endung conf. z.B. mydyndns.dns.de.conf

In die Datei müsst ihr den folgenden Absatz einfügen

<VirtualHost *:80>
   ServerName mydyndns.dns.de
   Redirect permanent / https://mydyndns.dns.de/nextcloud
</VirtualHost>

cd /etc/apache2/sites-available
sudo nano mydyndns.dns.de.conf
sudo service apache2 restart

Nextcloud Artikelserie

  1. Nextcloud auf dem Raspberry Pi
  2. Nextcloud und Let´s Encrypt
  3. Nextcloud - Konfiguration und App-Installation
  4. Nextcloud - E-Mail-Versand einrichten
  5. Raspian und Nextcloud absichern

Bildquelle: raspberrypi.org

hat dir dieser Artikel gefallen?

Dann abonniere doch diesen Blog per RSS Feed!

Kommentare (0) Trackbacks (0)

Zu diesem Artikel wurden noch keine Kommentare geschrieben.


Leave a comment

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden .

Noch keine Trackbacks.

%d Bloggern gefällt das: