diff --git a/README.md b/README.md index 71fccbd..b3588ad 100644 --- a/README.md +++ b/README.md @@ -42,10 +42,37 @@ Portainer kann einen Stack direkt aus diesem Repo ziehen: Die Werte gehören **in die Stack-Variablen**, nicht in eine Datei im Repo. `.env` steht deshalb in `.gitignore`. -Davor brauchst du auf dem Reverse Proxy, der schon `cdn.d4rkst3r.de` bedient: +### Wie der Reverse Proxy die Dienste erreicht -- `fivecdn.d4rkst3r.de` → `minio:9000` (die Dateien) -- eine zweite Adresse → `lite:8080` (die Oberfläche), oder gar nicht öffentlich +Zwei Wege, und welcher gilt, hängt daran, wie dein NPM aufgesetzt ist. + +**A · NPM hängt im selben Docker-Netz** — der saubere Weg. Kein Port muss +offen sein. + +``` +fivecdn.d4rkst3r.de -> http://minio:9000 + -> http://lite:8080 +``` + +Dafür muss NPM im Netz aus `PROXY_NETWORK` hängen. `docker network ls` zeigt +die Namen, `docker network inspect ` die Mitglieder. + +**B · NPM erreicht die Dienste über den Host** — so laufen Bot und Hub hier +schon, mit `http://host.docker.internal:3080`. Dann braucht es offene Ports, +und dafür gibt es die Ergänzung: + +``` +Compose path: docker-compose.yml,docker-compose.hostports.yml +``` + +``` +fivecdn.d4rkst3r.de -> http://host.docker.internal:9000 + -> http://host.docker.internal:8080 +``` + +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 — steht in +`docker-compose.hostports.yml` erklärt. --- diff --git a/docker-compose.hostports.yml b/docker-compose.hostports.yml new file mode 100644 index 0000000..4831463 --- /dev/null +++ b/docker-compose.hostports.yml @@ -0,0 +1,39 @@ +# Ergaenzung fuer einen Reverse Proxy, der NICHT im selben Docker-Netz haengt. +# +# Der Nginx Proxy Manager auf diesem Server erreicht seine Ziele ueber +# `host.docker.internal:` — so laufen dort schon Bot und Hub. Dieses +# Muster braucht offene Ports auf dem Host, denn ueber den Host geht der Weg. +# +# Zusammen benutzen: +# +# docker compose -f docker-compose.yml -f docker-compose.hostports.yml up -d +# +# In Portainer: unter "Compose path" beide Dateien angeben, durch Komma +# getrennt. +# +# Danach in NPM: +# +# fivecdn.d4rkst3r.de -> http://host.docker.internal:9000 (die Dateien) +# -> http://host.docker.internal:8080 (Lite) +# +# 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. +# +# Ein Vorbehalt dazu: ob `host.docker.internal` eine Bindung an 127.0.0.1 +# erreicht, haengt an der Docker-Fassung. Unter Linux braucht der +# NPM-Container dafuer `extra_hosts: ["host.docker.internal:host-gateway"]`, +# und der Weg fuehrt dann ueber die Docker-Bruecke statt ueber Loopback — dann +# muss die Bindung `0.0.0.0` lauten und die FIREWALL den Port zumachen. +# +# Kurz: klappt es mit 127.0.0.1 nicht, ist die Bindung nicht der Fehler, +# sondern der Weg. Sauberer waere es ohnehin, NPM ins Netz `proxy` zu haengen +# — dann braucht es diese Datei gar nicht und keinen offenen Port. + +services: + minio: + ports: + - "127.0.0.1:9000:9000" + + lite: + ports: + - "127.0.0.1:8080:8080"