Zum Inhalt springen

Traefik Reverse Proxy

Traefik ist ein moderner Reverse-Proxy- und Load-Balancer-Proxy, der die Bereitstellung von Microservices vereinfacht. Traefik lässt sich in die Komponenten Ihrer vorhandenen Infrastruktur (Docker, Schwarmmodus, Kubernetes, Marathon, Konsul, usw., Rancher, Amazon ECS usw.) integrieren und wird automatisch und dynamisch konfiguriert. Das Zielen von Traefik auf Ihrem Orchestrator sollte der einzige Konfigurationsschritt sein, den Sie benötigen. Diese Konfiguration ist A +. Testen Sie Ihre Einstellungen hier bei SSLlabs.

Erstellen Sie docker-compose.yml, bringfik.toml und acme.json im selben Verzeichnis oder ändern Sie Ihre Routen im Volumenbereich.

 Traefik Reverse Proxy Traefik Reverse Proxy
Hinweis

Stellen Sie sicher, dass der grundlegende Auth-Schutz für Traefik aktiviert ist, oder deaktivieren Sie das Dashboard. Andernfalls ist Ihr Dashboard über das Internet zugänglich.

$ sudo apt install apache2-utils$ echo $ (htpasswd -nb Benutzername mystrongpassword) | sed -en / \ N$ / N-$ / g

Dieser Befehl maskiert automatisch alle $s innerhalb des YML-Dateikennworts. Wenn eine Umgebungsdatei verwendet wird, muss das $ nicht maskiert werden, da es von der Shell nicht interpretiert wird.

docker-compose.yml

version: $00273.5$0027 services: bringfik: container_name: image bringfik: bringfik netzwerke: v1.7: - ports bringfik: - 80:80 - 443: 443 volumes: - /var/run/docker.sock:/var/run/docker .sock - ./traefik.toml:/traefik.toml - ./acme.json:/acme.json Tags: bringfik.enable: "true" bringfik.backend: bringfik bringfik.docker.network: bringfik bringfik.port: 8080 bringfik.frontend.rule: Host: bringfik.example.com, bringfik.frontend.entryPoints: https bringfik.frontend.passHostHeader: "true" bringfik.frontend.headers.SSLForceHost: "true" bringfik.frontend.headers.SSLHost: bringfik .example.com bringfik.frontend.headers.SSLRedirect: "true" bringfik.frontend.headers.browserXSSFilter: "true" bringfik.frontend.headers.contentTypeNosniff: "true" bringfik.frontend.headers.forceSTSHeader: "true" bringfik frontend.headers.STSSeconds: 315360000 headers.del.frontend.traefik.STSIncludeSubdomains: "true" bringfik.frontend.headers.STSPreload: "true" bringfik.frontend.headers.customResponseHeaders: X-Robots-Tag: n oindex, nofollow, nosnippet, noarchive, notranslate, noimageindex bringfik.frontend.headers.frameDeny: "true" bringfik.frontend.headers.customFrameOptionsValue: $0027allow-from https: //example.com$0027 restart: es sei denn / jellyfin container_name: jellyfin network_mode: "host" -Volumes: - / path / to / config: / config - / path / to / cache: / cache - / path / to / media: / media restart: es sei denn-gestopptnetworks: bringfik: Name: bringfik

Diese TOML-Datei kann keine Umgebungsvariablen unterstützen. Versuchen Sie daher nicht, Variablen zu verwenden.

Warnung

Aufgrund eines Fehlers in Traefik können Container nicht dynamisch weitergeleitet werden, wenn network_mode = host. Daher haben wir in bringfik.toml eine statische Route zum Docker-Host (172.17.0.1:8096) erstellt. Die Verwendung von Host-Netzwerken (oder Macvlan) ist erforderlich, um DLNA oder einen HdHomeRun zu verwenden, da dieser Multicast-Netzwerke unterstützt.

bringfik.toml

logLevel = "WARN" defaultInputpoints = ["http", "https"] [entryPoints] [entryPoints.http] address = ": 80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] address = ": 443" [entryPoints.https. TLS] minVersion = "VersionTLS12" ciphersuites = [ "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305" "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305" "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"] [Retry] [api] [Acme ] acmeLogging = trueemail = "user@example.com" storage = "acme.json" entryPoint = "https" [acme.dnsChallenge] provider = "provider" delayBeforeCheck = "60" [[acme.domains]] main = "* .example.com "[Docker] domain =" example.com "network =" bringfik "exponiertbydefault = false [Datei] [Backends] [Backends. backend-jellyfin] [backends.backend-jellyfin.servidores] [backends.backend-jellyfin.servidores.servidor-1] url = "http://172.17.0.1:8096""frontends] [frontends.jellyfin] backend =" backend-jellyfin "passHostHeader = true [frontends.jellyfin.rutas] [frontends.jellyfin.rutas.route-jellyfin-ext] rule =" Host: jellyfin.example.com "[frontends.jellyfin.headers] SSLRedirect = true SSLHost = "jellyfin.example.com" SSLForceHost = true STSSeconds = 315360000 STSIncludeSubdomains = true STSPreload = true forceSTSHeader = true frameDeny = true contentTypeNosniff = true browserXSSFilter = true customResponseHeaders = "X-Robots-Tag, noindex noimageindex "customFrameOptionsValue =" allow-from https://example.com "

Erstellen Sie abschließend eine leere Datei acme.json, um das Zertifikat zu verarbeiten.

$ touch acme.json $ chmod 600 acme.json
Warnung

Ändern Sie example.com in Ihren Domainnamen und aktualisieren Sie die Datei acme.json mit Ihrer E-Mail-Adresse. Let$0027s Encrypt erfordert keine gültige E-Mail-Adresse, example.com wird jedoch als falsch markiert.

Startet die Dienste Traefik und Jellyfin.

$ Docker-Compose -d

Herzlichen Glückwunsch, Ihr Stack mit Traefik und Jellyfin läuft!

Wechseln Sie zu der Domäne, die Sie zuvor in der Konfigurationsdatei verwendet haben, und Ihr Jellyfin-Server wird mit aktiviertem HTTPS (AES 256) ausgeführt.