перейти к содержанию

Traefik обратный прокси

Traefik - это современный обратный прокси-сервер и прокси-сервер балансировки нагрузки, который упрощает развертывание микросервисов. Traefik интегрируется с компонентами существующей инфраструктуры (Docker, режим Swarm, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS, ...) и настраивается автоматически и динамически. Направление Traefik на ваш Orchestrator должно быть единственным необходимым шагом настройки. Эта конфигурация A +. Проверьте свои настройки здесь в SSLlabs.

Создайте docker-compose.yml, принеситеfik.toml и acme.json в одном каталоге или измените ваши маршруты в разделе объема.

<figcaption class=Traefik обратный прокси"width =" 832 "height =" 451 "/>Traefik обратный прокси
примечание

Убедитесь, что вы включили базовую защиту Auth для Traefik или отключили его Dashboard. В противном случае ваша панель инструментов будет доступна из Интернета.

$ sudo apt install apache2-utils$ echo $ (htpasswd -nb имя пользователя mystrongpassword) | sed -en / \ N$ / N-$ / г

Эта команда автоматически экранирует все $ в пароле файла YML. Если используется файл среды, вам не нужен $ для выхода, так как он не будет интерпретироваться оболочкой.

докер-compose.yml

версия: $00273.5$0027 услуги: приносить: контейнер: имя: изображение приносить: приносить сети: v1.7: - порты приносить: - 80:80 - 443: 443 тома: - /var/run/docker.sock:/var/run/docker .sock - ./traefik.toml:/traefik.toml - ./acme.json:/acme.json теги: приносить yieldfik.frontend.rule: Узел: yieldfik.example.com, yieldfik.frontend.entryPoints: https yieldfik.frontend.passHostHeader: «истина». yieldfik.frontend.headers.SSLForceHost: «истина». указатель yieldfik.frontend.headers.SSL. .example.com yieldfik.frontend.headers.SSLRedirect: «истина »означая. имя_файла frontend.headers.STSSeconds: 315360000 headers.del.frontend.traefik.STSIncludeSubdomains: "true" yieldfik.frontend.headers.STSPreload: "true" yieldfik.frontend.headers.customResponseHeaders: X-Robots-Tag: n oindex, nofollow, nosnippet, noarchive, notranslate, noimageindex приводит к тому, что / jellyfin имя_ контейнера: jellyfin network_mode: тома "хоста": - / path / to / config: / config - / path / to / cache: / cache - / path / to / media: / перезапуск носителя: если-не остановленные сети: yieldfik: имя: приносить

Этот файл TOML не поддерживает переменные среды, поэтому не пытайтесь использовать переменные.

предупреждение

Из-за ошибки в Traefik контейнеры не могут быть динамически перенаправлены, когда network_mode = host, поэтому мы создали статический маршрут к докеру хоста (172.17.0.1:8096) в файле yieldfik.toml. Использование хост-сетей (или macvlan) необходимо для использования DLNA или HdHomeRun, поскольку он поддерживает многоадресные сети.

traefik.toml

logLevel = "WARN" defaultInputpoints = ["http", "https"] [entryPoints] [entryPoints.http] address = ": 80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] адрес = ": 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"] [Повтор] [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 =" yieldfik "выставленbydefault = 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 =" Хост: 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, Node, node, node, node, node, noin, noin, noin, node, nodex, noinde, noinde, noindex noimageindex "customFrameOptionsValue =" allow-from https://example.com "

Наконец, создайте пустой файл acme.json для обработки сертификата.

$ touch acme.json $ chmod 600 acme.json
предупреждение

Измените example.com на свое доменное имя и обновите файл acme.json, указав свой адрес электронной почты. Let$0027s Для шифрования не требуется действительный адрес электронной почты, но example.com будет помечен как ложный.

Запускает сервисы Traefik и Jellyfin.

$ docker-compose -d

Поздравляем, ваш стек с Traefik и Jellyfin запущен!

Перейдите к домену, который вы использовали ранее в файле конфигурации, и ваш сервер Jellyfin будет работать с активированным HTTPS (AES 256).