# ───────────────────────────────────────────────────────────────────────────── # HINWEIS: Diese Datei ist die lesbare Fassung zum Nachschlagen. Verwendet wird # derselbe Inhalt aus `docker-compose.yml` (Abschnitt `configs:`) — dort steht # er noch einmal, mit `$$` statt `$`. Wer hier etwas ändert, ändert es dort. # # Der Grund für den Umweg: Bind-Mounts einzelner Dateien scheitern, sobald die # Datei auf dem Wirt fehlt — Docker legt dann ein Verzeichnis an und bricht mit # „not a directory" ab. Beim Einsetzen über eine Oberfläche will man ausserdem # nur eine Datei bearbeiten, nicht drei. # ───────────────────────────────────────────────────────────────────────────── # ───────────────────────────────────────────────────────────────────────────── # Ein Einsetzer für alle Dienste, die die Leiste tragen sollen. # # Pangolin gibt den ursprünglichen Host weiter; daran erkennt nginx, welcher # Dienst gemeint ist. Eine neue App heisst: zwei Zeilen in den Tabellen unten, # neu laden, fertig — kein weiterer Behälter. # ───────────────────────────────────────────────────────────────────────────── # Wohin durchgereicht wird. Links der Name, unter dem du die App aufrufst, # rechts Behältername und Port im Docker-Netz. map $host $ziel { default ""; pdf.honeyos.duckdns.org "bentopdf:8080"; status.honeyos.duckdns.org "uptime-kuma:3001"; } # Welche App das für HoneyOS ist. Muss der id in der App-Liste entsprechen — # daran erkennt die Leiste, wo man gerade ist, und hebt sie hervor. map $host $appid { default ""; pdf.honeyos.duckdns.org "bentopdf"; status.honeyos.duckdns.org "status"; } server { listen 80; server_name _; # Für ein proxy_pass mit Variable braucht nginx einen Namensauflöser — # im Docker-Netz ist das der eingebaute unter 127.0.0.11. resolver 127.0.0.11 valid=30s ipv6=off; # Unbekannter Host: nicht raten, sondern ablehnen. Sonst wird aus einem # Tippfehler in Pangolin eine stille Weiterleitung irgendwohin. if ($ziel = "") { return 404; } location / { proxy_pass http://$ziel; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; # WebSockets durchlassen — viele Werkzeuge (Uptime Kuma, Dashboards, # alles mit Live-Anzeige) brechen sonst ab. proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; # Unkomprimiert anfordern, sonst ist im Strom nichts zu ersetzen. proxy_set_header Accept-Encoding ""; # Nur HTML anfassen; alles andere geht unberührt durch. sub_filter_once on; sub_filter '' ''; # Lange Antworten nicht künstlich aufhalten (Downloads, Fortschritt). proxy_buffering off; proxy_read_timeout 300s; } }