Am 2018-06-26 10:04, schrieb William Epler:
2018-06-25 23:04 GMT+02:00 Heiko Schlittermann hs@schlittermann.de:
Hallo Stefan,
Stefan Majewsky majewsky@posteo.de (Mo 25 Jun 2018 22:21:46 CEST):
Was hab ich vergessen bzw. falsch gemacht? Hat jemand einen Tipp für mich?
PostgreSQL spricht kein HTTP, sondern ein eigenes Protokoll. Dieses kann nicht von einem HTTP-Server wie Apache geproxyt werden.
Richtig.
Für IPv6 ist die Lösung einfach: Dafür sorgen, daß ICMP6 und 5432/tcp vom Docker-Host durchgelassen werden. Der Docker hat wie jede Gerätschaft seine eigene Adresse und muß selbige nicht per NAT umlügen.
Für IPv4 wirst Du an NAT auf dem Docker-Host nicht vorbeikommen. Eine sehr gute Einführung dazu ist auf https://www.karlrupp.net/de/computer/nat_tutorial zu finden.
Bevor Du den PostgreSQL aber in irgendeiner Weise im weltweiten Verbindungsnetz zugänglich machst, solltest Du ihn dringends mit SSL abgesichert haben - siehe https://www.postgresql.org/docs/current/static/ssl-tcp.html
Vielen Dank für alle Antworten. Dass der Apache tatsächlich nur HTTP versteht und andere TCP-Verbindungen nicht einfach so durchproxied, macht natürlich Sinn. Das war mir gestern noch nicht so bewusst. Die TLS-Einstellungen hab ich von anderen Projekten kopiert, die aber alle nur Webkram sind, also HTTP sprechen.
Inzwischen haben auch noch andere Umstände dafür gesorgt, dass ich das lieber ganz anders mache: Postgres und pgadmin4 aus einem Compose-File heraus auf der gleichen Kiste starten. Nachteil: für jeden Datenbank-Server, die nach dem Compose-File gebaut wird, ein eigenes pgadmin4 Vorteil: keine offenen Datenbankverbindungen über verschiedene Rechner hinweg, sondern nur im jeweiligen Docker-Network
Danke und Gruß Marc