Skip to content
BotServBotServ
DockerReverse ProxyNginxTraefikTLS

Reverse Proxy mit Docker

Nginx und Traefik als Reverse Proxy in Docker. TLS, Authentifizierung, Weiterleitungen und Best Practices.

S

schutzgeist

3 min read
Reverse Proxy mit Docker

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

  1. Container starten.
  2. http://host:81 aufrufen.
  3. Standard-Login: admin@example.com / changeme.
  4. Proxy Hosts für interne Dienste anlegen.
  5. 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

DienstInterner PortBeispiel-Domain
Open WebUI8080webui.home.local
Ollama API11434ollama.home.local
Grafana3000grafana.home.local

Wichtig: Ollama sollte nicht öffentlich erreichbar sein. Nur interner oder per VPN geschützter Zugriff.

Sicherheit

  • Reverse Proxy an 80/443 binden, 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.

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

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.

Zurück zum KI Blog
Share:

Ähnliche Beiträge