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:
- 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
- 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
- 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.
- 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
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.
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…
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
Und gebt folgende Informationen ein. Wichtig ist das ihr den Hacken bei „Erstelle eine Datenbank mit gleichem Namen…“ setzt.
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…
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
Wichtig ist hier auch, das ihr eure Daten mappt, den sonst sind diese Weg wenn der Container aktualisiert wird…
Anschließend müsst ihr noch unter Netzwerk ein Portmapping vornehmen:
Ich habe die Port wie folgt umgelegt:
80 è 35180
443 è 35143
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
An dieser Stelle vergewissert euch bitte, das auch die vertrauenswürdigen Domains enthalten sind (siehe gerade eben beschrieben).
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.
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 😊 )
!!! 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
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"
und dort auf Add new Proxy Host
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
Dann speichert ihre diese, wartet ein paar Minuten und nun sollte eure Nextloud aus dem Netz erreichbar sein!
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 😊
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?!