O Traefik é um proxy reverso moderno e um proxy do balanceador de carga que facilita a implantação de microsserviços. O Traefik se integra aos componentes de sua infraestrutura existente (Docker, modo Swarm, Kubernetes, Maratona, Consul, Etcd, Rancher, Amazon ECS, ...) e é configurado automaticamente e dinamicamente. O objetivo do Traefik no seu orquestrador deve ser a única etapa de configuração necessária. Esta configuração é A +. Teste suas configurações aqui no SSLlabs.
Crie docker-compose.yml, bringfik.toml e acme.json no mesmo diretório ou altere suas rotas na seção de volume.

Nota
Certifique-se de ativar a proteção de autenticação básica para o Traefik ou desativar o painel. Caso contrário, seu Painel estará acessível na Internet.
$ sudo apt install apache2-utils$ echo $ (htpasswd -nb nome de usuário mystrongpassword) | sed -en / \ N$ / N-$ / g
Este comando escapa automaticamente todos os $s na senha do arquivo YML. Se um arquivo de ambiente for usado, você não precisará do $ para escapar, pois ele não será interpretado pelo shell.
docker-compose.yml
versão: $00273.5$0027 serviços: bringfik: container_name: image bringfik: bringfik redes: 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: Anfitrião: bringfik.example.com, bringfik.frontend.entryPoints: https bringfik.frontend.passHostHeader: "true" bringfik.frontend.headers.SSLForceHost: "true" bringfik.frontend.headers.SSLHost: bringfik .exemplo.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: $0027seguir https: //example.com$0027 reiniciar: a menos / jellyfin container_name: jellyfin network_mode: "host" volumes: - / caminho / para / config: / config - / caminho / para / cache: / cache - / caminho / para / mídia: / media restart: a menos que seja interrompida redes: bringfik: nome: bringfik
Este arquivo TOML não pode suportar variáveis de ambiente, portanto, não tente usar variáveis.
Advertência
Devido a um erro no Traefik, os contêineres não podem ser roteados dinamicamente quando network_mode = host, portanto, criamos uma rota estática para o host do docker (172.17.0.1:8096) no bringfik.toml. O uso de redes host (ou macvlan) é necessário para usar DLNA ou HdHomeRun, pois ele suporta redes multicast.
bringfik.toml
logLevel = "WARN" defaultInputpoints = ["http", "https"] [entryPoints] [entryPoints.http] address = ": 80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] endereço = ": 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"] [Repetir] [API] [acme ] acmeLogging = trueemail = "usuário@exemplo.com" armazenamento = "acme.json" entryPoint = "https" [acme.dnsChallenge] provider = "provider" delayBeforeCheck = "60" [[acme.domains]] main = "* .example.com "[docker] domain =" example.com "network =" bringfik "posedbydefault = false [arquivo] [back-end] [back-end. backend-jellyfin] [backends.backend-jellyfin.servidores] [backends.backend-jellyfin.servidores.servidor-1] url = "http://172.17.0.1:8096""frontends] [frontends.jellyfin] backend =" regra de back-jellyfin ": passHostHeader = true [frontends.jellyfin.rutas] [frontends.jellyfin.rutas.route-jellyfin-ext] regra =" 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, noindex, noimageindex "customFrameOptionsValue =" permitir a partir de https://example.com "
Por fim, crie um arquivo acme.json vazio para manipular o certificado.
$ touch acme.json $ chmod 600 acme.json
Advertência
Mude example.com para o seu nome de domínio e atualize o arquivo acme.json com o seu endereço de email. O Let$0027s Criptografar não requer um email válido, mas example.com será marcado como falso.
Lança os serviços Traefik e Jellyfin.
Docker $-compose -d
Parabéns, sua pilha com Traefik e Jellyfin está funcionando!
Vá para o domínio que você usou anteriormente no arquivo de configuração e o servidor Jellyfin será executado com o HTTPS (AES 256) ativado.
Conteúdo