From c5b66b466a65b230275d260dc1c1914cdcfca28a Mon Sep 17 00:00:00 2001 From: D4rkst3r Date: Tue, 11 Aug 2026 14:37:14 +0200 Subject: [PATCH] fix: an alle Adressen binden, sonst erreicht NPM die Dienste nicht MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ich hatte die Ports an 127.0.0.1 gebunden — enger und auf den ersten Blick richtiger. Nur erreicht host.docker.internal das auf diesem Server nicht: die Anfrage kommt aus dem NPM-Container ueber die Docker-Bruecke herein, nicht ueber Loopback, und ein an 127.0.0.1 gebundener Port nimmt sie nicht an. Der Beleg stand die ganze Zeit in der Containerliste: d4rkbot (3080), cdn-files (8090) und portainer sind alle ohne 127.0.0.1-Praefix veroeffentlicht, und NPM erreicht sie. So laeuft es hier, also laeuft es so. Damit macht die FIREWALL den Port zu und nicht die Bindung — das steht jetzt ausdruecklich in beiden Dateien, mitsamt den Befehlen zum Nachsehen. Wer weiss, dass Loopback bei ihm erreicht wird, setzt BIND_ADDR=127.0.0.1. Co-Authored-By: Claude Opus 5 --- README.md | 12 +++++++++--- docker-compose.hostports.yml | 30 +++++++++++++++++++++--------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 66a6049..9ac71ca 100644 --- a/README.md +++ b/README.md @@ -88,9 +88,15 @@ nextcloud-aio). Im Container bleibt es bei 9000 und 8080; nur die Seite zum Host wandert. Kollidiert später noch etwas, sind es zwei Variablen: `MINIO_HOST_PORT` und `LITE_HOST_PORT`. -Die Ports sind an `127.0.0.1` gebunden, also vom Internet aus zu. Ob -`host.docker.internal` das erreicht, hängt an der Docker-Fassung — in -`docker-compose.hostports.yml` steht, was dann zu tun ist. +Die Ports sind an **alle Adressen** gebunden, weil `host.docker.internal` auf +diesem Server über die Docker-Brücke kommt und ein `127.0.0.1`-Port die +Anfrage nicht annähme — dieselbe Bindung, mit der `d4rkbot` und `cdn-files` +schon laufen. + +**Damit macht die Firewall den Port zu, nicht die Bindung.** 9100 und 9101 +gehören von außen dicht; öffentlich erreichbar soll nur NPM auf 80 und 443 +sein. Wer weiß, dass Loopback bei ihm erreicht wird, setzt +`BIND_ADDR=127.0.0.1`. --- diff --git a/docker-compose.hostports.yml b/docker-compose.hostports.yml index 3eeb29e..d0a84ba 100644 --- a/docker-compose.hostports.yml +++ b/docker-compose.hostports.yml @@ -28,20 +28,32 @@ # Belegt waren beim Anlegen: 80, 81, 443, 2224, 3000, 3080, 3478, 8000, 8080, # 8090, 8443, 9000, 9443, 11000. # -# GEBUNDEN AN 127.0.0.1, nicht an alle Adressen. Damit ist der Port vom -# Internet aus zu, und nur der Host — und damit NPM — kommt heran. +# GEBUNDEN AN ALLE ADRESSEN, und das ist hier kein Versehen. # -# Ein Vorbehalt: ob `host.docker.internal` eine Bindung an 127.0.0.1 erreicht, -# haengt an der Docker-Fassung. Unter Linux fuehrt der Weg ueber die -# Docker-Bruecke statt ueber Loopback; dann muss die Bindung 0.0.0.0 lauten und -# die FIREWALL den Port zumachen. Bei d4rkbot auf 3080 funktioniert es — wie es -# dort gebunden ist, sagt `docker port d4rkbot`. +# Zuerst stand hier 127.0.0.1 — enger und auf den ersten Blick richtiger. Nur +# erreicht `host.docker.internal` das auf diesem Server nicht: die Anfrage +# kommt aus dem NPM-Container ueber die Docker-Bruecke herein, nicht ueber +# Loopback, und ein an 127.0.0.1 gebundener Port nimmt sie nicht an. +# +# Der Beleg steht in der Containerliste: d4rkbot (3080), cdn-files (8090) und +# portainer sind alle ohne 127.0.0.1-Praefix veroeffentlicht, und NPM erreicht +# sie. So laeuft es hier, also laeuft es so. +# +# WAS DEN PORT DAMIT ZUMACHT, IST DIE FIREWALL, nicht die Bindung. 9100 und +# 9101 gehoeren von aussen dicht — oeffentlich erreichbar soll nur NPM auf 80 +# und 443 sein. Pruefen: +# +# ufw status bzw. was auf diesem Server zustaendig ist +# ss -tlnp | grep -E '9100|9101' +# +# Wer es enger haben will und weiss, dass Loopback bei ihm erreicht wird: +# BIND_ADDR=127.0.0.1 services: minio: ports: - - "127.0.0.1:${MINIO_HOST_PORT:-9100}:9000" + - "${BIND_ADDR:-0.0.0.0}:${MINIO_HOST_PORT:-9100}:9000" lite: ports: - - "127.0.0.1:${LITE_HOST_PORT:-9101}:8080" + - "${BIND_ADDR:-0.0.0.0}:${LITE_HOST_PORT:-9101}:8080"