[How to] Über Container Station Nextcloud inkl. SSL mit automatischer Erneuerung ohne SSH zu benutzen

  • Hallo zusammen,


    nach gut 14 Tagen des wilden experimentieren habe ich es geschafft, in der Container Station Nextcloud NGINX mit automtischer Let‘s Encrypt Zerifikat zu nutzen, ohne das ich SSH nutzen musste, was vor allem für unbedarfte Nutzer wahrscheinlich der einfachere Weg ist.

    Alle Container, die ich nutze konnten nativ über die Container Station installiert werden.


    Allgemeines:

    1. Bitte aber nach jedem ersten Erstellen des Containers, diesen wieder löschen und aus dem lokalen Image erneut erstellen, da dann alle benötigten Daten bereits ausgefüllt sind (Entweder ist das Feature oder ein Fehler der Container Station). Ihr findet es dann nach dem erneuten Suchen aus dem lokalen Reiter heraus erstellen
    2. Die Portweiterleitung wird nur kurz unten beschreiben. Im Router muss für die Portweiterleitung die Ports 80 (http) und 443 (https) frei sein und dürfen nicht anders belegt sein. Das Routen macht ja NGINX für uns
    3. Wichtig ist auch das eure Domain keine Weiterleitung ist. NGINX wertet die Domain aus, bei einer einfachen Weiterleitung kommt der Domainname an auf dem eure Domain weitergeleitet hat.
    4. Geht mit bedacht an diese Anleitung, da ihr nun eine Tür aus dem Internet zu euch ins lokale Netz öffnet. Am besten lasst ihr die Container auch im NAT-Modus und vergebt diesen keine lokale IP-Adresse

    Bsp_Lokale_Installation.png





    Als erstes habe ich nach der Anleitung von ariaci hier MariaDB und pypMyAdmin installiert

    Aber Achtung:

    Anders als in der Anleitung beschrieben (da es die Link-Funktion nicht mehr in der ContainerStation gibt) müsst ihr dort zwei Enviroment Variablen anlegen.

    Dies geht über die Einstellungenè Erweiterte Einstellungen è Umgebung

    Dort gebt ihr

    PMA_HOST = IP-Adresse des CMariaDB-Container

    PMA_HOST = Port auf dem die DB hört. (Im Standard ist das 3306) ich habe aber ein Port-Mapping des Containers auf 3306 è 33306 gemacht.

    PMA_HOST.png



    Es kann sein, das ihr diese nicht hinzufügen könnt, da eine wirre Fehlermeldung kommt, die besagt ihr müsst erst alle Informationen ausfüllen.

    Dann einfach bei dem Wert PHP_MD5 eine Zahl eintragen, und diese vor dem Speichern wieder entfernen…

    MD5_Fehler.png



    Nun zur eigentlicher Arbeit...


    Nextcloud installieren

    Als erstes müssen wir nun den nextcloud Datenbank-User anlegen, damit Nextcloud die Daten speichern kann
    Das macht ihr wie folgt: über phpMyAdmin und legt den User nextcloud an. Und das wie folgt

    http://yourNAS:9080 und an phpMyAdmin Anmelden.


    Dann auf Benutzerkonten gehen

    phpmyadmin_1.png


    Und gebt folgende Informationen ein. Wichtig ist das ihr den Hacken bei „Erstelle eine Datenbank mit gleichem Namen…“ setzt.

    phpmyadmon_2.png



    Anschließend geht ihr auf OK. Dann kommt ein weiteres Bild mit welchem ihr noch Berechtigungen vergeben könnt, aber hier müsst ihr nichts machen.

    Dann sollte euer Bild ungefähr wie folgt aussehen…

    phpmyadmon_3.png



    Jetzt den Container installieren


    Hier habe ich das Offizielle Docker Image heruntergeladen. Wie auch hier habe ich eigentlich alle Einstellungen, so belassen.

    Einzig habe ich den Container im Netzwerk (wie bei eigentlich allen meinen Containern) auf Nat gelassen und ein PortMapping eingestellt.


    Auch hier wieder

    ErstellenèContainer entfernenèdann aus lokaler Ressource wieder neu erstellen…


    Ich habe bei EinstellungenèUmgebung dann folgende Werte hinzugefügt, um die Datenbankverbindung von NextCloud und MariaDB direkt zu erstellen, sowie die vertrauenswürdigen Domains eingetragen


    MSQL_DATABASE = Name der Datenband (nextcloud)

    MYSQL_USER = Benutzer (nextcloud)

    MYSQL_PASSWORD = Passwort welches ihr im vorherigen Schritt vergeben habt.

    MYSQL_HOST = IP-Adresse und Port der MariaDB 192.X.X.X:3306

    NEXTCLOUD_TRUSTED_DOMAINS = Lokale private IP und die Domain unter der Nextcloud aus dem Internet erreichbar sein soll.

    Als Trenner dient das Leerzeichen : 192.X. X.X sub.domain.ld

    nectcloud_1.png




    Wichtig ist hier auch, das ihr eure Daten mappt, den sonst sind diese Weg wenn der Container aktualisiert wird…

    nectcloud_2.png


    Anschließend müsst ihr noch unter Netzwerk ein Portmapping vornehmen:

    Ich habe die Port wie folgt umgelegt:


    80 è 35180

    443 è 35143


    nectcloud_3.png


    Und Zack das war es!




    Nun sollte der Container starten und nach dem Aufruf des Links http://localNAS:35180 die Nextcloud Installationsabschlussseite erscheinen.

    Hier vergebt nur noch den Benutzername des Admin und sein Passwort. Die Datenbankeinstellung fällt weg, da wir das ja schon über die Enviroment Variablen gemacht haben.


    Wenn der Container aus dem Internet Verfügbar sein soll, müsst ihr noch die Config.php von Nextcloud erweitern. Hier muss quasi nur eine Zeile eingefügt werden.

    Das geht über einen Editor eurer Wahl. der Pfad der Datei lautet:

    \\192.X.X.X\Container\NextCloud\config\config.php (Wenn ihr keine Berechtigung habt, über den File Manager ändern und Public alles zulassen)


    Da wir ja NGINX benutzen werden, der ebenfalls im NAT-Modus läuft habe ich folgende Werte eingetragen da ich nicht wusste, unter welcher IP sich der NGINX-Container bei Nextcloud meldet, daher habe ich beide angelegt 😊

    einmal der IP-Bereich innerhalb des Containers 10.0.3.0/24 (Subnet 255.255.255.0)

    der mit der IP-Bereich des NAS, welches im Netz 192.X.X.0/24 (Subnet 255.255.255.0) liegt.

    Folgende Zeile muss eingefügt werden

    Code
    'trusted_proxies' => ['10.0.3.0/24', '192.X.X.0/24'],

    nextcloud_5.png


    An dieser Stelle vergewissert euch bitte, das auch die vertrauenswürdigen Domains enthalten sind (siehe gerade eben beschrieben).

    nextcloud_4.png


    Soweit ist Nextcloud jetzt fertig!


    NGINX installieren

    Zum Schluss installieren wir noch den Container NGINX, hier habe ich aber nicht das offizielle Docker Image genommen,

    sondern das Image jlesage/nginx-proxy-manager Hier ist nämlich der grafische NGINX Proxy Manager mit Dabei, was die Konfiguration wesentlich einfacher macht und das Image wird regelmäßig aktualisiert.

    Auch hier wieder Container erstellen => Container entfernen => und aus lokaler Quelle neu erstellen.


    Hier habe ich unter Umgebung folgende Einstellungen vorgenommen.

    LANG auf Deutsch gesetzt

    TZ auf Berliner Zeitzone gesetzt.

    NGINX_1.png

    Dann noch Portmappings, da ich es besser finde die sensibelen Port 80/443 nicht im Netzwerk zu belegen

    4443 è 35443 (4443 ist korrekt)

    80 è 35080

    8181 è 35081 (Link zur Config Seite. Kür keine Pflicht 😊 )

    NGINX_2.png




    !!! Achtung Konfig zur Portweiterleitung eures Routers !!!!

    Im Router gebt ihr bitte nun folgende Weiterleitungen ein

    Port 80 è IP-NAS Port 35080

    Port 443 è IP-NAS Port 35443

    !!! Achtung Konfig zur Portweiterleitung eures Routers !!!!



    Nachdem der Container erstellt ist und läuft, gehen wir auf die Config-Seite mittels der Adresse

    http://localNAS:35081

    Die Daten zur ersten Anmeldung lauten:

    Email: admin@example.com

    Password: changeme


    Ihr müsst danach sofort eine neue E-Mail Adresse anlegen und ein neues Kennwort vergeben.


    Ist das erledigt, geht ihr auf "Proxy Hosts"

    NGINX_3.png


    und dort auf Add new Proxy Host

    NGINX_4.png



    Dort gebt ihr dann die Daten euerer Konfig ein.

    Bei "Domain Names" eure Domain im Format sub.domain.ld und die IP eures NAS mit dem Port

    NGINX_5.png




    Dann speichert ihre diese, wartet ein paar Minuten und nun sollte eure Nextloud aus dem Netz erreichbar sein!

    :qnap:


    Nun wollen wir aber auch SSL haben, und gehen daher auf unseren Eintrag auf EDIT und gehen dann auf den Reiter SSL…

    Dort gebt ihr eure E-Mail ein und aktiviert Force SSL, die anderen Optionen kenne ich nicht, und daher habe ich Sie weg gelassen 😊



    NGINX_6.png




    Dann save und alles ist vollbracht. Eure Domain ist nun per SSL erreichbar!

    Das SSL-Zertifikat aktualisiert sich selbstständig, das macht NGINX von sich aus...




    Herzlichen Glückwunsch, ihr habt es (hoffentlich) geschafft und es läuft auch?!