Mini-Tutorial / How to: Reverse Proxy unter Unraid

  • Hier mal eine "kurze" Anleitung, wie ich unter Unraid einen Reverse Proxy einrichten konnte, mit dem ich Zugriff auf versch. Dienste (Emby, Airsonic, nextcloud, …) des Servers, sowie die Unraid-GUI bzw. das Web-Interface habe.

    Die Anleitung basiert auf dem englischsprachigen Tutorial von cyanlabs . Mit diesem war aber kein Zugriff auf die GUI möglich, zudem funktioniert das so wie dort beschrieben in der Form mit dem aktuellen Let’s Encrypt Docker-Container nicht mehr. Somit habe ich die Anleitung an einigen Stellen abgewandelt …

    1. Bei duckdns.org registrieren

      • Servernamen aussuchen
      • Token aufschreiben / speichern
    2. duckdns-Docker über die Community Applications auf unraid installieren

    3. Firewall / Router konfigurieren

      • Port-Forwarding:
        Port 443 > Port 443 der IP des Servers, TCP genügt
        Port 80 > Port 81 der IP des Servers, TCP genügt
    4. Let’s Encrypt-Docker über die Community Applications (Apps) auf Unraid installieren

      • Apps > letsencrypt suchen
      • Installieren (Docker-Einstellungen siehe Screenshot)
        https://www.kodinerds.net/index.php/Atta…t-settings-jpg/


        • ERKLÄRUNG:

          • Domain Name:
            Der Name des Servers bzw. der Adresse, die bei duckdns registriert wurde.
            Code
            [namedesservers].duckdns.org

            (in die eckigen Klammern natürlich der Name - ohne eckige Klammern)

          • Subdomain(s):
            Unter diesen Subdomains wird der Server ebenfalls erreichbar sein. Für die GUI könnte man dort z.B. "GUI" eingeben, der Server wäre dann unter "GUI.namedesservers.duckdns.org" erreichbar. Wichtig z.B. auch für eine sicherheitskonforme Installation von nextcloud. Daher hier auch "nextcloud" als Subdomain eingeben, so dass der Dienst unter "nextcloud.namedesservers.duckdns.org" erreichbar ist.

            Beispiel für Eintrag:

            Code
            GUI,nextcloud

            (ACHTUNG: KEIN Komma zwischen Subdomains!!!)

          • Advanced Settings / HTTPVAL:
            auf „true“ setzen (ohne Anführungszeichen), sonst klappt die Generierung der Keys für die Verschlüsselung nicht und das Letsencrypt-Docker wird nach der Installation mit Fehler (siehe [definition='1','0']log[/definition]) beendet!


    5. (nginx) Config anpassen

    • Datei speichern als "default" und darauf achten, dass KEINE Endung wie .txt oder ähnliches gespeichert wird!
    • Datei mit folgenden Rechten versehen: -rw-rw-r-- (664)
    • letsencrypt Docker neu starten

    GUI:
    Mit der gespeicherten config (also "default") sollte die GUI nun erreichbar sein unter:
    https://[erstesubdomainderconfig].[namedesservers].duckdns.org.

    DIENSTE:

    • https://[nextcloud].[namedesservers].duckdns.org für nextcloud (falls diese zuvor installiert wurde)
    • Emby sollte zu erreichen sein unter: https://[namedesservers].http://duckdns.org/emby
    • Airsonic wäre in diesem Fall zu erreichen unter: https://[namedesservers].http://duckdns.org/airsonic

    ADD-ON:

    ACHTUNG:
    Ich konnte die Webseiten nur unter https://… aufrufen. http:// funktionierte nicht!


    Viel Erfolg und gutes Gelingen!


    -------------------------------------
    EDIT (wg Update auf Unraid 6.4)


    Mit dem Update auf Unraid 6.4 funktioniert obige Beschreibung nicht mehr, da das Web-GUI von 6.4 ein eigenes nginx-SSL mitbringt und sich somit zwei Verschlüsselungen auf dem selben Port in die Quere kommen. Es ist also wichtig, SSL/TLS in Unraid unter Settings auszuschalten UND den Port 443 in den Container-Einstellungen von lets encrypt auf 445 oder höher zu stellen. Im Anschluss nicht vergessen, auch die Portweiterleitung am Router gemäß dieses Ports zu aktualisieren.

    • Unraid GUI: Settings > Identification > SSL Certificate Settings > Use SSL/TLS: No > apply
    • Docker > letsencrpyt > Edit > https: > 446 oder höher > apply
    • Router > Portweiterleitung > IP.Adresse.des.Servers > Quellport: 443 > Zielport: der im letsencrypt docker-container eingestellt ist (446 oder höher) > TCP > speichern
    • Falls noch nicht geschehen: Router > Portweiterleitung > IP.Adresse.des.Servers > Quellport: 80 > Zielport: der im letsencrypt docker-container eingestellt ist (hier im Beispiel wäre das 81) > TCP > speichern
    • neustart letsencrypt docker

    Et voilà - funktioniert wieder!

    24 Mal editiert, zuletzt von hi2hello (20. April 2020 um 15:24) aus folgendem Grund: Update auf unraid 6.4

  • Advanced Settings / HTTPVAL:
    auf „true“ setzen (ohne Anführungszeichen), sonst klappt die Generierung der Keys für die Verschlüsselung nicht und das Letsencrypt-Docker wird nach der Installation mit Fehler beendet!

    Subdomains:
    Unter diesen Subdomains wird der Server ebenfalls erreichbar sein. Für die GUI könnte man dort z.B. "GUI" eingeben, der Server wäre dann unter "GUI.namedesservers.duckdns.org" erreichbar. Wichtig z.B. für eine sicherheitskonforme Installation von nextcloud. Daher hier auch nextcloud als Subdomain eingeben, so dass der Dienst unter "nextcloud.namedesservers.duckdns.org" erreichbar ist.

    Erst einmal vielen Dank!

    kannst du das näher erläutern? Hatte ich es richtig verstanden das du auch auf das unRaid Gui kommst mit Duckdns

    Ich habe z.b Meinserver.duckdns.net <-- greift auf mein Cloudcommander zu, http://Meinserver.duckdns.net/emby <-- greift auf das Emby ui zu und http://Meinserver.duckdns.net/plex....


    Wie gebe ich das mit den Subdomains an?

  • Erst einmal vielen Dank!
    kannst du das näher erläutern? Hatte ich es richtig verstanden das du auch auf das unRaid Gui kommst mit Duckdns

    Ich habe z.b Meinserver.duckdns.net <-- greift auf mein Cloudcommander zu, http://Meinserver.duckdns.net/emby <-- greift auf das Emby ui zu und http://Meinserver.duckdns.net/plex....


    Wie gebe ich das mit den Subdomains an?

    Ja, mit diesen Einstellungen kommt man mit duckdns auf die GUI / das Web-Interface von Unraid.

    Letztendlich ist das eine Frage des Routings (Proxy Pass) in der config und welche Subdomains zuvor in der Installation angegeben wurden. Soweit ich weiß, lässt sich die GUI nicht mit der direkten Serveradresse ansprechen (also namedesservers.duckdns.org) sondern benötigt eine Subdomain (jedenfalls habe ich es nur so hinbekommen). Ich greife also auf die GUI unter subdomain.namedesservers.duckdns zu.

    Im Gegensatz zu cyanlabs greife ich unter "Domain Name" direkt auf meine Serveradresse zu, nicht auf die Hauptdomain duckdns.org (was faktisch übrigens auch vollkommener Nonsens ist ;) )
    cyanlabs > duckdns.org
    ich > servername.duckdns.org

    Cyanlabs beschreibt den eigentlichen Servernamen unter Subdomain(s). Da ich das bereits im Domain-Namen habe, kann ich dort also wunderbar andere Subdomains angeben und dieses Feld somit für seinen eigentlichen Zweck nutzen.

    cyanlabs > servername.duckns.org
    ich > subdomain.servername.duckdns.org

    Zudem kann ich somit mehr als eine Subdomain vergeben. Rein theoretisch für jeden Dienst wenn ich das möchte.
    Bsp.: https://emby.servername.duckdns.org, https://airsonic.servername%e2%80%a6 usw.
    subdomain1,subdomain2,subdomain3, …

    Das bedeutet aber mehr Schreiberei in der config (die Keys müssen jeder Subbomain zugewiesen werden), zudem kann man diese Dienste auch prima als directories aufrufen:
    https://servername.duckdns.org/namedesdienstes

    Für die GUI geht das aber wie gesagt nur über eine Subdomain und bei owncloud / nextcloud empfiehlt es sich aus Sicherheitsgründen, diese Dienste über eine Subdomain laufen zu lassen und nicht über ein Verzeichnis.

    cyanlabs setzt im Tutorial die Einstellung bei "Only Subdomains" auf true. Das benötigen wir im Falle meiner Einstellung nicht, da wir für alle Domains, also Haupt- UND Subdomains keys haben wollen, die uns Zugriff ermöglichen.

  • Noch eine Erklärung zu

    Advanced Settings / HTTPVAL:
    auf „true“ setzen (ohne Anführungszeichen), sonst klappt die Generierung der Keys für die Verschlüsselung nicht und das Letsencrypt-Docker wird nach der Installation mit Fehler beendet!

    In der ersten Installation hatte ich das auf false und es hat prima funktioniert. Seit dem heutigen Update kann letsencrypt wegen eines Fehlers so aber wohl keine Keys mehr validieren. Es ist wahrscheinlich, dass dies eine temporär benötigte Einstellung für den Docker-Container ist und mit einem der kommenden Updates wieder "normal", also ohne http-validierung funktioniert.

    Kommentar des Entwicklers im Support-Forum zu diesem Thema
    Kurze Erklärung, was bei letsencrypt passiert ist, das diese Einstellung nötig macht

  • Nice vielen dank, das mit den subdomains wusste ich nicht, so müsste ich dann ja auch endlich collabora zum laufen bekommen

    Client: Nvidia Shield TV 2015 (16gb)
    Server/NAS: Intel Core i7 4790T *** Gigabyte GA-H97n-WiFi *** 16GB DDR3-1600 *** Nanoxia Deep Silence 3 *** 1x 4TB Parity | 4x 4TB | 1x 250GB SDD Cache *** unRAID 6.8.x

  • hast du das mit Port 445 gemacht? Der dürfte eigentlich nicht gehen der wird soweit ich das im Unraid Forum rausgelesen hab von Samba genutzt

    Client: Nvidia Shield TV 2015 (16gb)
    Server/NAS: Intel Core i7 4790T *** Gigabyte GA-H97n-WiFi *** 16GB DDR3-1600 *** Nanoxia Deep Silence 3 *** 1x 4TB Parity | 4x 4TB | 1x 250GB SDD Cache *** unRAID 6.8.x

  • hast du das mit Port 445 gemacht? Der dürfte eigentlich nicht gehen der wird soweit ich das im Unraid Forum rausgelesen hab von Samba genutzt

    Nein, ich habe bei mir einen anderen Port gewählt und 445 nicht ausprobiert. Ich habe das in der Beschreibung oben abgeändert auf "446 oder höher".

    Sorry für das Versehen und danke für den Hinweis!

  • Servus,

    nach dem ich jetzt 2 Tage verschissen habe in der Hoffnung "Traefik" am laufen zu kommen und dann doch aufzugeben habe ich nun jetzt auch Probleme mit meinen LetsEnycrpt Config, womöglich entdeckt jemand von Euch meinen Fehler - ich blick nicht mehr durch.

    Schon mal ein Danke-Vorab.

    LetsEncrypt Container


    LetsEncrypt Default-Config

    NextCloud Config.php


    NextCloud Default

    Vielen Dank.

  • Lass uns mal Schritt für Schritt vorgehen. Als allererstes also mal den Reverse Proxy. Um nextcloud etc. kann man sich im Anschluss kümmern.
    Zuerst mal ein paar Fragen
    - Welche Version von UnRaid nutzt Du?
    - Falls 6.4 und höher: Hast Du die neue https bzw. SSL-Funktionalität in UnRaid aktiviert?
    - Sind die entsprechenden Ports auf Deinem Router frei?
    Für mich sehen Deine configs nicht so aus, als ob Du die Anleitung hier befolgt hättest.
    -Hast Du?

  • Hallo,

    danke für die Rückmeldung.

    Bisher 6.4.1. habe es aber jetzt bereits ebenso in 6.5. probiert.
    Unraid Ports sind auf andere als 80/443 geändert.
    Ports - Ja. Mit Jwilders Nginx + LetsEncrypt funktioniert's (außer Nextcloud)
    Config habe ich meines wissens befolgt, jedoch nicht mit Duckdns, sondern eigener Domain und eben nur für 2 Docker-Container und nur als Subdomain Config.

  • - Versuch Mal Port 446, mit 443 macht der oben beschriebene Docker-Container von linux.io. Probleme. In der config 443 stehen lassen, aber im Router dann 446 öffnen und im den Docker-Container-Settings https von 443 auf 446.

    Deine config unterscheidet sich ziemlich von der oben gezeigten

    Code
    location = / {
    		return 301;
    	}
    	location / {
    		include /config/nginx/proxy.conf;
    		proxy_pass https://192.168.0.99:1317/;
    	}


    Was möchtest Du hier erreichen? Versuchst Du auf die webgui von unraid unter Port 1317 zuzugreifen? In Zeile 12 Deines Quellcodes ist kein Server angegeben. Absicht oder Namen hier zu Sicherhitszwecken im Forum gelöscht?

    Ich bin mir nicht sicher, glaube mich aber zu erinnern, dass der Zugriff auf die Unraid webgui über eine Hauptdomain so nicht möglich war. Ich musste eine Subdonain für einen solchen Zugang einrichten.

    Deine config sieht generell ziemlich anders aus, als die in obigem Beispiel. Eigentlich müsste sie so beginnen …


  • Okay.... Ich hatte wohl noch vom cyanlabs.net eine ältere Version. Habe nun die von hier nochmals 1:1 von vorne bearbeitet. Einzig die Zeile mit

    musste ich ebenfalls durch

    Code
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

    ersetzen.

    Weiters durfte ich nicht die NextCloud config ändern bis auf den weiteren trusted Domain.

    Nun funktioniert es. Danke für die Hints.

  • Moin, hat jemand lets Encrypted unter unRaid 6.5.1 am laufen?

    Irgendwie bekomme ich es nicht mehr hin!
    Port 80 & 443 sind weiter geleitet und httpval ist auf true gesetzt.

    Es lässt sich irgendwie kein Schlüssel laden da wenn ich mich recht erinnere gesagt wird das die Ports nicht weiter geleitet worden sind obwohl ich wenn ich DynDNS Adresse:80 eingebe ich auf das Webgui komme

    Ist meine Annahme richtig das mit der standard default Datei die Keys auch geladen werden?


    Vll. kann mir jemand ja ein wenig auf die Sprünge helfen?

  • Also prinzipiell klappt das auf jeden Fall ;)
    Wie kommst du denn darauf, dass es nicht klappt?
    Wenn du auf Port 80 zugreifen kannst, sollte ja auch schon der Webserver laufen und das ist soweit ich weiß erst dann der Fall, wenn letsencrypt schon die Zertifikate erstellt hat..
    kannst du mit https://<DynDNS Adresse> auf deine Verschlüsselte Seite?

  • Ich habe mal ein paar Screenshots gemacht um es evtl besser zu dokumentieren.

    Der Log sagt mir:

    Plugins selected: Authenticator standalone, Installer None
    Unable to register an account with ACME server
    ERROR: Cert does not exist! Please see the validation error above. The issue may be due to incorrect dns or port forwarding settings. Please fix your settings and recreate the container

    das default file kann ich gern auch noch anhängen

    Wenn im Log etwas rot oder Orange makiert ist weiß ich das etwas nicht läuft und von daher komme ich darauf

  • Hallo,
    erstmal herzlichen Dank für das Tutorial!
    Ich versuche es umzusetzen..

    Zitat

    ###SSL Ciphers

    Muss das bei jedem das selbe sein ?


    Was habe ich falsch geamacht?



    Domäne: strohhhalm.de
    Subdomänen: nextcloud.strohhhalm.de, mediawiki.strohhhalm.de, gui.strohhhalm.de
    Einzelheiten zu den Containern im Anhang
    Router leitet Port 443 auf 443 und Port 90 auf 81 weiter auf die Adresse 192.168.1.11

  • Die domain ist auch die richtige?
    Oder hast du die ersetzt/anonymisiert?
    Wenn ich einen DNS Lookup für alle deine Domains/Subdomains mache, bekomme ich keine Einträge..

    Habe mal nachgeguckt und die domain ist noch zu kaufen, also schätze ich mal, dass es nicht deine ist..

    Edit: Leitest du port 90 oder 80 weiter auf port 81?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!