跳到内容

Traefik反向代理

Traefik是现代的反向代理和负载平衡器代理,可轻松部署微服务。 Traefik与您现有基础架构的组件集成(Docker,Swarm模式,Kubernetes,Marathon,Consul,Etcd,Rancher,Amazon ECS等),并且自动且动态地配置。将Traefik对准您的Orchestrator应该是您唯一需要的配置步骤。此配置为A +。在SSLlabs上测试您的设置。

在同一目录中创建docker-compose.yml,brieffik.toml和acme.json 或在音量部分更改路线。

 Traefik反向代理Traefik反向代理
注意事项

确保为Traefik启用基本的Auth保护或禁用其Dashboard。否则,您的仪表板将可以从Internet访问。

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

该命令自动转义YML文件密码中的所有$。如果使用了环境文件,则不需要$进行转义,因为Shell不会解释它。

docker-compose.yml

版本:$00273.5$0027服务:brieffik:container_name:映像putefik:brieffik网络:v1.7:-端口brieffik:-80:80-443:443卷:-/ var / run / docker.sock:/ var / run / docker .sock-./traefik.toml:/traefik.toml-./acme.json:/acme.json标签:Bringfik.enable:“ true”的brieffik.backend:的brieffik Bringfik.docker.network:的brieffik的brakefik.port:8080 Bringfik.frontend.rule:主机:brieffik.example.com,brieffik.frontend.entryPoints:https://brieffik.frontend.passHostHeader:“ true” brieffik.frontend.headers.SSLForceHost:“ true” brieffik.frontend.headers.SSLHost:brieffik .example.com Bringfik.frontend.headers.SSLRedirect:“ true” brieffik.frontend.headers.browserXSSFilter:“ true” brieffik.frontend.headers.contentTypeNosniff:“ true” brieffik.frontend.headers.forceSTSHeader:“ true” brieffik frontend.headers.STSSeconds:315360000 headers.del.frontend.traefik.STSIncludeSubdomains:“ true” brieffik.frontend.headers.STSPreload:“ true” brieffik.frontend.headers.customResponseHeaders:X-Robots-Tag:n oindex,nofollow,nosnippet,noarchive,notranslate,noimageindex / jellyfin container_name:jellyfin network_mode:“主机”卷:-/路径/到/配置:/ config-/路径/到/缓存:/缓存-/路径/到/媒体:/媒体重新启动:除非stoppednetworks:名称:带上

该TOML文件不支持环境变量,因此请勿尝试使用变量。

警告

由于Traefik中的错误,当network_mode = host时,容器不能动态路由,因此我们在Brieffik.toml中创建了到Docker主机的静态路由(172.17.0.1:8096)。要使用DLNA或HdHomeRun,必须使用主机网络(或macvlan),因为它支持多播网络。

Bringfik.toml

logLevel =“ WARN” defaultInputpoints = [“ http”,“ https”] [entryPoints] [entryPoints.http]地址=“:80” [entryPoints.http.redirect] entryPoint =“ https” [entryPoints.https]地址=“:443” [entryPoints.https。 TLS] MINVERSION = “VersionTLS12” 密码组= [ “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”] [重试] [API] [ACME ] acmeLogging = trueemail =“ user@example.com” storage =“ acme.json” entryPoint =“ https” [acme.dnsChallenge]提供程序=“提供程序” delayBeforeCheck =“ 60” [[acme.domains]] main =“ * .example.com“ [docker]域=” example.com“网络=” brickfik“ exposedbydefault = false [文件] [后端] [后端。 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 =真STSSeconds = 315360000 STSIncludeSubdomains =真STSPreload =真forceSTSHeader =真frameDeny =真contentTypeNosniff =真browserXSSFilter =真customResponseHeaders =“ X-Robots-Tag,noindex,noindex,noindex, noimageindex“ customFrameOptionsValue =” allow-from https://example.com“

最后,创建一个空的acme.json文件来处理证书。

$触摸acme.json $ chmod 600 acme.json
警告

将example.com更改为您的域名,然后使用您的电子邮件地址更新acme.json文件。 Let$0027s Encrypt不需要有效的电子邮件,但是example.com将被标记为false。

推出Traefik和Jellyfin服务。

$ docker-compose -d

恭喜,您与Traefik和Jellyfin的堆栈正在运行!

转到您先前在配置文件中使用的域,您的Jellyfin服务器将在激活HTTPS(AES 256)的情况下运行。