Salta al contenuto

Traefik Reverse Proxy

Traefik è un moderno proxy inverso e proxy di bilanciamento del carico che semplifica l'implementazione di microservizi. Traefik si integra con i componenti della tua infrastruttura esistente (Docker, modalità Sciame, Kubernetes, Marathon, Console, Etcd, Rancher, Amazon ECS, ...) ed è configurato automaticamente e dinamicamente. Puntare Traefik sul tuo orchestrator dovrebbe essere l'unico passaggio di configurazione di cui hai bisogno. Questa configurazione è A +. Prova le tue impostazioni qui su SSLlabs.

Crea docker-compose.yml, bringfik.toml e acme.json nella stessa directory o modifica i percorsi nella sezione del volume.

 Traefik Reverse Proxy Traefik Reverse Proxy
nota

Assicurati di abilitare la protezione base di Auth per Traefik o disabilitare il suo Dashboard. Altrimenti, la tua Dashboard sarà accessibile da Internet.

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

Questo comando esegue automaticamente l'escape di tutti gli $ all'interno della password del file YML. Se viene utilizzato un file di ambiente, non è necessario che $ scappi poiché non verrà interpretato dalla shell.

finestra mobile-compose.yml

versione: $00273.5$0027 servizi: bringfik: container_name: image bringfik: bringfik networks: v1.7: - porti bringfik: - 80:80 - 443: 443 volumi: - /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.frontend.headers.SSLHost: bringfik.frontend.headers.SSLHost: bringfik.frontend.headers.SSL .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 riavvia: a meno / jellyfin container_name: jellyfin network_mode: volumi "host": - / path / to / config: / config - / path / to / cache: / cache - / path / to / media: / riavvio dei media: salvo-fermati reti: bringfik: nome: bringfik

Questo file TOML non può supportare le variabili di ambiente, quindi non provare a utilizzare le variabili.

avvertimento

A causa di un bug in Traefik, i container non possono essere instradati dinamicamente quando network_mode = host, quindi abbiamo creato una route statica verso l'host docker (172.17.0.1:8096) in bringfik.toml. L'uso di reti host (o macvlan) è necessario per utilizzare DLNA o HdHomeRun in quanto supporta reti multicast.

traefik.toml

logLevel = "WARN" defaultInputpoints = ["http", "https"] [entryPoints] [entryPoints.http] address = ": 80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] indirizzo = ": 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] [trapezia ] 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 "exposbydefault = false [file] [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 =" 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 = noindex, no noimageindex "customFrameOptionsValue =" allow-from https://example.com "

Infine, crea un file acme.json vuoto per gestire il certificato.

$ touch acme.json $ chmod 600 acme.json
avvertimento

Cambia esempio.com nel tuo nome di dominio e aggiorna il file acme.json con il tuo indirizzo e-mail. Let$0027s Encrypt non richiede un'e-mail valida ma example.com verrà contrassegnato come falso.

Avvia i servizi Traefik e Jellyfin.

$ docker-compose -d

Congratulazioni, il tuo stack con Traefik e Jellyfin è in esecuzione!

Vai al dominio che hai usato in precedenza nel file di configurazione e il tuo server Jellyfin verrà eseguito con HTTPS (AES 256) attivato.