Guacamole als HTTPS via nginx Docker Image

Status
Für weitere Antworten geschlossen.

Crash1601

Benutzer
Mitglied seit
27. Jan 2009
Beiträge
346
Punkte für Reaktionen
12
Punkte
24
Hallo alle zusammen,

ich bastel zurzeit an einer Guacamole Lösung und habe bereits folgendes konfiguriert:

Die beiden Container sind konfiguriert:

guacamole.JPG

MySQL DB (MariaDB10) ist eingerichtet

Zwei-Faktor-Authentisierung mit der DUO extension ist eingerichtet und funktioniert

Stand jetzt: Guacamole (aktuellste Version mit jdbc 1.0.0) läuft und ich kann via RDP und VNC auf meine Maschinen zugreifen.

Was noch fehlt: Die Verschlüsselung der Verbindung via HTTPS - default läuft guacamole nur als HTTP.

An diesem Kapitel arbeite ich gerade und peil nicht so ganz was genau ich nun tuen muss: http://guacamole.apache.org/doc/gug/proxying-guacamole.html

Bzgl. des HTTPS haben ich bisher nur das nginx Image heruntergeladen.

Da ich mir nicht ganz sicher bin welche Schritte ich nun wirklich machen muss, wollte ich mal Fragen, ob das hier schon mal einer gemacht hat und mir auf die Sprünge helfe kann :)

Btw: Das ganze wird auf einer DS412+ mit DSM 6.2.2.24922 ausgeführt.

Vielen Dank!

Mfg Crash1601
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Der einfachste Weg ist die TLS-Terminierung durch DSM machen zu lassen: Systemsteuerung -> Anwendungsportal -> Reiter "Reverse Proxy" -> Button erstellen.

Wichtig: wenn ein von DSM erzeugtes Letsencryp-Zertifikat für die Quelle verwendet werden soll, dann muss dieses in der Systemsteuerung unter "Sicherheit" -> "Zertifikat" -> Button "Konfigurieren" der Quell-Domain zugwiesen werden.

Etwas komplexer: einen Traefik-Container mit MACVLAN Netwerk und IP aus dem eigenen LAN anlegen und die TLS-Terminierung dort durchführen.

Ich finde die Usability von Guacamole etwas bescheiden. Ich finde Mobaxterm mit Zugriff über einen SSH-Jumphost besser benutzbar.
 

Crash1601

Benutzer
Mitglied seit
27. Jan 2009
Beiträge
346
Punkte für Reaktionen
12
Punkte
24
Danke für deinen Hinweis!

Ich finde die Lösung mit dem Reverse Proxy gut, scheitere aber an einem Punkt. HTTPS mit Port 8443 leite ich auf http://192.168.178.20:8080 um. Aber eigentlich müsste so aussehen: http://192.168.178.20:8080/guacamole/#/

Wie bekomme ich denn das Problem mit dem Einstiegspunkt gelöst? :-/ Mit der jetzigen Proxy Config würde ich am Apache landen.

Danke im Voraus!

Mfg
Crash1601
 
Zuletzt bearbeitet von einem Moderator:

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Das Ziel kannst du beim Hostnamen "localhost" und beim Port den {host-port-vom-mapping} setzen. Der LB im DSM unterscheidet nur auf Domain/Subdomain-Ebene und Port-Ebene. Die Kontext-Pfade haben keinen Einfluss auf die Weiterleitung - sie werden bei der Weiterleitung an das definierte Ziel unverändert übernommen. Für Kontextpfad-basierte Weiterleitung muss man unter der Haube "Hand anlegen".

Songt gibt es hier eine Anlatung auf Englisch: https://www.synoforum.com/resources/synology-reverse-proxy.12/
 
Zuletzt bearbeitet:

82041

Benutzer
Mitglied seit
14. Feb 2014
Beiträge
5
Punkte für Reaktionen
1
Punkte
3
Hi haydibe,

nach einer Lösung für Guacamole über HTTPS habe ich schon eine Weile gesucht. Funktioniert und passt perfekt, Danke.

Gruß
82041
 

Crash1601

Benutzer
Mitglied seit
27. Jan 2009
Beiträge
346
Punkte für Reaktionen
12
Punkte
24
Hi,

vll. kannst DU noch deine ausgewählte Lösung nennen und ein wenig beschreiben wie du das umgesetzt hast. so können andere und auch davon profitieren. Danke!

Mfg
Crash1601
 
Zuletzt bearbeitet von einem Moderator:

Crash1601

Benutzer
Mitglied seit
27. Jan 2009
Beiträge
346
Punkte für Reaktionen
12
Punkte
24
Das Ziel kannst du beim Hostnamen "localhost" und beim Port den {host-port-vom-mapping} setzen. Der LB im DSM unterscheidet nur auf Domain/Subdomain-Ebene und Port-Ebene. Die Kontext-Pfade haben keinen Einfluss auf die Weiterleitung - sie werden bei der Weiterleitung an das definierte Ziel unverändert übernommen. Für Kontextpfad-basierte Weiterleitung muss man unter der Haube "Hand anlegen".

Songt gibt es hier eine Anlatung auf Englisch: https://www.synoforum.com/resources/synology-reverse-proxy.12/

alles klar, danke! werde in der Richtung weiter basteln.

Btw: Es ist doch richtig das ich nur auf der Reverse Proxy seite von der DS das Lets Crypt Zertifikat auswählen muss, oder muss ich bzgl. des Zertifikats auch noch am Zielsystem machen? :confused:

Danke!

Mfg
Crash1601
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
So wie ich es geschreiben habe: erst die Reverse-Proxy-Regel anlegen, danach das Letsencrypt Zertifkat der Quelldomain zuordnen.
Weder bei der Reverse-Proxy-Regel selbst, noch im Container muss irgendetwas dafür getan werden.
 

Crash1601

Benutzer
Mitglied seit
27. Jan 2009
Beiträge
346
Punkte für Reaktionen
12
Punkte
24
Das Ziel kannst du beim Hostnamen "localhost" und beim Port den {host-port-vom-mapping} setzen. Der LB im DSM unterscheidet nur auf Domain/Subdomain-Ebene und Port-Ebene. Die Kontext-Pfade haben keinen Einfluss auf die Weiterleitung - sie werden bei der Weiterleitung an das definierte Ziel unverändert übernommen. Für Kontextpfad-basierte Weiterleitung muss man unter der Haube "Hand anlegen".

Songt gibt es hier eine Anlatung auf Englisch: https://www.synoforum.com/resources/synology-reverse-proxy.12/

Wo unter der Haube müsste Hand angelegt werden? :-/ In der Anleitung steht dass Subfolders nicht unterstützt werden.
 

Crash1601

Benutzer
Mitglied seit
27. Jan 2009
Beiträge
346
Punkte für Reaktionen
12
Punkte
24
So wie ich es geschreiben habe: erst die Reverse-Proxy-Regel anlegen, danach das Letsencrypt Zertifkat der Quelldomain zuordnen.
Weder bei der Reverse-Proxy-Regel selbst, noch im Container muss irgendetwas dafür getan werden.

Okay gut- danke, dann müsste das ja so passen (zumindest was das Zertifikat angeht). Ich wollte nur noch mal fragen, bevor ich an der Stelle nach einem möglichen Fehler suche :)
 

MasterofChaos

Benutzer
Mitglied seit
04. Okt 2013
Beiträge
60
Punkte für Reaktionen
2
Punkte
8
Hi, ich habe auf dem selben Weg versucht ein https Verbindung mit dem Home Assistant einzurichten. Allerdings passt irgendetwas nocht nicht. Folgendes habe ich gemacht:
1. Revers Proxy eingerichtet
1a. Name vergeben
1b. Quelle Protokoll https:
1c. hostname: Name des Dockercontainer --> homeassistant.diskstation.me
1d. Port 8123
1e. Ziel Protokoll https:
1f. hostname: localhost
1g. Port 8123
1h. jetzt abspeichern (der container muss dazu gestoppt sein)

2. Dann noch auf den nächsten Reiter: Benutzerfdefinierter Headder erstelle: Websocket.

3. Unter meinem SSL Zertifikat für die DS nachgeschaut, dort war der Reverse Proxy schon eingetragen.

Wenn ich jetzt versuche darauf zuzugreifen bekomme ich immer die Meldung:
400 Bad Request - Request Header Or Cookie Too Large - nginx

Was habe ich falsch gemacht?
 
Zuletzt bearbeitet:

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Dein Post ist irritierend... vieles passt nicht zusammen.

Schritt 1.: "Reverse Proxy eingerichtet" ist unscharf, da es viele Wege gibt.. Wo/Wie genau?
Schritt 1e.: Warum denn nach hinten raus auch https? Ist ein Zeritifkat für https eingebunden in dem Container?
Schritt 1b und 1f.: Quell-Port und Ziel-Port dürfen bei Container auf der DS nicht gleich sein, da das DS-Docker IMMER den Port auf allen Interfaces bindet.
Schritt 1h: Der Text in Klammen bei 1h ist absolut überflüssig.

Und zu guter Letzt: es wird mit keinem Wort das verwendete Image und Tag erwähnt. Das verhindert erfolgreich das jemand das Problem nachstellen kann.

Desto präziser Du bist, desto eher versteht jemand Dein Problem und kann dir helfen. Und wenn man nicht weiss was relevant ist: Bild von allen durchgeführten Schritten ist EXTREM hilfreich zum beurteilten der Situation..
 
Zuletzt bearbeitet:

MasterofChaos

Benutzer
Mitglied seit
04. Okt 2013
Beiträge
60
Punkte für Reaktionen
2
Punkte
8
Hallo zusammen,

dann versuche ich es nochmal besser zu machen:
Ich möchte ein Smarthome aufbauen, dazu möchte ich Home Assistant (HassIO) als Docker Container verwenden. Dieser ist installiert und auf http Basis erreichbar und konfiguriert. Allerdings möchte ich ihn auch über das Internet erreichbar machen, allerdings nur über eine https Verbindung.
Mit einem reverse Proxy auf meiner DS wollte ich das realisieren:

1. Den Reverse Proxy unter --> Systemsteuerung --> Anwendungsportal --> Karteikarte "Reverse Proxy"
1a. Name vergeben hier "homeassistant"
1b. Quelle Protokoll https:
1c. hostname: Name des Dockercontainer --> homeassistant.diskstation.me
1d. Port 8123 --> alternativ Port 443 angewendet
1e. Ziel Protokoll https: --> alternativ http eingestellt
1f. hostname: localhost
1g. Port 8123
1h. jetzt abgespeichert

2. Dann noch auf den nächsten Reiter: Benutzerfdefinierter Headder erstelle: Websocket.

3. Unter meinem SSL Zertifikat für die DS nachgeschaut, dort ist der Reverse Proxy eingetragen.

Wenn ich jetzt versuche darauf zuzugreifen bekomme ich immer die Meldung:
Es tut uns Leid, die von Ihnen gesuchte Seite konnte nicht gefunden werden.

Was habe ich falsch gemacht? Wo zeige ich auf die falsche Stelle?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Desto präziser Du bist, desto eher versteht jemand Dein Problem und kann dir helfen. Und wenn man nicht weiss was relevant ist: Bild von allen durchgeführten Schritten ist EXTREM hilfreich zum beurteilten der Situation..

Einstellung Portforwading? Einstellungen des Containers? Zugriffs URL? homeassistant.diskstation.me ist registriert und zeigt auf den Router oder direkt auf das NAS?
 
Zuletzt bearbeitet:

MasterofChaos

Benutzer
Mitglied seit
04. Okt 2013
Beiträge
60
Punkte für Reaktionen
2
Punkte
8
;) mehr geht immer...
Portforwarding an der Firewall in der Fritzbox wie auch der DS ist für beide Ports (443, 8123) eingerichtet. Beim Container verwende ich die gleichen Porteinstellungen wie der Host, somit sagt mir das System, dass ich keine Porteinstellngen vornehmen muss/kann.
diskstation.me ist registriert über DynDNS und funktioniert bspw. bei der Photostation. Die Adresse zeigt direkt auf die DS.

Muss ich die Subdomain auch registrieren?

vg und vielen Dank für die hilfreichen Fragen :) dadurch lerne ich immer mehr!
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Portforwading von der FB zum NAS auf Port 443 passt doch schon mal. Dann muss die Regel für die Quelle beim Reverse Proxy zeigt auf die
;Beim Container verwende ich die gleichen Porteinstellungen wie der Host, somit sagt mir das System, dass ich keine Porteinstellngen vornehmen muss/kann
Was heisst das?

Ich habe keine Ahnung von diskstation.me oder irgendewelchen DynDNS Anbietern. ich bin Selbsversorger *hüstel* mit eigener Domain und eingenem DynDns Service, nur das bei mir eine Wildcard-Domain auf meine aktuelle WAN-IP zeigt.Ping doch mal homeassistant.diskstation.me und vergleich das mit Deiner WAN IP.
 

MasterofChaos

Benutzer
Mitglied seit
04. Okt 2013
Beiträge
60
Punkte für Reaktionen
2
Punkte
8
Hier nochmal die reverse Proxy Einstellungen: 2Unbenannt.JPG
Hier nochmal der original Text im Container: Unbenannt.JPG - ich verstehe es so, dass wenn ich auf Docker zeige, ich damit auch auf den Container zeige.

Naja, diskstation.me plus ein Kürzel ist über Synology registrierbar, somit musste ich keine Domain mieten.

Wenn ich wieder zuhause bin, werde ich das mit dem anpingen mal probieren.
 

Anhänge

  • 2Unbenannt.JPG
    2Unbenannt.JPG
    59,3 KB · Aufrufe: 16
  • Unbenannt.JPG
    Unbenannt.JPG
    19,7 KB · Aufrufe: 15
Zuletzt bearbeitet:

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Das Bild zu "Port-Einstellungen" erklärt einiges: Der Container läuft im Modus network=host, sprich alle Ports des Container werden DIREKT auf der Netzwerkkarte der Syno gebunden - klar braucht man dann kein Portmapping mehr.

Damit ist die Kette "FB -> Portforwarding auf DS:443 -> Reverseproxy von DS:443 für homeassistent.diskstation.me auf localhost:8124" vollständig.

Was jetzt noch Probleme Verursachen könnte ist:
- keine ipv4 WAN-IP?
- Domainname löst nicht auf die WAN IP auf?
- keine letsencrypt Zerifikat für die Domain vorhanden bzw. dem Reverse-Proxy nicht zugewiesen?
- der Prozess im Container horch vielleicht doch nicht auf Port 8124?


Zum Troubleshooten würde ich empfehlen HSTS auszuschalten. Ein Bild des Reiteres "Benutzerdefinierte Header" könnte evtl. noch hilfrech sein.
Für den Zugriff muss natürlich https://homeassistent.diskstation.me verwendet werden. Der Syno Hostname oder die IP können nicht gehen, da sonst die ReveryProxy-Regel des Domainnamen nicht greift.

Check mal https://www.canyouseeme.org/ mit Port 443.
 

MasterofChaos

Benutzer
Mitglied seit
04. Okt 2013
Beiträge
60
Punkte für Reaktionen
2
Punkte
8
Danke für die vielen konstruktiven Frage, hier meine Anworten:
1. Es ist als ipv4 angegeben
2.wie finde heraus ob er die ip auflösen kann? - Photostation etc. findet https://meine.diskstion.me
3. Anbei ein Bild des Zertifikats certificate.JPG
4. Ich erreiche den Docker Container aus dem Heimnetz unter 192.xxx.xxx.xxx:8124
Canyouseeme findet auch port 443
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Zu1) Ich hoffe mit "es ist als ipv4 angegeben" meinst du die WAN-Verbindung in der der Fritzbox. Dann passt das.
Zu 2) nslookup homeassitant.disksation.me ausführen (wahlweise auch mit ping). Kann man direkt auf der Syno Shell mit SSH machen, oder unter Windows mit cmd.
zu 3) das ist schon mal das Zertifikat, das ist gut. Was ist mit der Zuordnung vom Zertifikate zur Domain?
zu 4) Endlich mal jemand der es auch "Docker Container" nennt und nicht "den Docker" (y). Mit der Abfrage bei Canyouseeme ist klar, dass etwas auf Port 443 horcht. Passt auch soweit.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat