Aller au contenu

Traefik Reverse Proxy

Traefik est un proxy inverse moderne et un proxy d'équilibrage de charge qui facilitent le déploiement de microservices. Traefik s'intègre aux composants de votre infrastructure existante (Docker, mode Swarm, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS, ...) et est configuré automatiquement et dynamiquement. Orienter Traefik sur votre orchestrateur devrait être la seule étape de configuration dont vous avez besoin. Cette configuration est A +. Testez vos paramètres ici sur SSLlabs.

Créez docker-compose.yml, bringfik.toml et acme.json dans le même répertoire ou modifiez vos itinéraires dans la section volume.

 Traefik Reverse Proxy Traefik Reverse Proxy
Remarque

Assurez-vous d'activer la protection de base Auth pour Traefik ou de désactiver son tableau de bord. Sinon, votre tableau de bord sera accessible depuis Internet.

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

Cette commande échappe automatiquement tous les $ dans le mot de passe du fichier YML. Si un fichier d'environnement est utilisé, vous n'avez pas besoin que le $ s'échappe car il ne sera pas interprété par le shell.

docker-compose.yml

version: $00273.5$0027 services: bringfik: nom_conteneur: image bringfik: réseaux bringfik: 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: Hôte: 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 redémarrage: sauf si / jellyfin nom_conteneur: jellyfin mode_réseau: volumes "hôtes": - / chemin / vers / config: / config - / chemin / vers / cache: / cache - / chemin / vers / média: / redémarrage du média: réseaux sauf arrêt: bringfik: nom: bringfik

Ce fichier TOML ne peut pas prendre en charge les variables d'environnement, donc n'essayez pas d'utiliser des variables.

Avertissement

En raison d'un bogue dans Traefik, les conteneurs ne peuvent pas être routés dynamiquement lorsque network_mode = host, nous avons donc créé une route statique vers l'hôte docker (172.17.0.1:8096) dans bringfik.toml. L'utilisation de réseaux hôtes (ou macvlan) est nécessaire pour utiliser DLNA ou un HdHomeRun car il prend en charge les réseaux de multidiffusion.

bringfik.toml

logLevel = "WARN" defaultInputpoints = ["http", "https"] [entryPoints] [entryPoints.http] address = ": 80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] adresse = ": 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 "exposebydefault = false [fichier] [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 =" Hôte: 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, noindex, noindex, noindex noimageindex "customFrameOptionsValue =" allow-from https://example.com "

Enfin, créez un fichier acme.json vide pour gérer le certificat.

$ touch acme.json $ chmod 600 acme.json
Avertissement

Remplacez example.com par votre nom de domaine et mettez à jour le fichier acme.json avec votre adresse e-mail. Let$0027s Encrypt ne nécessite pas d'e-mail valide mais example.com sera marqué comme faux.

Lance les services Traefik et Jellyfin.

$ docker-compose -d

Félicitations, votre pile avec Traefik et Jellyfin est en marche!

Accédez au domaine que vous avez utilisé précédemment dans le fichier de configuration et votre serveur Jellyfin s'exécutera avec HTTPS (AES 256) activé.