Synology / Docker / Reverse Proxy

Phil1978

Cadet 3rd Year
Registriert
Juli 2015
Beiträge
48
Hallo allerseits,

hoffe hier weiss wer Bescheid wie der Hase laufen sollte.

Ich hab eine Webanwendung in Docker, die ist auch schön via Reverse Proxy mit eigener sub domain verfügbar. Allerdings nur wenn ich auf die interne IP und echten Port zeige. Was ich seltsam/schwierig finde (kann sich die interne IP ändern?)

Etwas konkreter: Mein NAS läuft auf 192.168.0.222. DSM 7.1.1

In Docker in Port Settings für die Anwendung biege ich Local Port 48888 auf Container Port 8000 um.

1666959933065.png


Die Web Anwendung kann ich nun im LAN aufrufen mit http://192.168.0.222:48888. Damit ich die Anwendung mit https mit eigener Domain (Lets Encrypt) und auch von extern nutzen kann hab ich dann Reverse Proxy Eintrag gemacht mit Destination 192.168.0.222 und Port 48888. Funktioniert aber nicht in den nginx logs sehe ich timeout.

Reverse Proxy funktioniert wenn ich als Destination 172.18.0.4 mit Port 8000. Die IP, 172.18.0.4, musste ich mir via Terminal vom laufenden Container holen.

1666958967213.png


Die IP vergibt ja der Docker Prozess? Bleibt die Fix? Kann diese sich ändern? Jedes mal von Hand Reverse Proxy Eintrag anpassen kann nicht Best Practice sein.

Was mach ich falsch? Wie macht man das richtig? Sodass ich zum einen die IP nicht erst im laufenden Container ermitteln muss (oder via docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id) und dazu sich die IP ändern kann, wie sie will und es weiterhin funktionieren wird.

Besten Dank für euren Input!
 
Lösung
Du kannst im Reverse Proxy von DSM, was am Ende auch nur ein nginx ist, als Ziel einfach localhost setzen ;)
Dein paperless-ngx ist ja unter ip.von.der.synology:48888 erreichbar, der Reverse Proxy läuft auf der Synology und solange du den exposed port nicht änderst, ist es egal wie der Container heißt oder welche Docker-interne IP der Container bekommt.
Reverse Proxy Eintrag hab ich versucht mit destination "container-name" anzulegen aber funktioniert nicht (klappt denke ich nur für Sachen die auch in Docker laufen)
 
Zuletzt bearbeitet:
Du kannst im Reverse Proxy von DSM, was am Ende auch nur ein nginx ist, als Ziel einfach localhost setzen ;)
Dein paperless-ngx ist ja unter ip.von.der.synology:48888 erreichbar, der Reverse Proxy läuft auf der Synology und solange du den exposed port nicht änderst, ist es egal wie der Container heißt oder welche Docker-interne IP der Container bekommt.
 
  • Gefällt mir
Reaktionen: Phil1978
Du kannst anstatt localhost auch 127.0.0.1 eintragen, ist ja auch vom NAS aus gesehen die IP des NAS aber wenn du natürlich eine andere IP einträgst, dann würde der Reverse Proxy eine Anfrage bekommen, will die weiter leiten, die geht bis zur NIC des NAS, macht da eine 180° Wende und will zurück. Das wird auch NAT Loopback genannt und eigentlich will man so etwas vermeiden.
 
localhost / 127.0.0.1 ist doch das gleiche? Fuer mich zum Mitschrieben ich muss ein Port Mapping machen, damit ich die Webanwendung via Reverse Proxy erreichen kann ohne auf die interne Docker IP zu gehen. Kann ich erzwingen, dass port nur auf localhost/127.0.0.1 gebunden wird? Sodass Zugriff direkt via 192.168.0.222:48888 (mapped port) nicht mehr funktioniert? Sonst bleibt nur binden und mit Firewall dann doch verbieten :-) Gruesse!
 
Phil1978 schrieb:
localhost / 127.0.0.1 ist doch das gleiche?
Jain. Localhost ist ein Hostname, der auf 12.0.0.1 zeigt. Es ist nicht exakt das Gleiche auch wenn es am Ende auf das selbe hinaus läuft.

Phil1978 schrieb:
Kann ich erzwingen, dass port nur auf localhost/127.0.0.1 gebunden wird? Sodass Zugriff direkt via 192.168.0.222:48888 (mapped port) nicht mehr funktioniert?
Ja, das funktioniert mit Docker problemlos.
Nein, ich weiß nicht wie das mit Synology funktioniert und ob es dort diese Möglichkeit gibt oder ob man dies extra nicht anbietet/ermöglicht um zu verhindern, dass $Anwender ihre containerisierten Anwendungen nur lokal auf der Synology verfügbar machen und dann den Support mit Anfragen fluten^^
 
Zurück
Oben