fix: an alle Adressen binden, sonst erreicht NPM die Dienste nicht

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 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 14:37:14 +02:00
co-authored by Claude Opus 5
parent d0f173d67d
commit c5b66b466a
2 changed files with 30 additions and 12 deletions
+9 -3
View File
@@ -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: Host wandert. Kollidiert später noch etwas, sind es zwei Variablen:
`MINIO_HOST_PORT` und `LITE_HOST_PORT`. `MINIO_HOST_PORT` und `LITE_HOST_PORT`.
Die Ports sind an `127.0.0.1` gebunden, also vom Internet aus zu. Ob Die Ports sind an **alle Adressen** gebunden, weil `host.docker.internal` auf
`host.docker.internal` das erreicht, hängt an der Docker-Fassung — in diesem Server über die Docker-Brücke kommt und ein `127.0.0.1`-Port die
`docker-compose.hostports.yml` steht, was dann zu tun ist. 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`.
--- ---
+21 -9
View File
@@ -28,20 +28,32 @@
# Belegt waren beim Anlegen: 80, 81, 443, 2224, 3000, 3080, 3478, 8000, 8080, # Belegt waren beim Anlegen: 80, 81, 443, 2224, 3000, 3080, 3478, 8000, 8080,
# 8090, 8443, 9000, 9443, 11000. # 8090, 8443, 9000, 9443, 11000.
# #
# GEBUNDEN AN 127.0.0.1, nicht an alle Adressen. Damit ist der Port vom # GEBUNDEN AN ALLE ADRESSEN, und das ist hier kein Versehen.
# Internet aus zu, und nur der Host — und damit NPM — kommt heran.
# #
# Ein Vorbehalt: ob `host.docker.internal` eine Bindung an 127.0.0.1 erreicht, # Zuerst stand hier 127.0.0.1 — enger und auf den ersten Blick richtiger. Nur
# haengt an der Docker-Fassung. Unter Linux fuehrt der Weg ueber die # erreicht `host.docker.internal` das auf diesem Server nicht: die Anfrage
# Docker-Bruecke statt ueber Loopback; dann muss die Bindung 0.0.0.0 lauten und # kommt aus dem NPM-Container ueber die Docker-Bruecke herein, nicht ueber
# die FIREWALL den Port zumachen. Bei d4rkbot auf 3080 funktioniert es — wie es # Loopback, und ein an 127.0.0.1 gebundener Port nimmt sie nicht an.
# dort gebunden ist, sagt `docker port d4rkbot`. #
# 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: services:
minio: minio:
ports: ports:
- "127.0.0.1:${MINIO_HOST_PORT:-9100}:9000" - "${BIND_ADDR:-0.0.0.0}:${MINIO_HOST_PORT:-9100}:9000"
lite: lite:
ports: ports:
- "127.0.0.1:${LITE_HOST_PORT:-9101}:8080" - "${BIND_ADDR:-0.0.0.0}:${LITE_HOST_PORT:-9101}:8080"