Reverse Proxy mit Docker
Was dieser Artikel über Reverse Proxies in Docker behandelt
- Was ein Reverse Proxy leistet.
- Nginx und Traefik als Docker-Container.
- TLS, Zertifikate und Let us Encrypt.
- Weiterleitungen zu anderen Containern.
- Authentifizierung und Sicherheit.
Einleitung: Reverse Proxy mit Docker
Ein Reverse Proxy nimmt externe Anfragen entgegen und leitet sie an die passenden internen Dienste weiter. In Docker-Setups ist er besonders nützlich, weil viele Anwendungen auf unterschiedlichen Ports laufen. Statt jeden Port einzeln ins Netzwerk freizugeben, zeigt man nur den Reverse Proxy auf Port 80 oder 443 und lässt ihn anhand von Domainnamen oder Pfaden entscheiden, wohin die Anfrage geht.
Dieser Artikel zeigt, wie man Nginx Proxy Manager und Traefik in Docker betreibt und welche Sicherheitseinstellungen wichtig sind.
Wichtige Begriffe
- Reverse Proxy: Vermittler zwischen Client und Backend.
- Upstream: Hinterlegter Zieldienst.
- TLS: Verschlüsselung der Verbindung.
- Zertifikat: Digitales Dokument für TLS-Identität.
- Let us Encrypt: Kostenlose Zertifizierungsstelle.
- NPM: Nginx Proxy Manager.
- Traefik: Cloud-native Reverse Proxy mit Auto-Discovery.
- Authentifizierung: Prüfung des Zugriffs.
Warum ein Reverse Proxy?
- Zentrale Anlaufstelle für alle Dienste.
- TLS-Verschlüsselung an einer Stelle.
- Einfachere Verwaltung von Subdomains.
- Authentifizierung und Rate-Limiting möglich.
- Interne Ports bleiben verborgen.
Nginx Proxy Manager
Nginx Proxy Manager ist eine grafische Oberfläche für Nginx. Ideal für Homelabs.
Compose-Beispiel
services:
npm:
image: jc21/nginx-proxy-manager:latest
container_name: npm
ports:
- "80:80"
- "443:443"
- "81:81"
volumes:
- npm-data:/data
- npm-letsencrypt:/etc/letsencrypt
restart: unless-stopped
volumes:
npm-data:
npm-letsencrypt:
Einrichtung
- Container starten.
http://host:81aufrufen.- Standard-Login:
admin@example.com/changeme. - Proxy Hosts für interne Dienste anlegen.
- Optional SSL-Zertifikate hinzufügen.
Traefik
Traefik erkennt Docker-Container automatisch und erstellt dynamisch Routen. Gut für fortgeschrittene Setups.
Compose-Beispiel
services:
traefik:
image: traefik:v3.0
container_name: traefik
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencrypt.acme.tlschallenge=true"
- "--certificatesresolvers.letsencrypt.acme.email=mail@example.com"
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./letsencrypt:/letsencrypt
restart: unless-stopped
Labels für einen Dienst
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
labels:
- "traefik.enable=true"
- "traefik.http.routers.webui.rule=Host(`webui.home.local`)"
- "traefik.http.routers.webui.entrypoints=web"
TLS in lokalen Netzwerken
Für interne Domains ohne öffentliches DNS kann man eigene Zertifikate oder mkcert nutzen:
mkcert home.local
Das Zertifikat wird im lokalen Truststore akzeptiert.
Authentifizierung
Nginx Proxy Manager bietet integrierte Access Lists. Traefik kann ForwardAuth mit Authelia, Authentik oder oauth2-proxy nutzen:
labels:
- "traefik.http.routers.webui.middlewares=authelia@docker"
Weiterleitungen zu Ollama und Open WebUI
| Dienst | Interner Port | Beispiel-Domain |
|---|---|---|
| Open WebUI | 8080 | webui.home.local |
| Ollama API | 11434 | ollama.home.local |
| Grafana | 3000 | grafana.home.local |
Wichtig: Ollama sollte nicht öffentlich erreichbar sein. Nur interner oder per VPN geschützter Zugriff.
Sicherheit
- Reverse Proxy an
80/443binden, Dienste nur intern. - TLS für alle externen Zugriffe nutzen.
- Authentifizierung für administrative Oberflächen.
- Rate-Limiting aktivieren.
- Logs regelmässig prüfen.
- Keine Dienste ungeschützt ins Internet stellen.
Typische Stolpersteine
- DNS nicht auflösbar: Lokale Domain muss im Router oder Pi-hole eingetragen sein.
- Port 80 belegt: Anderer Dienst blockiert HTTP.
- Zertifikat abgelaufen: Let us Encrypt erneuert nicht automatisch.
- Container-Labels falsch: Traefik findet den Dienst nicht.
- Pfad-Routing nicht funktioniert: Regex oder StripPrefix prüfen.
- Websocket fehlt: Für Open WebUI Websocket-Unterstützung aktivieren.
Weiterführende Links und Infos
- BotServ.de Ollama Sicherheit
- BotServ.de Docker Compose
- BotServ.de Docker Volumes
- BotServ.de Tailscale Grundlagen
FAQ: Reverse Proxy mit Docker
Brauche ich einen Reverse Proxy? Ja, sobald mehrere Dienste über Domains oder TLS erreichbar sein sollen.
Ist Nginx oder Traefik besser? Nginx ist einfacher, Traefik dynamischer und cloud-nativer.
Kann ich lokale Domains ohne Internet nutzen? Ja, mit lokalem DNS oder mkcert-Zertifikaten.
Sollte ich Ollama hinter einem Reverse Proxy veröffentlichen? Nur mit Authentifizierung und VPN, nie öffentlich.
Wie erhalte ich kostenlose Zertifikate? Über Let us Encrypt oder mkcert für lokale Netzwerke.
Quellen und weiterführende Literatur
- Nginx Proxy Manager: https://nginxproxymanager.com/
- Traefik: https://traefik.io/
- Let us Encrypt: https://letsencrypt.org/
- mkcert: https://github.com/FiloSottile/mkcert
Zusammenfassung: Reverse Proxy mit Docker
Ein Reverse Proxy in Docker vereinfacht die Verwaltung vieler Dienste und zentralisiert TLS sowie Authentifizierung. Nginx Proxy Manager eignet sich für einfache Homelabs, Traefik für dynamische und grössere Setups. Wichtig sind korrekte DNS-Einträge, sichere Zertifikate, Authentifizierung und der Schutz sensibler Dienste wie Ollama. Wer das richtig einrichtet, bekommt eine übersichtliche und sichere Infrastruktur für lokale KI-Dienste.


