2025-08-31 13:30:24 +02:00
2025-08-31 13:30:24 +02:00
2025-08-11 11:10:04 +02:00
2025-08-11 11:10:04 +02:00
2025-07-31 20:20:56 +02:00

Traefik Reverse Proxy Setup

Dieses Repository enthält ein vorkonfiguriertes Setup für den Betrieb eines Traefik-Reverse-Proxys in einer Docker-Umgebung. Es ist für den Einsatz mit mehreren selbstgehosteten Services gedacht (z.B. NAS-Dienste, Monitoring, Pi-hole etc.), die per Subdomain über HTTPS erreichbar gemacht werden sollen.

Verzeichnisstruktur

traefik/
├── docker-compose.yml         # Docker-Setup für Traefik
├── traefik.yml                # Statische Konfiguration von Traefik
├── dynamic/                   # Dynamische Konfigurationen (pro Service-Gruppe)
│   ├── cachyos-services.yml
│   ├── monitoring-services.yml
│   ├── nas-services.yml
│   └── pihole-config.yml
└── letsencrypt/
    └── acme.json              # Zertifikatsdatenbank von Let's Encrypt (automatisch erstellt)

Voraussetzungen

  • Docker und Docker Compose installiert
  • Eine Domain mit passenden DNS-Einträgen (z.B. *.domain.tld)
  • Zugriff auf Ports 80 und 443
  • DNS-01 oder HTTP-01 Challenge via Let's Encrypt
  • Ein dediziertes Netzwerk (traefik) für angebundene Container

Konfiguration

1. traefik.yml

Definiert die statischen Einstellungen von Traefik, z.B.:

  • Logging
  • EntryPoints (:80, :443)
  • Let's Encrypt Konfiguration
  • API Dashboard

2. docker-compose.yml

Startet den Traefik-Container mit den nötigen Mounts und Umgebungsvariablen. Wichtig:

  • Das letsencrypt/acme.json-File muss existieren und chmod 600 gesetzt sein.
  • Externe Container müssen mit dem gleichen Docker-Netzwerk (traefik) verbunden werden.

3. dynamic/*.yml

Dynamische Konfigurationen für Services. Jede Datei enthält:

  • Service-Labels (Router, Middleware, TLS)
  • Weiterleitungen, Redirects, Authentifizierung etc.

Beispiel:

http:
  routers:
    my-service:
      rule: "Host(`example.domain.tld`)"
      service: "my-service"
      entryPoints: ["websecure"]
      tls:
        certResolver: "letsencrypt"

Nutzung

  1. Repository klonen oder in dein Projektverzeichnis übernehmen:

    git clone https://github.com/dein-benutzer/traefik-setup.git
    cd traefik-setup/traefik
    
  2. ACME-Datei für Let's Encrypt vorbereiten:

    touch letsencrypt/acme.json
    chmod 600 letsencrypt/acme.json
    
  3. Traefik starten:

    docker compose up -d
    

    Das Traefik-Dashboard ist dann erreichbar unter:

    https://traefik.deine-domain.tld/dashboard/
    

    (Domain ggf. anpassen)

Container für eigene Services anbinden

Eigene Container auf dem gleichen host müssen in deren docker-compose.yml folgendermaßen ergänzt werden:

networks:
  - traefik

labels:
  - "traefik.enable=true"
  - "traefik.http.routers.meinservice.rule=Host(`service.deine-domain.tld`)"
  - "traefik.http.routers.meinservice.entrypoints=websecure"
  - "traefik.http.routers.meinservice.tls.certresolver=letsencrypt"

Außerdem muss der Container dem gemeinsamen Traefik-Netzwerk beitreten:

networks:
  traefik:
    external: true

Tipp: Du kannst neue Regeln auch in einer der dynamic/*.yml Dateien hinterlegen, z.B. wenn du Dienste nicht direkt mit Labels versehen möchtest.

Hinweise

  • Achte darauf, dass Ports 80 und 443 öffentlich erreichbar sind (für die HTTP-01-Challenge).

  • Für Basic Auth kannst du Zugangsdaten mit htpasswd generieren:

    htpasswd -nb deinbenutzer deinpasswort
    
  • Die dynamischen YML-Dateien können logisch nach Servicegruppen getrennt werden, z.B.:

    • monitoring-services.yml
    • nas-services.yml
    • cachyos-services.yml

Logs & Debugging

  • Live-Logs anzeigen:

    docker compose logs -f
    
  • Weiterleitungen testen:

    curl -v https://deinservice.deine-domain.tld
    

Sicherheit

  • Die Datei letsencrypt/acme.json enthält vertrauliche TLS-Zertifikatsdaten sichere sie entsprechend.
  • Für öffentliche Dienste empfiehlt sich der Einsatz von Authentifizierungsmiddleware (z.B. Basic Auth oder OAuth2).
Description
No description provided
Readme 980 KiB