{"id":353548,"date":"2024-05-20T22:30:11","date_gmt":"2024-05-20T22:30:11","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=353548"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=353548","title":{"rendered":"<span>Traefik\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0435\u0431\u0435 reverse proxy \u0438\u043b\u0438 load balancer \u0438 \u0445\u043e\u0447\u0435\u0442 \u043f\u0440\u0438\u0433\u043b\u044f\u0434\u0435\u0442\u044c\u0441\u044f \u043a Traefik v2 \u0432 \u044d\u0442\u043e\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 Docker \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0430\u043a \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e HTTPS \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0430\u043a \u0438 \u043f\u0440\u043e\u0431\u0440\u043e\u0441 TCP \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430 HTTPS \u0441\u0435\u0440\u0432\u0435\u0440. \u0411\u0435\u0437 Kubernetes, \u0431\u0435\u0437 SWARM.<\/p>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d Docker, \u0432\u044b \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 compose \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0443\u043c\u0435\u0435\u0442\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u043f\u043b\u0430\u043d \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0442\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u044d\u0442\u043e.<\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Traefik.<\/h2>\n<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u043a\u0430 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0440\u0442\u044b 8080 \u0438 8443, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u0448\u0435\u0447\u043a\u0430\u0445, \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b. \u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430. \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Traefik \u0432\u043e\u043e\u0431\u0449\u0435 \u0431\u0435\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a?<\/p>\n<pre><code>mkdir traefik &amp;&amp; cd traefik nano docker-compose.yml <\/code><\/pre>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 <em>docker-compose.yml<\/em><\/p>\n<pre><code class=\"yaml\">version: '3' services:   traefik:     image: traefik:v2.10.4 <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u0445\u043b\u0430\u043c\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0437\u0430\u043c\u0438. \u0421 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0430 \u0441 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u044b\u043b\u0430 2.10.4. \u042e\u0440\u0430, \u043f\u043e\u0435\u0445\u0430\u043b\u0438!<\/p>\n<pre><code>sudo docker compose -p traefik up -d <\/code><\/pre>\n<p>\u0427\u0442\u043e-\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u043b\u043e\u0441\u044c, \u0441\u043e\u0437\u0434\u0430\u043b\u043e\u0441\u044c, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u043e\u0441\u044c. \u0412\u0440\u043e\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0438\u0447\u0442\u043e \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u043e\u0442\u0432\u0430\u043b\u0438\u043b\u043e\u0441\u044c. \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u043c. \u041f\u043e\u0440\u0430 \u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044c \u0431\u043b\u044d\u043a\u0434\u0436\u0435\u043a. \u0412 \u0441\u043c\u044b\u0441\u043b\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434, \u043f\u043e\u0440\u0442\u044b, \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0438\u0437 \u043c\u0435\u0442\u043e\u043a, \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0418 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441 \u043a\u043b\u044e\u0447\u043e\u043c. \u0412\u0435\u0434\u044c \u043e\u043d \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043f\u0440\u0430\u0432\u0434\u0430? \u0422\u0443\u0442, \u043a\u0441\u0442\u0430\u0442\u0438, \u0443 Traefik \u0435\u0441\u0442\u044c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u0430\u044f \u043c\u043e\u0437\u043e\u043b\u044c. \u041a\u043e\u0433\u0434\u0430 \u043e\u043d \u0441\u0430\u043c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0443 ACME \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0435\u0433\u043e \u0432 JSON \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u0418 \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u043a\u0430\u043a\u0438\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0440\u0443\u0433\u0438\u043c HTTPS \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c, \u0442\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0432\u044b\u0434\u0438\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0437 JSON \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u043c PEM \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u0411\u043b\u0430\u0433\u043e, \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0435\u0441\u0442\u044c. \u041c\u043e\u0436\u043d\u043e \u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043b\u0435\u043d\u044c. \u0422\u0430\u043c \u0442\u043e\u0442 \u0436\u0435 PEM \u0432 \u0432\u0438\u0434\u0435 \u043e\u0434\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>\u0424\u0430\u0439\u043b <em>docker-compose.yml<\/em> \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043a\u0430\u0445:<\/p>\n<pre><code class=\"yaml\">version: '3' services:   traefik-proxy:     image: traefik:v2.10.4     container_name: traefik     restart: unless-stopped     security_opt:       - no-new-privileges:true     env_file:       - traefik.env     ports:       - 8080:8080       - 8443:8443     volumes:       - \/etc\/localtime:\/etc\/localtime:ro       - \/var\/run\/docker.sock:\/var\/run\/docker.sock:ro       - .\/logs\/:\/var\/log\/traefik\/       - .\/traefik.yml:\/etc\/traefik\/traefik.yml:ro       - .\/config\/:\/etc\/traefik\/config\/:ro       - .\/cert\/:\/etc\/traefik\/cert\/:ro       - .\/secret:\/etc\/traefik\/secret:ro     labels:       - \"traefik.enable=true\"       - \"traefik.http.routers.traefik-http-router.entrypoints=websecure\"       - \"traefik.http.routers.traefik-http-router.rule=Host(`traefik.example.com`) &amp;&amp;      (PathPrefix(`\/traefik`) ||   Headers(`Referer`, `https:\/\/traefik.example.com:8443\/traefik\/dashboard\/`))\"       - \"traefik.http.routers.traefik-http-router.tls=true\"       - \"traefik.http.routers.traefik-http-router.service=api@internal\"       - \"traefik.http.routers.traefik-http-router.middlewares=traefik-mw-auth,traefik-mw-strip\"       - \"traefik.http.middlewares.traefik-mw-auth.basicauth.usersFile=\/etc\/traefik\/secret\"       - \"traefik.http.middlewares.traefik-mw-strip.stripprefix.prefixes=\/traefik\"       # SANs       #- \"traefik.http.routers.traefik-http-router.tls.certresolver=myresolver\"       - \"traefik.http.routers.traefik-http-router.tls.domains[0].main=traefik.example.com\"       - \"traefik.http.routers.traefik-http-router.tls.domains[0].sans=traefik.example.com,kifeart.example.com\"     networks:       traefik-bridge: #        ipv4_address: 192.168.100.100 networks:   traefik-bridge:     name: traefik #    ipam: #      config: #        - subnet: 192.168.100.0\/24 #          gateway: 192.168.100.1 <\/code><\/pre>\n<p>\u041f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438, \u043f\u043e\u0440\u0442\u044b, \u043f\u043e\u0434\u0441\u0435\u0442\u044c, \u043c\u0430\u043f\u043f\u0438\u043d\u0433\u0438 \u0447\u0435\u0433\u043e-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0444\u0430\u0439\u043b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f <em>traefik.toml<\/em> \u0438\u043b\u0438 <em>traefik.yml<\/em> \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 <a href=\"https:\/\/doc.traefik.io\/traefik\/getting-started\/configuration-overview\/#the-static-configuration\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043c\u0435\u0441\u0442<\/a>. \u0425\u043e\u0440\u043e\u0448\u043e \u0431\u044b, \u0447\u0442\u043e\u0431\u044b \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0443\u0436\u0435 \u0431\u044b\u043b, \u043f\u043e\u043a\u0430 \u0434\u043e\u0431\u0440\u044b\u0439 docker compose \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b \u043f\u0430\u043f\u043a\u0443 \u0441 \u0442\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c.<\/p>\n<pre><code>touch traefik.yml <\/code><\/pre>\n<p>\u041d\u043e \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435! \u041f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0434\u043b\u044f Traefik \u0432 \u0432\u0438\u0434\u0435 labels.<\/p>\n<h2>Entrypoints, routers, middlewares, services.<\/h2>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043e\u0440\u0438\u0438. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 <strong>entrypoints<\/strong>, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0438 <strong>services<\/strong> \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u0438\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0434\u0443\u0442 \u044d\u0442\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u041c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u044c, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f Traefik. \u0417\u0430 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u0430\u043c\u0438 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 <strong>routers<\/strong>. \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 <strong>middlewares<\/strong>.<\/p>\n<h2>Labels<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0431\u0435\u0436\u0438\u043c\u0441\u044f \u043b\u0451\u0433\u043a\u043e\u0439 \u0440\u044b\u0441\u0446\u043e\u0439 \u043f\u043e \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0441\u044f \u043c\u0435\u0442\u043a\u0430\u043c.<\/p>\n<p><code>traefik.enable=true<\/code><br \/> \u0412 \u0444\u0430\u0439\u043b\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0437\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e Traefik \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0442 \u0442\u0430\u043a \u0441\u0435\u0431\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043b\u0438.<\/p>\n<p><code>traefik.http.routers.traefik-http-router.entrypoints=websecure<\/code><br \/> \u0412 Traefik \u0440\u043e\u0443\u0442\u0435\u0440\u044b \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 http, tcp \u0438 udp. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 http \u0440\u043e\u0443\u0442\u0435\u0440 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c traefik-http-router \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c websecure. \u041c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u044b. \u041c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0443\u0431\u0440\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0444\u0438\u0433. \u0422\u043e\u0433\u0434\u0430 \u0440\u043e\u0443\u0442\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0432\u0441\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u044b.<\/p>\n<p><code>traefik.http.routers.traefik-http-router.rule=<\/code><br \/> \u0412\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u044f\u0432\u0438\u0442\u044c \u0431\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438 \u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0438 \u0440\u0430\u0437\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0440\u043e\u0443\u0442\u0435\u0440\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0448\u043b\u0438 \u043d\u0430 \u0445\u043e\u0441\u0442 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c <code>traefik.example.com<\/code> \u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0443\u0442\u0451\u043c \/traefik. \u041d\u0443, \u0430 \u0444\u0438\u0448\u043a\u0430 \u0441 \u0445\u0435\u0434\u0435\u0440\u043e\u043c \u0431\u044b\u043b\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u043f\u043b\u043e\u0445\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u0443\u0442\u0438. \u041f\u0440\u043e\u0448\u0443 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u043f\u043e\u0440\u0442 \u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c. \u0418 \u0435\u0449\u0451 \u0431\u043e\u043b\u044f\u0447\u043a\u0430. \u0417\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u0439 \u0441\u043b\u044d\u0448 dashboard\/ \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442\u0435 \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e <a href=\"https:\/\/doc.traefik.io\/traefik\/routing\/routers\/#rule\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0430\u0432\u0438\u043b\u0430<\/a>.<\/p>\n<p><code>traefik.http.routers.traefik-http-router.tls=true<\/code><br \/> \u0421\u0445\u0435\u043c\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 HTTPS, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u0445\u043e\u0441\u0442\u0430 \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0438\u043b\u0438 PEM \u0444\u0430\u0439\u043b\u0430\u0445 \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c TLS \u0441\u0435\u0441\u0441\u0438\u044e.<\/p>\n<p><code>traefik.http.routers.traefik-http-router.service=api@internal<\/code><br \/> \u0417\u0430\u043f\u0440\u043e\u0441, \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u044d\u0442\u043e\u0433\u043e \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u043b\u044e\u0431\u0438\u043c\u043e\u043c\u0443. \u0412 \u0441\u043c\u044b\u0441\u043b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 api@internal.<\/p>\n<p><code>traefik.http.routers.traefik-http-router.middlewares=traefik-mw-auth,traefik-mw-strip<\/code><br \/> \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u0441\u0435\u0440\u0432\u0438\u0441 \u0437\u0430\u043f\u0440\u043e\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d \u043c\u0438\u0434\u0434\u043b\u0432\u0430\u0440\u044f\u043c\u0438 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e.<\/p>\n<p><code>traefik.http.middlewares.traefik-mw-auth.basicauth.usersFile=\/etc\/traefik\/secret<\/code><br \/> \u042d\u0442\u0430 \u043c\u0438\u0434\u0434\u043b\u0432\u0430\u0440\u044c \u0443\u043c\u0435\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c <s>\u0431\u043e\u043b\u044c\u043d\u043e<\/s> \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0442\u0438\u043f\u0430 Basic. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0444\u0430\u0439\u043b secret \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u043e\u043b\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b htpasswd, \u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 Traefik \u0431\u0443\u0434\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u0442\u0435\u043c, \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043f\u0430\u0440\u043e\u043b\u044c. \u0413\u0440\u0443\u0441\u0442\u043d\u043e \u044d\u0442\u043e.<\/p>\n<pre><code>htpasswd -\u0441b secret adm adm <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <em>htpasswd<\/em> \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0435\u0451 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 apache2-utils. \u0412 Ubuntu \u044d\u0442\u043e \u0442\u0430\u043a.<\/p>\n<pre><code>sudo apt update &amp;&amp; sudo apt install apache2-utils <\/code><\/pre>\n<p><code>traefik.http.middlewares.traefik-mw-strip.stripprefix.prefixes=\/traefik<\/code><br \/> \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043c\u0438\u0434\u0434\u043b\u0432\u0430\u0440\u044c \u0441 \u0438\u043c\u0435\u043d\u0435\u043c traefik-mw-strip \u043e\u0442\u0440\u0435\u0437\u0430\u0435\u0442 \u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>\/traefik<\/code> \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u0441\u0435\u0440\u0432\u0438\u0441.  \u041d\u0443, \u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0435\u0442\u0435. \u0425\u043e\u0442\u044c \u043e\u0434\u043d\u043e\u0431\u0443\u043a\u0432\u0435\u043d\u043d\u044b\u0439, \u0445\u043e\u0442\u044c UUID. \u0422\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0441\u044f \u0441\u043e \u0441\u043b\u044d\u0448\u0430. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0438\u0434\u0434\u043b\u0432\u0430\u0440\u0435\u0439 <a href=\"https:\/\/doc.traefik.io\/traefik\/middlewares\/http\/overview\/\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435<\/a>.<\/p>\n<p>\u0412\u0441\u0451 \u044d\u0442\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043a\u0430\u043a Traefik \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c IP \u0430\u0434\u0440\u0435\u0441\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c,  \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430\u043f\u0440\u043e\u0441? \u0412 \u0414\u043e\u043a\u0435\u0440\u0435 \u0436\u0435 \u0441\u0435\u0442\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u043e. \u0412\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0430\u0433\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 Docker \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u043d\u0438\u0436\u0435 \u0444\u0430\u0439\u043b\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 <em>traefik.yml<\/em>. \u041d\u0435\u0432\u0430\u0436\u043d\u043e, \u043a\u0430\u043a\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 \u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443.<\/p>\n<h2>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f<\/h2>\n<p>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 TOML \u0438\u043b\u0438 YAML. \u042f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e YAML \u0438 \u043d\u0438\u0436\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0435\u0433\u043e. \u0424\u043b\u043e\u043c\u0430\u0441\u0442\u0435\u0440\u044b \u0443 \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u043d\u044b\u0435.<br \/> \u0424\u0430\u0439\u043b <em>traefik.yml<\/em>:<\/p>\n<pre><code class=\"yaml\">global:   checkNewVersion: true   sendAnonymousUsage: false log:   level: DEBUG # DEBUG, INFO, WARNING, ERROR, CRITICAL   format: common # common, json, logfmt   filePath: \/var\/log\/traefik\/traefik.log accesslog:   format: common # common, json, logfmt   filePath: \/var\/log\/traefik\/access.log api:   dashboard: true entryPoints:   web:     address: \":8080\"     http:       redirections:         entryPoint:           to: websecure           scheme: https           permanent: false   websecure:     address: \":8443\" #  registry: #    address: \":5000\" providers:   docker:     endpoint: \"unix:\/\/\/var\/run\/docker.sock\"     exposedByDefault: false   file:     directory: \/etc\/traefik\/config     watch: true certificatesResolvers:   myresolver:     acme:       email: your-email@example.com       storage: acme.json       tlsChallenge: {} <\/code><\/pre>\n<p>\u041e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u0430\u043a\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u0430\u043a \u043b\u043e\u0433\u0438, \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u044b, \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b, \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u2013 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435, \u0437\u043d\u0430\u0447\u0438\u0442 \u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u044f\u0442\u044c \u0437\u0430 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 Traefik.<\/p>\n<p>\u0420\u0430\u0437\u0434\u0435\u043b <code>global<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a \u0442\u0430\u0431\u0443\u0440\u0435\u0442\u043a\u0430. \u0412\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c.<br \/> \u0420\u0430\u0437\u0434\u0435\u043b <code>log<\/code> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u0443\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u043a\u0443\u0434\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438. \u0412 \u0444\u0430\u0439\u043b\u0435 <em>docker-compose.yml<\/em> \u043e\u043d \u043f\u043e\u043a\u0430 \u0437\u0430\u043c\u0430\u043f\u043b\u0435\u043d \u0432 \u043f\u0430\u043f\u043a\u0443 <code>.\/logs<\/code>, \u0447\u0442\u043e\u0431 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0431\u0435\u0433\u0430\u0442\u044c. \u0410 \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u0448\u0435\u0447\u043a\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0430\u0442\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0446\u0438\u0432\u0438\u043b\u044c\u043d\u044b\u0439 <code>\/var\/log\/traefik<\/code>.<\/p>\n<p>\u041a\u043d\u043e\u043f\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <code>api<\/code>.<\/p>\n<p>\u0420\u0430\u0437\u0434\u0435\u043b <code>entryPoints<\/code>. \u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u044b \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0435\u0442\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0430 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043a \u043d\u0438\u043c \u043d\u0430\u0434\u043e \u0435\u0449\u0451 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 <code>ports:<\/code> \u0444\u0430\u0439\u043b\u0430 <em>docker-compose.yml<\/em>. \u041e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0437\u0434\u0435\u0441\u044c \u0441\u0445\u0435\u043c\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0441 HTTP \u043d\u0430 HTTPS \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u043e\u0443\u0442\u0435\u0440. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0435\u0433\u043e \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c web-to-websecure@internal. \u0410\u0434\u0440\u0435\u0441\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043a\u0440\u0430\u0442\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u0430 \u043f\u043e\u043b\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u2013 0.0.0.0:8443.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 <code>providers<\/code>. \u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 docker \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0432 Traefik \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u043a\u0435\u0442 unix:. \u0410 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e <code>exposedByDefault=false<\/code>, \u0442\u043e Traefik \u0431\u0443\u0434\u0435\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043e <code>traefik.enable=true<\/code>. \u0412\u0435\u0447\u0435\u0440\u0438\u043d\u043a\u0430 \u0434\u043b\u044f \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0445.<br \/> \u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 file. \u0423\u043a\u0430\u0437\u0430\u043d\u0430 \u043f\u0430\u043f\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0433\u0434\u0435 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e \u0434\u043b\u044f Traefik \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0438. \u0412 docker-compose.yml \u044d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u0437\u0430\u043c\u0430\u043f\u043b\u0435\u043d\u0430 \u0432 <code>.\/config<\/code> \u043d\u0430 \u0445\u043e\u0441\u0442\u0435. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043f\u0446\u0438\u044f watch \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430, \u0442\u043e Traefik \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u0444\u0430\u0439\u043b\u0430\u0445. \u041c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0422\u043e\u0433\u0434\u0430 directory \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u043e \u043d\u0430 file \u0438 \u0444\u0430\u0439\u043b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435 \u043d\u0430\u0437\u0432\u0430\u043d \u0438 \u0437\u0430\u043c\u0430\u043f\u043b\u0435\u043d \u0441 \u0445\u043e\u0441\u0442\u0430.<br \/> \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u043d\u0435 \u0434\u0432\u0430, \u0430 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, <a href=\"https:\/\/doc.traefik.io\/traefik\/providers\/overview\/\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0438\u0437 \u043d\u0438\u0445<\/a> \u0443\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0432\u0430\u0448\u0435\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438.<br \/> \u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 <code>certificatesResolvers<\/code>. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Traefik \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Letsencrypt. \u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c. \u0423\u043a\u0430\u0437\u0430\u043d <code>tlsChallenge<\/code> \u043a\u0430\u043a TLS-ALPN-01 challenge \u043d\u0430 443 \u043f\u043e\u0440\u0442\u0435. \u041d\u043e \u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043c.<\/p>\n<h2>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f<\/h2>\n<p>\u0420\u0430\u0437 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e Traefik \u0435\u0441\u0442\u044c \u0434\u0435\u043b\u043e \u0434\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e <code>\/etc\/traefik\/config<\/code>, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043b\u043e\u0436\u0438\u043c \u0442\u0443\u0434\u0430 \u043a\u043e\u043d\u0444\u0438\u0433, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u0445. \u0415\u0441\u043b\u0438 docker compose \u0435\u0449\u0451 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u0441 \u043d\u043e\u0432\u044b\u043c <em>docker-compose.yml<\/em>, \u0442\u043e \u043f\u0430\u043f\u043a\u0438 <em>.\/config<\/em> \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<pre><code>mkdir config nano config\/certificates.yml <\/code><\/pre>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 <em>certificates.yml<\/em><\/p>\n<pre><code class=\"yaml\">tls:   certificates:     - certFile: \/etc\/traefik\/cert\/fullchain.pem       keyFile: \/etc\/traefik\/cert\/privkey.pem       stores:         - default #    - certFile: \/etc\/traefik\/cert\/selfsigned.pem #      keyFile: \/etc\/traefik\/cert\/selfkey.pem #      stores: #        - default   stores:     default:       defaultCertificate:         certFile: \/etc\/traefik\/cert\/fullchain.pem         keyFile: \/etc\/traefik\/cert\/privkey.pem   options:     default:       sniStrict: true <\/code><\/pre>\n<p>\u0412\u044b \u0443\u0436\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c \u043f\u043e \u0438\u043c\u0435\u043d\u0430\u043c \u0444\u0430\u0439\u043b\u043e\u0432, \u0447\u0442\u043e \u043e\u043d\u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438\u0437 Certbot. \u041a\u0441\u0442\u0430\u0442\u0438, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u043a\u043b\u044e\u0447 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0432 \u043f\u0430\u043f\u043a\u0443 <em>.\/cert<\/em>. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0435\u0451 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c. \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0434\u0430\u0436\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e docker compose, \u0442\u0430\u043c \u0432\u0441\u0435 \u043f\u0430\u043f\u043a\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b. \u041f\u043e\u043a\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0438\u0434, \u0447\u0442\u043e Traefik \u043d\u0435 \u043e\u0431\u0443\u0447\u0435\u043d \u0441\u0430\u043c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c ACME challendge \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<p>\u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <code>tls.certificates<\/code> \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043f\u0443\u0442\u0438 \u043a PEM \u0444\u0430\u0439\u043b\u0430\u043c. Traefik \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u044d\u0442\u0438\u043c \u043f\u0443\u0442\u044f\u043c \u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0438\u0442\u0430\u0435\u0442 \u0438 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0432\u0441\u0435 Certificate Subject Alternative Name (SAN) \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0432 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0445. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432 \u043b\u043e\u0433-\u0444\u0430\u0439\u043b\u0435, \u0447\u0435\u0433\u043e \u043e\u043d \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442. \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043d\u044b\u0445. \u0418\u0445 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 YAML \u0438\u043b\u0438 TOML.<\/p>\n<p>\u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <code>tls.stores.default.defaultCertificate<\/code> \u0443\u043a\u0430\u0437\u0430\u043d \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 Traefik \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u0433\u0434\u0430 \u043d\u0438 \u043e\u0434\u0438\u043d \u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u0451\u043b \u043f\u043e\u0434 \u0437\u0430\u043f\u0440\u043e\u0441. \u0415\u0441\u043b\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0435 \u043d\u0435\u0442 \u0438\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043d\u0435\u0442, \u0442\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0438 \u0432\u044b\u0434\u0430\u0441\u0442 \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439. \u041c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0437\u0430 \u044d\u0442\u0438\u043c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0437\u0430\u0439\u0434\u044f \u043d\u0430 <code>https:\/\/traefik.example.com:8443\/traefik\/dashboard\/<\/code> \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044f <em>certificates.yml<\/em> \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0436\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043d\u0435 \u043d\u0430\u0434\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0438\u043c\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0437\u0434\u0435\u0441\u044c \u0432\u044b\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0435 \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430.<\/p>\n<p>\u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <code>tls.options.default<\/code> \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u043e\u043f\u0446\u0438\u044f sniStrict. \u0415\u0441\u043b\u0438 \u043d\u0438 \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u0451\u043b, \u0442\u043e \u0441\u0440\u0430\u0437\u0443 404. \u0417\u0430\u0439\u0434\u0438\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u043f\u043e IP \u0430\u0434\u0440\u0435\u0441\u0443, \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u044f. \u0412\u043e\u043e\u0431\u0449\u0435 TLS \u043e\u043f\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435. \u0415\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, <a href=\"https:\/\/doc.traefik.io\/traefik\/https\/tls\/\" rel=\"noopener noreferrer nofollow\">https:\/\/doc.traefik.io\/traefik\/https\/tls\/<\/a><\/p>\n<p>\u0421\u0430\u043c\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441 \u0440\u043e\u0443\u0442\u0435\u0440\u043e\u043c \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u0434\u043b\u044f \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f Registry \u043d\u0438\u0436\u0435.<\/p>\n<h2>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438<\/h2>\n<p>\u0417\u0434\u0435\u0441\u044c \u0437\u0430\u0442\u0440\u043e\u043d\u0435\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043a\u0440\u0430\u0442\u043a\u043e. \u0412 <em>docker-compose.yml<\/em> \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 traefik-proxy \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u043a\u0446\u0438\u044e <code>env_file:<\/code> \u0443\u043a\u0430\u0437\u0430\u043d \u0444\u0430\u0439\u043b <em>traefik.env<\/em>, \u043a\u0443\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f Traefik. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0442\u0430\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a\u043e\u0435:<br \/> <code>echo TRAEFIK_API_DISABLEDASHBOARDAD=true > traefik.env<\/code><br \/> \u041f\u0440\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043d\u0430 <a href=\"https:\/\/doc.traefik.io\/traefik\/reference\/static-configuration\/env\/\" rel=\"noopener noreferrer nofollow\">https:\/\/doc.traefik.io\/traefik\/reference\/static-configuration\/env\/<\/a><\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e \u043f\u0443\u0442\u044c \u043a \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0443 Traefik:<br \/> <code>https:\/\/traefik.example.com:8443\/traefik\/dashboard\/<\/code>.<br \/> \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0443 \u0432\u0430\u0441 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443 \u0437\u0430\u0449\u0438\u0449\u0451\u043d \u043d\u0435 \u043f\u0430\u0440\u043e\u043b\u0435\u043c adm.<\/p>\n<p>\u0425\u043e\u0442\u044f \u043d\u0435\u0442. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430, \u043a\u0430\u043a \u043e\u043d \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0442 \u0441 HTTP:<br \/> <code>http:\/\/traefik.example.com:8080\/traefik\/dashboard\/<\/code><\/p>\n<p>\u0421 \u043f\u0430\u0446\u0438\u0435\u043d\u0442\u043e\u043c \u0432\u0441\u0451 \u044f\u0441\u043d\u043e. \u0410 \u043c\u043e\u0436\u0435\u0442 \u043e\u043d \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0431\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043d\u043e \u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c?<\/p>\n<h2>\u041f\u0440\u043e\u0431\u0440\u043e\u0441 \u043d\u0430 HTTP \u0441\u0435\u0440\u0432\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 \u0441\u0432\u043e\u0439 HTTPS<\/h2>\n<p>\u0412\u0441\u0435 \u043b\u044e\u0431\u044f\u0442 <s>\u043a\u043e\u0442\u0438\u043a\u043e\u0432<\/s> \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0451\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 Portainer CE \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0435\u0451 \u0447\u0435\u0440\u0435\u0437 :8443\/portainer.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0435\u0439 traefik \u0434\u0440\u0443\u0433\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0438 \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u0447\u043d\u043e \u043d\u0430\u0437\u043e\u0432\u0438\u0442\u0435 \u0435\u0451 portainer.<\/p>\n<pre><code>cd .. mkdir portainer nano portainer\/docker-compose.yml <\/code><\/pre>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 <em>docker-compose.yml<\/em><\/p>\n<pre><code class=\"yaml\">version: \"3\" services:   portainer:     image: portainer\/portainer-ce:2.18.4-alpine     container_name: portainer     command: -H unix:\/\/\/var\/run\/docker.sock     restart: unless-stopped     security_opt:       - no-new-privileges:true     expose:       - 9000       - 9443     volumes:       - \/var\/run\/docker.sock:\/var\/run\/docker.sock       - .\/data\/:\/data\/     labels:       - \"traefik.enable=true\"       - \"traefik.docker.network=poportainer\"       - \"traefik.http.routers.portainer-http-router.entrypoints=websecure\"       - \"traefik.http.routers.portainer-http-router.rule=Host(`traefik.example.com`) &amp;&amp; (PathPrefix(`\/portainer`)\"       - \"traefik.http.routers.portainer-http-router.service=portainer-http-service\"       - \"traefik.http.routers.portainer-http-router.tls=true\"       - \"traefik.http.routers.portainer-http-router.middlewares=portainer-mw-strip\"       - \"traefik.http.middlewares.portainer-mw-strip.stripprefix.prefixes=\/portainer\"       - \"traefik.http.services.portainer-http-service.loadbalancer.server.port=9000\"       # SANs       #- \"traefik.http.routers.portainer-http-router.tls.certresolver=myresolver\"       - \"traefik.http.routers.portainer-http-router.tls.domains[0].main=traefik.example.com\"       - \"traefik.http.routers.portainer-http-router.tls.domains[0].sans=traefik.example.com,kifeart.example.com\"     networks:       portainer-used:       portainer-unused: networks:   portainer-used:     name: poportainer   portainer-unused: <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043a\u0430\u0441\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0442\u043e\u043a, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u043b\u044f Traefik, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0442\u0430\u043b\u0438. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 Portainer \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0442 Docker \u0442\u0430\u043a \u0436\u0435 \u0447\u0435\u0440\u0435\u0437 unix: \u0441\u043e\u043a\u0435\u0442. \u041f\u043e\u0440\u0442\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 <code>ports:<\/code>, \u0430 \u0447\u0435\u0440\u0435\u0437 <code>expose:<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0430\u0434\u043e. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0442\u0435\u0439, \u0447\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0431\u044b\u0432\u0430\u0435\u0442 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 compose \u0441\u0431\u043e\u0440\u043a\u0430\u0445. \u0418 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043a\u0438 <code>traefik.docker.network<\/code>, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0448 \u043f\u0440\u043e\u043a\u0441\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u043b \u0438 \u043d\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<p>\u0421 \u0441\u0430\u043c\u0438\u043c\u0438 \u043c\u0435\u0442\u043a\u0430\u043c\u0438, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0443\u0436\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043f\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0447\u0435\u0433\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 Traefik. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043c \u043d\u0430 \u043d\u043e\u0432\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435.<\/p>\n<ul>\n<li>\n<p>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0435\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u044f\u0432\u043d\u043e \u0437\u0430\u0434\u0430\u043d\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0440\u043e\u0443\u0442\u0435\u0440 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c portainer-http-router \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430 \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u043e\u043c websecure;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0434\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0445\u043e\u0441\u0442 <code>traefik.example.com<\/code> \u0441 \u043f\u0443\u0442\u0451\u043c, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u043c\u0441\u044f \u043d\u0430 \/portainer;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u043d\u0430 \u043c\u0438\u0434\u0434\u043b\u0432\u0430\u0440\u044c portainer-mw-strip \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0442\u0440\u0438\u0436\u043a\u0438 \u044d\u0442\u043e\u0433\u043e &#8216;\/portainer&#8217;.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u043a\u0438\u0434\u0430\u0435\u0442 \u0440\u043e\u0443\u0442\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0440\u0432\u0438\u0441, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u0440\u043e\u0443\u0442\u0435\u0440\u0435. \u0421\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u044d\u0442\u0438\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f portainer-http-service \u043d\u0430 9000 \u043f\u043e\u0440\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Portainer \u0432 \u0432\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0432 \u0434\u043e\u043c\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b \u0414\u0436\u0435\u043a.<\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043e\u0431\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u043e\u043d\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u043f\u0430\u043f\u043a\u0435, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0447\u0435\u0440\u0435\u0437 \u044f\u0432\u043d\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 <em>docker-compose.yml<\/em> \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code>sudo docker compose -f ~\/portainer\/docker-compose.yml -p portainer up -d sudo docker compose -f ~\/traefik\/docker-compose.yml -p traefik up -d <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u043a\u0430\u043a\u043e\u043c-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043f\u043e\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0442\u0438 \u043a\u0430\u043a \u043d\u0430\u0434\u043e. \u0415\u0441\u043b\u0438 \u0434\u0443\u0448\u0430 \u043f\u0440\u043e\u0441\u0438\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043d\u0443\u0436\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0442\u0430\u043c <code>docker compose up -d<\/code>, \u0442\u043e \u0442\u0430\u043a \u0438 \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435. \u041f\u043e \u0438\u0434\u0435\u0435 \u0447\u0442\u043e-\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u043b\u043e\u0441\u044c \u043d\u0430 <code>https:\/\/traefik.example.com:8443\/portainer<\/code>.<\/p>\n<p>\u041d\u0443 \u0438? \u041d\u0430 \u0447\u0442\u043e \u043f\u043e\u0445\u043e\u0436 Portainer? \u041d\u0430 404? \u0414\u0430. \u042d\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 traefik \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u0441\u0435\u0442\u044c poportainer. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u044b \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u0438\u043c\u044f \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438 \u0441\u0435\u0442\u0438, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438:<\/p>\n<pre><code>sudo docker network connect poportainer traefik <\/code><\/pre>\n<p>\u0410 \u0442\u0430\u043a \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0431 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0438\u043c\u0435\u043d\u0430\u0445 portainer_portainer-used \u0438 traefik-traefik-proxy-1. \u0415\u0441\u043b\u0438 \u0441\u0432\u044f\u0437\u043a\u0430 Traefik-Portainer \u043d\u0443\u0436\u043d\u0430 \u043d\u0435 \u043d\u0430 \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442, \u0430 \u043a\u0430\u043a \u0434\u043e\u043b\u0433\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0443\u0434\u043e\u0431\u043d\u0435\u0439 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u0432 <em>traefik\/docker-compose.yml<\/em>.<\/p>\n<pre><code class=\"yaml\">services:   traefik-proxy:   # ...     networks:       poportainer: networks:   poportainer:     external: true <\/code><\/pre>\n<p>\u0422\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 Portainer, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0435\u0442\u044c \u0441 \u0442\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0442\u0430\u043c. \u0418\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0439 \u0440\u0443\u043a\u0430\u043c\u0438 \u0438 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u0442 external.<br \/> \u0414\u043e\u0441\u0442\u0443\u043f \u043f\u043e\u043b\u0443\u0447\u0435\u043d, traefik \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0449\u0435\u043d, \u043d\u0430 <code>https:\/\/traefik.example.com:8443\/portainer<\/code> \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u043b\u043e\u0433\u0438\u043d\u0438\u0442\u044c\u0441\u044f. \u041b\u043e\u0433\u0438\u043d admin, \u043f\u0430\u0440\u043e\u043b\u044c admin. \u041f\u043e\u043c\u0435\u043d\u044f\u0439\u0442\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 Settings \/ Users. \u041a\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0441\u0442\u0430\u043b, \u0442\u043e\u0433\u043e \u0438 \u0442\u0430\u043f\u043a\u0438. \u041f\u043e\u0441\u043b\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u0432 Home \/ primary \/ Networks \/ poportainer. \u0412\u043e\u0442 \u043e\u043d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u0440\u0443\u0434\u043e\u0432 &#8212; \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 traefik \u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u0442\u0438 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 \u0430\u0434\u0440\u0435\u0441. \u0418 \u0445\u043e\u0442\u044c \u0432 \u0441\u0435\u0442\u0438 portainer_portainer-unused \u0438 \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d\u043e\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043d\u043e Traefik \u043e\u043d \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442. \u0412 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u0441\u0430\u043c\u043e\u0433\u043e Traefik \u0435\u0441\u0442\u044c HTTP \u0441\u0435\u0440\u0432\u0438\u0441 portainer-http-service@docker \u0441 IP \u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 portainer \u0432 \u0441\u0435\u0442\u0438 poportainer. \u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 Docker!<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438. \u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u043e\u0434\u0438\u043d\u043e\u043a\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>TRAEFIK_API_DISABLEDASHBOARDAD<\/code> \u0434\u043b\u044f Traefik? \u0415\u0451 \u0442\u0443\u0442 \u0432\u0438\u0434\u043d\u043e \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.<\/p>\n<h2>\u041f\u0440\u043e\u0431\u0440\u043e\u0441 TCP \u043d\u0430 HTTPS<\/h2>\n<p>\u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0442\u044c \u043d\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u043b\u044e\u0431\u043e\u0439 Squid \u0443\u043c\u0435\u0435\u0442. \u0410 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u0442 \u0441\u0432\u043e\u0438 TLS \u0441\u0435\u0441\u0441\u0438\u0438? \u041c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 TCP, \u043d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u0441\u0435\u0441\u0441\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0432\u044b\u0431\u043e\u0440 \u0442\u043e\u043f\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u043a\u0430\u0448\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430: <code>HostSNI(``)<\/code>, <code>HostSNIRegexp(``)<\/code>, <code>ClientIP(``)<\/code>, <code>ALPN(``)<\/code>. \u0417\u0430\u0442\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 Traefik TCP \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434 HTTP, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0442\u044c \u0440\u043e\u0443\u0442\u0435\u0440\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u0435 \u0441 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c.<\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0432\u044b \u043e\u0431\u0440\u0430\u0442\u0438\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 expose \u0443 Portainer \u0443\u043a\u0430\u0437\u0430\u043d \u0442\u0430\u043a\u0436\u0435 \u0438 9443? Portainer \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u0440\u0442\u0435 HTTPS \u0432\u0435\u0440\u0441\u0438\u044e, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043a \u043d\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f. \u041d\u043e \u043c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f. \u0415\u0441\u043b\u0438 \u0432 (Portainer) Settings \/ SSL certificate \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043a\u043b\u044e\u0447\u0430 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430, \u0442\u043e \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043f\u0440\u043e\u0442\u0438\u0432 \u0432\u0430\u0441 \u0432 TLS \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0434\u0430\u0432\u0430\u0442\u044c, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430 localhost. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 <em>portainer\/docker-compose.yml<\/em> \u0432 \u0441\u0435\u043a\u0446\u0438\u044e labels \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u043e\u0442 \u044d\u0442\u0438 TCP labels, \u0432\u044b\u0440\u043e\u0432\u043d\u044f\u0439\u0442\u0435 \u0438\u0445 \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438, \u043a\u0430\u043a \u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 YAML:<\/p>\n<pre><code class=\"yaml\">    labels:     #...       - \"traefik.tcp.routers.portainer-tcp-router.entrypoints=websecure\"       - \"traefik.tcp.routers.portainer-tcp-router.rule=!ClientIP(`8.8.8.8`)\"  #     - \"traefik.tcp.routers.portainer-tcp-router.rule=ClientIP(`0.0.0.0\/0`)\"  #     - \"traefik.tcp.routers.portainer-tcp-router.rule=HostSNI(`megatest.example.com`)\"       - \"traefik.tcp.routers.portainer-tcp-router.tls.passthrough=true\"       - \"traefik.tcp.routers.portainer-tcp-router.service=portainer-tcp-service\"       - \"traefik.tcp.services.portainer-tcp-service.loadbalancer.server.port=9443\" <\/code><\/pre>\n<p>\u0418 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435.<\/p>\n<pre><code>sudo docker compose -f ~\/portainer\/docker-compose.yml -p portainer up -d <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0430 SNI, \u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u043e\u0434\u0448\u0430\u043c\u0430\u043d\u0438\u0442\u044c \u0432 hosts \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u0438\u043b\u0438 \u043d\u0430 DNS \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u043c \u0437\u0430 \u0432\u0430\u0448 \u0434\u043e\u043c\u0435\u043d. \u0418\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u0435 \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 <code>traefik.example.com<\/code>. \u0414\u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u0442 HTTPS \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Portainer \u043d\u0438\u0447\u0435\u0433\u043e \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u041f\u0440\u043e\u0441\u0442\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u0436\u0438\u0432, Traefik \u0441 \u043d\u0438\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442 (TCP to HTTPS) \u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 localhost. \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043a\u0438 TCP \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u043f\u043e \u0441\u043c\u044b\u0441\u043b\u0443 \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u043a\u0430\u043a HTTP.<\/p>\n<ul>\n<li>\n<p>\u0420\u043e\u0443\u0442\u0435\u0440 portainer-tcp-router \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u043e\u043c websecure,<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u0442\u0430\u043c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u043e &#171;\u043b\u044e\u0431\u043e\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u043a\u0440\u043e\u043c\u0435 \u0413\u0443\u0433\u043b\u0430&#187;,<\/p>\n<\/li>\n<li>\n<p>\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0443\u0436\u0435 \u043d\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0430 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0430 \u0441\u0435\u0440\u0432\u0438\u0441 portainer-tcp-service, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0442\u0430\u043a \u0443\u0434\u0430\u0447\u043d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 portainer. \u0412 \u0434\u043e\u043c\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b \u0414\u0436\u0435\u043a.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u044d\u0442\u043e rule=!ClientIP(<code>8.8.8.8<\/code>). \u041e\u043d\u043e \u0436\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u043b\u043e HTTP \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0443 \u0438 Portainer.<\/p>\n<h2>HTTPS over IP<\/h2>\n<p>\u0424\u0430\u043a\u0443\u043b\u044c\u0442\u0430\u0442\u0438\u0432, \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0447\u0438\u0442\u0430\u0442\u044c. \u041f\u0440\u043e Traefik \u0442\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e. \u041d\u043e\u0432\u043e\u0435 \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043f\u0440\u043e Docker, Portainer \u0438 Registry. \u041f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0433\u0440\u0430\u0431\u043b\u044f\u043c\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c Traefik \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u043e\u0447\u044c.<\/p>\n<p>\u0412\u044b \u0443\u0436\u0435 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043e\u0431\u043b\u0430\u0437\u0438\u043b\u0438 Portainer \u0438 \u043d\u0430\u0448\u043b\u0438 \u0442\u0430\u043c \u0441\u0435\u043a\u0446\u0438\u044e App Templates. \u0410 \u0432 \u043d\u0435\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 Registry. \u0414\u0430, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 Docker \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0434\u0432\u0443\u043c\u044f \u043a\u043b\u0438\u043a\u0430\u043c\u0438. \u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0438\u0442\u0435, \u0437\u0430\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u0432 \u043d\u0435\u0433\u043e, \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 IP \u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b Settings \/ Registries. \u0422\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 custom registry \u0438 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 IP \u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u043e\u0440\u0442. \u041a\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u043e, \u0447\u0442\u043e Portainer \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e 5000 \u043f\u043e\u0440\u0442 \u0432 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0435! \u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0440\u0435\u0431\u044f\u0442\u0430 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u0432\u043e\u043f\u0440\u043e\u0441\u0435. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b Containers. \u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c Registry \u0432 Registry? \u0412\u043e\u0442 \u0443\u043c\u043e\u0440\u0430 \u0442\u043e! \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 (\u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439), \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 Create image \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435 Registry \u043d\u0430 \u0441\u0432\u043e\u0439 \u043d\u043e\u0432\u0435\u043d\u044c\u043a\u0438\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439, \u0437\u0430\u0434\u0430\u0439\u0442\u0435 \u0438\u043c\u044f \u043e\u0431\u0440\u0430\u0437\u0430 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435 Create. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0436\u0435\u043b\u0430\u043d\u0438\u0439 \u043f\u043e\u0440\u0430\u0436\u0430\u0435\u0442. \u041e\u0431\u0440\u0430\u0437 \u0433\u043e\u0442\u043e\u0432, \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0435\u0433\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 Images, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0439\u0442\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u0440\u0435\u0435\u0441\u0442\u0440 (\u043a\u043d\u043e\u043f\u043a\u0430 Push \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 Image tags). \u0410\u0433\u0430&#8230; &#171;Failure, http: server gave HTTP response to HTTPS client&#187;. \u0414\u0430 \u0433\u0434\u0435 \u044f \u0442\u0435\u0431\u0435 HTTPS response \u0432\u043e\u0437\u044c\u043c\u0443, \u0441\u043e\u0431\u0430\u043a\u0430? \u041c\u043e\u0436\u0435\u0442, \u0432 \u043a\u043e\u043d\u0441\u0435\u0440\u0432\u0430\u0442\u043e\u0440\u0438\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u0432 Settings \/ Registries \u0438 \u0447\u0451\u0442\u043a\u043e \u043d\u0435\u0434\u0432\u0443\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043c URL \u043a\u0430\u043a http. \u0410 \u0442\u0430\u043c \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043d\u0430 \u0437\u043d\u0430\u043a \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0435\u0442 \u0447\u0451\u0442\u043a\u043e\u0435 \u0438 \u043d\u0435\u0434\u0432\u0443\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0435 &#171;Any protocol or trailing slash will be stripped if present.&#187; \u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0442\u044a. \u041f\u043e\u0431\u0435\u0434\u0430 \u0431\u044b\u043b\u0430 \u0442\u0430\u043a \u0431\u043b\u0438\u0437\u043a\u0430. \u041b\u0430\u0434\u043d\u043e, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043a\u0443\u0440\u0438\u0442\u044c <a href=\"https:\/\/docs.docker.com\/registry\/insecure\/\" rel=\"noopener noreferrer nofollow\">\u043c\u0430\u043d\u0443\u0430\u043b<\/a>.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0441\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0441 <em>\/etc\/docker\/daemon.json<\/em> \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0434\u043b\u044f Portainer. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c Docker \u0447\u0442\u043e-\u0442\u043e \u0441\u0435\u0431\u0435 \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442, \u043d\u043e Portainer \u0441\u0432\u043e\u0451 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442. \u0410 \u0432\u043e\u0442 \u0441 \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0436\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0439, \u0438 Traefik \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c. \u041c\u043d\u0435 \u043f\u043e\u043d\u0430\u0447\u0430\u043b\u0443 \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0437\u044f\u0442\u044c <em>portainer:\/etc\/ssl\/certs\/ca-certificates.crt<\/em>, \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0441\u0432\u043e\u0439 \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u043c\u0435\u0441\u0442\u043e. \u041d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c. \u0421\u043f\u043e\u0441\u043e\u0431 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0439. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0436\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443. \u041f\u043b\u0430\u043d \u0440\u0430\u0431\u043e\u0442 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<ul>\n<li>\n<p>\u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c Registry \u0431\u0435\u0437 \u043c\u0430\u043f\u043f\u0438\u043d\u0433\u0430 \u043f\u043e\u0440\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u0432 Traefik \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442 :5000<\/p>\n<\/li>\n<li>\n<p>\u0432 Traefik \u0441\u043e\u0437\u0434\u0430\u0442\u044c HTTP \u0441\u0435\u0440\u0432\u0438\u0441 registry<\/p>\n<\/li>\n<li>\n<p>\u0432 Traefik \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 HTTP \u0440\u043e\u0443\u0442\u0435\u0440 :5000 &lt;-> registry<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0438 \u0432 <em>traefic\/cert<\/em> \u0438 <em>\/etc\/docker\/certs.d\/192.168.100.100:5000\/<\/em> \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c ca.crt, \u043f\u0440\u0438\u0447\u0451\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u043f\u043e\u0440\u0442\u0430, \u0432\u0441\u0451 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c Portainer \u043f\u043e \u043d\u043e\u0432\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c Registry \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e Portainer \u043c\u0438\u043b\u043e \u043c\u0430\u043f\u0438\u0442 \u0432 \u043d\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0445\u043e\u0441\u0442\u0430. \u0410 Docker \u0443\u0441\u043b\u0443\u0436\u043b\u0438\u0432\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442 \u043d\u0430 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. \u041c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c <code>http:\/\/traefik.example.com:&lt;random port>\/v2\/_catalog<\/code> &#8212; \u0433\u0434\u0435 \u0432\u043c\u0435\u0441\u0442\u043e <code>&lt;random port><\/code> \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u043e \u0445\u043e\u0441\u0442\u0443 \u0432 <code>0.0.0.0:&lt;random port><\/code> \u0443 \u0432\u0430\u0448\u0435\u0433\u043e Registry.<\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0442, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f. \u0412 Portainer \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 Registry, \u043e\u0442\u043c\u0435\u0442\u044c\u0442\u0435 \u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 Remove. \u0417\u0430\u0442\u0435\u043c \u0441\u043d\u043e\u0432\u0430 App Templates -> Registry, \u0432\u043f\u0438\u0448\u0438\u0442\u0435 \u0438\u043c\u044f <code>registry<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u043e \u043f\u043e\u0437\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0435\u0442\u044c <code>traefik<\/code>. \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 Show advanced options, \u0432 \u043e\u0442\u043a\u0440\u044b\u0432\u0448\u0435\u043c\u0441\u044f \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u043f\u043e\u0440\u0442 \u043c\u0430\u043f\u043f\u0438\u043d\u0433 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 Deploy the container. \u041f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0434\u0435\u043b\u0430 \u0441\u0434\u0435\u043b\u0430\u043d\u0430.<\/p>\n<p>\u0412\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 <em>traefik\/docker-compose.yml<\/em> \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0431\u0438\u0442\u044c \u0433\u0432\u043e\u0437\u0434\u044f\u043c\u0438 ipv4_address \u0438 subnet? \u042d\u0442\u043e \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e. \u0412 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0435 \u043c\u0430\u0433\u0438\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 Docker \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c IP \u0430\u0434\u0440\u0435\u0441 \u0440\u0430\u0437 \u0438 \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430. \u0417\u0430\u043e\u0434\u043d\u043e \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0441\u0435\u0434\u0443 Registry \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c 192.168.100.2 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0420\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0442\u0435 ipv4_address \u0438 \u0432\u0441\u0451 \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 networks \u043e\u0442 ipam \u0434\u043e gateway. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.<\/p>\n<pre><code>sudo docker stop traefik sudo docker rm traefik <\/code><\/pre>\n<p>\u042d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0442\u0430\u043a\u0436\u0435 \u0444\u0430\u0439\u043b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 <em>traefik\/traefik.yml<\/em>, \u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442 <code>registry<\/code> \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 (0.0.0.0:5000).<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u0441\u044f \u0440\u043e\u0443\u0442\u0435\u0440, \u0441\u0435\u0440\u0432\u0438\u0441 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442. \u041a\u0430\u043a \u0432\u0441\u0451 \u0441\u043b\u043e\u0436\u043d\u043e.<\/p>\n<pre><code>nano traefic\/config\/registry.yml <\/code><\/pre>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 <em>registry.yml<\/em><\/p>\n<pre><code class=\"yaml\">http:   routers:     registry-http-router:       rule: Host(`192.168.100.100`)       entrypoints:         - registry       service: registry-http-service       tls:         domains:           - main: \"IP:192.168.100.100\"             sans: \"IP:192.168.100.100\" #        certResolver: do-not-use-it   services:     registry-http-service:       loadBalancer:         servers:           - url: http:\/\/192.168.100.2:5000 tls:   certificates:     - certFile: \/etc\/traefik\/cert\/192.168.100.100-cer.pem       keyFile: \/etc\/traefik\/cert\/192.168.100.100-key.pem <\/code><\/pre>\n<p>\u041f\u0440\u043e\u0448\u0443 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 url \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0418 http, \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u043e\u0440\u0442.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. \u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Docker, \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u0441\u0440\u043e\u043a \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0438 \u0432\u0443\u0430\u043b\u044f. \u041c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0432 <em>traefic\/cert<\/em>, \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0438\u0433\u0434\u0435 \u043a\u0440\u043e\u043c\u0435 Portainer \u043e\u043d \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.<\/p>\n<pre><code>cd traefic\/cert openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 \\   -nodes -keyout 192.168.100.100-key.pem -out 192.168.100.100-cer.pem -subj \"\/CN=192.168.100.100\" \\   -addext \"subjectAltName=IP:192.168.100.100\" <\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0435 CA:TRUE?<\/p>\n<pre><code>openssl x509 -in 192.168.100.100-cer.pem -noout -text <\/code><\/pre>\n<p>\u0414\u0430 \u043a\u0443\u0434\u0430 \u0434\u0435\u043d\u0435\u0442\u0441\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0435\u0441\u0442\u044c. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Traefik, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043e\u0442\u043a\u0440\u044b\u043b \u043d\u043e\u0432\u044b\u0439 \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442 \u0438 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b \u043d\u0430 <code>192.168.100.100<\/code>. \u0422\u0430\u043a-\u0442\u043e \u0440\u043e\u0443\u0442\u0435\u0440, \u0441\u0435\u0440\u0432\u0438\u0441 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0443\u0436\u0435 \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u043b\u0438\u0441\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0418 \u0441\u043b\u0435\u0434\u043e\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 Registry. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0443 \u043d\u0435\u0433\u043e \u043f\u043e\u043a\u0430 \u0435\u0449\u0451 <code>192.168.100.3<\/code> \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430. \u041c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 Portainer. \u041d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0439\u0434\u0451\u0442 \u043d\u0435 \u0442\u0430\u043a:<\/p>\n<pre><code>sudo docker compose -f ~\/traefik\/docker-compose.yml -p traefik up -d <\/code><\/pre>\n<p>\u0412 Portainer \u043f\u0435\u0440\u0435\u043f\u0438\u0448\u0438\u0442\u0435 URL \u0441\u0432\u043e\u0435\u0433\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e custom registry \u0442\u0443\u0434\u0430, \u0433\u0434\u0435 \u0436\u0434\u0451\u0442 traefik, \u043d\u0430 <code>192.168.100.100:5000<\/code>. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u044d\u0442\u043e \u0432 Settings \/ Registries. \u0421\u043d\u043e\u0432\u0430 \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0438 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u0432 Images, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435 Registry \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0442\u0435\u0433 \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0439\u0442\u0435\u0441\u044c \u0437\u0430\u043f\u0443\u0448\u0438\u0442\u044c \u043f\u043e\u0434 \u044d\u0442\u0438\u043c \u043d\u043e\u0432\u044b\u043c \u0442\u0435\u0433\u043e\u043c. \u0427\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 <code>192.168.100.100:5000\/reg:latest<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0438\u0448\u0435\u0442 &#171;certificate signed by unknown authority&#187;. \u0422\u043e \u0435\u0441\u0442\u044c \u043a\u0442\u043e-\u0442\u043e \u043d\u0430\u0448\u0451\u043b \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0434\u043b\u044f IP 192.168.100.100 \u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u0435\u0433\u043e \u0432 TLS \u0441\u0435\u0441\u0441\u0438\u044e. \u041a\u0442\u043e \u0431\u044b \u044d\u0442\u043e \u043c\u043e\u0433 \u0431\u044b\u0442\u044c?<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c Portainer \u0443\u0432\u0430\u0436\u0430\u0442\u044c \u043d\u0430\u0448 \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u044b\u0439 \u0432 \u0443\u0437\u043a\u0438\u0445 \u043a\u0440\u0443\u0433\u0430\u0445 CA. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 Docker.<\/p>\n<pre><code>sudo mkdir \/etc\/docker\/certs.d\/192.168.100.100:5000 sudo ln -s $PWD\/192.168.100.100-cer.pem \/etc\/docker\/certs.d\/192.168.100.100:5000\/ca.crt <\/code><\/pre>\n<p>\u0423\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0437\u0430\u043f\u0443\u0448\u0438\u0432 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043e\u0431\u0440\u0430\u0437. \u0412\u043e\u0442 \u0442\u0430\u043a Traefik \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f HTTPS \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u0435\u043c HTTP \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451. \u041a\u043e\u0433\u0434\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0435 \u0438 \u043e\u0442\u043f\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0441\u0432\u043e\u0435\u0433\u043e Traefik, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 log level \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 WARNING \u0438\u043b\u0438 INFO, \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u044b \u043d\u0430 :80 \u0438 :443 \u0438\u043b\u0438 \u043c\u043e\u0436\u0435\u0442 \u043a\u0430\u043a\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435, \u043c\u0430\u043f\u043f\u0438\u043d\u0433 \u043b\u043e\u0433\u043e\u0432 \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u043f\u043e\u0434\u0430\u043b\u044c\u0448\u0435 \u0432 <em>\/var\/log\/traefik<\/em>, \u043f\u043e\u0434\u043f\u0438\u0448\u0438\u0442\u0435\u0441\u044c \u043d\u0430 \u043c\u043e\u0439 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c \u043a\u0430\u043d\u0430\u043b \u0441 \u043a\u0443\u0440\u0441\u0430\u043c\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0443\u0441\u043f\u0435\u0445\u0430. \u0415\u0433\u043e \u043f\u043e\u043a\u0430 \u043d\u0435\u0442, \u043d\u043e \u044d\u0442\u043e, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0448\u0430\u0442\u044c&#8230;<\/p>\n<p>\u2013 \u041f\u043e\u0441\u0442\u043e\u0439, \u0430 \u043a\u0430\u043a \u0436\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b Letsencrypt?<br \/> \u2013 \u0410 \u0443\u0436\u0435 \u0432\u0441\u0451 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e. \u041f\u043e\u0447\u0442\u0438. \u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 email \u0432\u043f\u0438\u0448\u0438\u0442\u0435 \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440\u0443 myresolver \u0432 \u0444\u0430\u0439\u043b\u0435 <em>traefik.yml<\/em> \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e. \u0422\u0435 \u0440\u043e\u0443\u0442\u0435\u0440\u044b \u0441 tls=true, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440, \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 tls.domains.main, \u043a\u0430\u043a\u043e\u0435 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442. \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0438 \u0432\u0441\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0432 tls.domains.sans. \u0418 \u0442\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u0436\u0434\u0443\u0449\u0438\u0445, \u043e\u0431\u0440\u0430\u0442\u0438\u0432\u0448\u0438\u0445\u0441\u044f \u043a myresolver, \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u044b \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b. \u0412 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043b\u0438\u043c\u0438\u0442\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a <code>acme-v02.api.letsencrypt.org<\/code>. \u041f\u0440\u0438\u043c\u0435\u0440 label \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 <em>docker-compose.yml<\/em> \u043d\u0438\u0436\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430 # SANs, \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 <em>registry.yml<\/em> \u043a\u0430\u043a \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0435\u043d\u0442. \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c: <a href=\"https:\/\/doc.traefik.io\/traefik\/https\/acme\/\" rel=\"noopener noreferrer nofollow\">https:\/\/doc.traefik.io\/traefik\/https\/acme\/<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/757820\/\"> https:\/\/habr.com\/ru\/articles\/757820\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0435\u0431\u0435 reverse proxy \u0438\u043b\u0438 load balancer \u0438 \u0445\u043e\u0447\u0435\u0442 \u043f\u0440\u0438\u0433\u043b\u044f\u0434\u0435\u0442\u044c\u0441\u044f \u043a Traefik v2 \u0432 \u044d\u0442\u043e\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 Docker \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0430\u043a \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e HTTPS \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0430\u043a \u0438 \u043f\u0440\u043e\u0431\u0440\u043e\u0441 TCP \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430 HTTPS \u0441\u0435\u0440\u0432\u0435\u0440. \u0411\u0435\u0437 Kubernetes, \u0431\u0435\u0437 SWARM.<\/p>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d Docker, \u0432\u044b \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 compose \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0443\u043c\u0435\u0435\u0442\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u043f\u043b\u0430\u043d \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0442\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u044d\u0442\u043e.<\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Traefik.<\/h2>\n<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u043a\u0430 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0440\u0442\u044b 8080 \u0438 8443, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u0448\u0435\u0447\u043a\u0430\u0445, \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b. \u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430. \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Traefik \u0432\u043e\u043e\u0431\u0449\u0435 \u0431\u0435\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a?<\/p>\n<pre><code>mkdir traefik &amp;&amp; cd traefik nano docker-compose.yml <\/code><\/pre>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 <em>docker-compose.yml<\/em><\/p>\n<pre><code class=\"yaml\">version: '3' services:   traefik:     image: traefik:v2.10.4 <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u0445\u043b\u0430\u043c\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0437\u0430\u043c\u0438. \u0421 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0430 \u0441 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u044b\u043b\u0430 2.10.4. \u042e\u0440\u0430, \u043f\u043e\u0435\u0445\u0430\u043b\u0438!<\/p>\n<pre><code>sudo docker compose -p traefik up -d <\/code><\/pre>\n<p>\u0427\u0442\u043e-\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u043b\u043e\u0441\u044c, \u0441\u043e\u0437\u0434\u0430\u043b\u043e\u0441\u044c, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u043e\u0441\u044c. \u0412\u0440\u043e\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0438\u0447\u0442\u043e \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u043e\u0442\u0432\u0430\u043b\u0438\u043b\u043e\u0441\u044c. \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u043c. \u041f\u043e\u0440\u0430 \u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044c \u0431\u043b\u044d\u043a\u0434\u0436\u0435\u043a. \u0412 \u0441\u043c\u044b\u0441\u043b\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434, \u043f\u043e\u0440\u0442\u044b, \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0438\u0437 \u043c\u0435\u0442\u043e\u043a, \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0418 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441 \u043a\u043b\u044e\u0447\u043e\u043c. \u0412\u0435\u0434\u044c \u043e\u043d \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043f\u0440\u0430\u0432\u0434\u0430? \u0422\u0443\u0442, \u043a\u0441\u0442\u0430\u0442\u0438, \u0443 Traefik \u0435\u0441\u0442\u044c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u0430\u044f \u043c\u043e\u0437\u043e\u043b\u044c. \u041a\u043e\u0433\u0434\u0430 \u043e\u043d \u0441\u0430\u043c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0443 ACME \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0435\u0433\u043e \u0432 JSON \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u0418 \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u043a\u0430\u043a\u0438\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0440\u0443\u0433\u0438\u043c HTTPS \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c, \u0442\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0432\u044b\u0434\u0438\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0437 JSON \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u043c PEM \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u0411\u043b\u0430\u0433\u043e, \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0435\u0441\u0442\u044c. \u041c\u043e\u0436\u043d\u043e \u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043b\u0435\u043d\u044c. \u0422\u0430\u043c \u0442\u043e\u0442 \u0436\u0435 PEM \u0432 \u0432\u0438\u0434\u0435 \u043e\u0434\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>\u0424\u0430\u0439\u043b <em>docker-compose.yml<\/em> \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043a\u0430\u0445:<\/p>\n<pre><code class=\"yaml\">version: '3' services:   traefik-proxy:     image: traefik:v2.10.4     container_name: traefik     restart: unless-stopped     security_opt:       - no-new-privileges:true     env_file:       - traefik.env     ports:       - 8080:8080       - 8443:8443     volumes:       - \/etc\/localtime:\/etc\/localtime:ro       - \/var\/run\/docker.sock:\/var\/run\/docker.sock:ro       - .\/logs\/:\/var\/log\/traefik\/       - .\/traefik.yml:\/etc\/traefik\/traefik.yml:ro       - .\/config\/:\/etc\/traefik\/config\/:ro       - .\/cert\/:\/etc\/traefik\/cert\/:ro       - .\/secret:\/etc\/traefik\/secret:ro     labels:       - \"traefik.enable=true\"       - \"traefik.http.routers.traefik-http-router.entrypoints=websecure\"       - \"traefik.http.routers.traefik-http-router.rule=Host(`traefik.example.com`) &amp;&amp;      (PathPrefix(`\/traefik`) ||   Headers(`Referer`, `https:\/\/traefik.example.com:8443\/traefik\/dashboard\/`))\"       - \"traefik.http.routers.traefik-http-router.tls=true\"       - \"traefik.http.routers.traefik-http-router.service=api@internal\"       - \"traefik.http.routers.traefik-http-router.middlewares=traefik-mw-auth,traefik-mw-strip\"       - \"traefik.http.middlewares.traefik-mw-auth.basicauth.usersFile=\/etc\/traefik\/secret\"       - \"traefik.http.middlewares.traefik-mw-strip.stripprefix.prefixes=\/traefik\"       # SANs       #- \"traefik.http.routers.traefik-http-router.tls.certresolver=myresolver\"       - \"traefik.http.routers.traefik-http-router.tls.domains[0].main=traefik.example.com\"       - \"traefik.http.routers.traefik-http-router.tls.domains[0].sans=traefik.example.com,kifeart.example.com\"     networks:       traefik-bridge: #        ipv4_address: 192.168.100.100 networks:   traefik-bridge:     name: traefik #    ipam: #      config: #        - subnet: 192.168.100.0\/24 #          gateway: 192.168.100.1 <\/code><\/pre>\n<p>\u041f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438, \u043f\u043e\u0440\u0442\u044b, \u043f\u043e\u0434\u0441\u0435\u0442\u044c, \u043c\u0430\u043f\u043f\u0438\u043d\u0433\u0438 \u0447\u0435\u0433\u043e-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0444\u0430\u0439\u043b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f <em>traefik.toml<\/em> \u0438\u043b\u0438 <em>traefik.yml<\/em> \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 <a href=\"https:\/\/doc.traefik.io\/traefik\/getting-started\/configuration-overview\/#the-static-configuration\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043c\u0435\u0441\u0442<\/a>. \u0425\u043e\u0440\u043e\u0448\u043e \u0431\u044b, \u0447\u0442\u043e\u0431\u044b \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0443\u0436\u0435 \u0431\u044b\u043b, \u043f\u043e\u043a\u0430 \u0434\u043e\u0431\u0440\u044b\u0439 docker compose \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b \u043f\u0430\u043f\u043a\u0443 \u0441 \u0442\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c.<\/p>\n<pre><code>touch traefik.yml <\/code><\/pre>\n<p>\u041d\u043e \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435! \u041f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0434\u043b\u044f Traefik \u0432 \u0432\u0438\u0434\u0435 labels.<\/p>\n<h2>Entrypoints, routers, middlewares, services.<\/h2>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043e\u0440\u0438\u0438. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 <strong>entrypoints<\/strong>, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0438 <strong>services<\/strong> \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u0438\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0434\u0443\u0442 \u044d\u0442\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u041c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u044c, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f Traefik. \u0417\u0430 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u0430\u043c\u0438 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 <strong>routers<\/strong>. \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 <strong>middlewares<\/strong>.<\/p>\n<h2>Labels<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0431\u0435\u0436\u0438\u043c\u0441\u044f \u043b\u0451\u0433\u043a\u043e\u0439 \u0440\u044b\u0441\u0446\u043e\u0439 \u043f\u043e \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0441\u044f \u043c\u0435\u0442\u043a\u0430\u043c.<\/p>\n<p><code>traefik.enable=true<\/code><br \/> \u0412 \u0444\u0430\u0439\u043b\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0437\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e Traefik \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0442 \u0442\u0430\u043a \u0441\u0435\u0431\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043b\u0438.<\/p>\n<p><code>traefik.http.routers.traefik-http-router.entrypoints=websecure<\/code><br \/> \u0412 Traefik \u0440\u043e\u0443\u0442\u0435\u0440\u044b \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 http, tcp \u0438 udp. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 http \u0440\u043e\u0443\u0442\u0435\u0440 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c traefik-http-router \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c websecure. \u041c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u044b. \u041c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0443\u0431\u0440\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0444\u0438\u0433. \u0422\u043e\u0433\u0434\u0430 \u0440\u043e\u0443\u0442\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0432\u0441\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u044b.<\/p>\n<p><code>traefik.http.routers.traefik-http-router.rule=<\/code><br \/> \u0412\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u044f\u0432\u0438\u0442\u044c \u0431\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438 \u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0438 \u0440\u0430\u0437\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0440\u043e\u0443\u0442\u0435\u0440\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0448\u043b\u0438 \u043d\u0430 \u0445\u043e\u0441\u0442 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c <code>traefik.example.com<\/code> \u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0443\u0442\u0451\u043c \/traefik. \u041d\u0443, \u0430 \u0444\u0438\u0448\u043a\u0430 \u0441 \u0445\u0435\u0434\u0435\u0440\u043e\u043c \u0431\u044b\u043b\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u043f\u043b\u043e\u0445\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u0443\u0442\u0438. \u041f\u0440\u043e\u0448\u0443 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u043f\u043e\u0440\u0442 \u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c. \u0418 \u0435\u0449\u0451 \u0431\u043e\u043b\u044f\u0447\u043a\u0430. \u0417\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u0439 \u0441\u043b\u044d\u0448 dashboard\/ \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442\u0435 \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e <a href=\"https:\/\/doc.traefik.io\/traefik\/routing\/routers\/#rule\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0430\u0432\u0438\u043b\u0430<\/a>.<\/p>\n<p><code>traefik.http.routers.traefik-http-router.tls=true<\/code><br \/> \u0421\u0445\u0435\u043c\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 HTTPS, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u0445\u043e\u0441\u0442\u0430 \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0438\u043b\u0438 PEM \u0444\u0430\u0439\u043b\u0430\u0445 \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c TLS \u0441\u0435\u0441\u0441\u0438\u044e.<\/p>\n<p><code>traefik.http.routers.traefik-http-router.service=api@internal<\/code><br \/> \u0417\u0430\u043f\u0440\u043e\u0441, \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u044d\u0442\u043e\u0433\u043e \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u043b\u044e\u0431\u0438\u043c\u043e\u043c\u0443. \u0412 \u0441\u043c\u044b\u0441\u043b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 api@internal.<\/p>\n<p><code>traefik.http.routers.traefik-http-router.middlewares=traefik-mw-auth,traefik-mw-strip<\/code><br \/> \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u0441\u0435\u0440\u0432\u0438\u0441 \u0437\u0430\u043f\u0440\u043e\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d \u043c\u0438\u0434\u0434\u043b\u0432\u0430\u0440\u044f\u043c\u0438 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e.<\/p>\n<p><code>traefik.http.middlewares.traefik-mw-auth.basicauth.usersFile=\/etc\/traefik\/secret<\/code><br \/> \u042d\u0442\u0430 \u043c\u0438\u0434\u0434\u043b\u0432\u0430\u0440\u044c \u0443\u043c\u0435\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c <s>\u0431\u043e\u043b\u044c\u043d\u043e<\/s> \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0442\u0438\u043f\u0430 Basic. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0444\u0430\u0439\u043b secret \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u043e\u043b\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b htpasswd, \u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 Traefik \u0431\u0443\u0434\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u0442\u0435\u043c, \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043f\u0430\u0440\u043e\u043b\u044c. \u0413\u0440\u0443\u0441\u0442\u043d\u043e \u044d\u0442\u043e.<\/p>\n<pre><code>htpasswd -\u0441b secret adm adm <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <em>htpasswd<\/em> \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0435\u0451 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 apache2-utils. \u0412 Ubuntu \u044d\u0442\u043e \u0442\u0430\u043a.<\/p>\n<pre><code>sudo apt update &amp;&amp; sudo apt install apache2-utils <\/code><\/pre>\n<p><code>traefik.http.middlewares.traefik-mw-strip.stripprefix.prefixes=\/traefik<\/code><br \/> \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043c\u0438\u0434\u0434\u043b\u0432\u0430\u0440\u044c \u0441 \u0438\u043c\u0435\u043d\u0435\u043c traefik-mw-strip \u043e\u0442\u0440\u0435\u0437\u0430\u0435\u0442 \u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>\/traefik<\/code> \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u0441\u0435\u0440\u0432\u0438\u0441.  \u041d\u0443, \u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0435\u0442\u0435. \u0425\u043e\u0442\u044c \u043e\u0434\u043d\u043e\u0431\u0443\u043a\u0432\u0435\u043d\u043d\u044b\u0439, \u0445\u043e\u0442\u044c UUID. \u0422\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0441\u044f \u0441\u043e \u0441\u043b\u044d\u0448\u0430. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0438\u0434\u0434\u043b\u0432\u0430\u0440\u0435\u0439 <a href=\"https:\/\/doc.traefik.io\/traefik\/middlewares\/http\/overview\/\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435<\/a>.<\/p>\n<p>\u0412\u0441\u0451 \u044d\u0442\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043a\u0430\u043a Traefik \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c IP \u0430\u0434\u0440\u0435\u0441\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c,  \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430\u043f\u0440\u043e\u0441? \u0412 \u0414\u043e\u043a\u0435\u0440\u0435 \u0436\u0435 \u0441\u0435\u0442\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u043e. \u0412\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0430\u0433\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 Docker \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u043d\u0438\u0436\u0435 \u0444\u0430\u0439\u043b\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 <em>traefik.yml<\/em>. \u041d\u0435\u0432\u0430\u0436\u043d\u043e, \u043a\u0430\u043a\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 \u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443.<\/p>\n<h2>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f<\/h2>\n<p>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 TOML \u0438\u043b\u0438 YAML. \u042f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e YAML \u0438 \u043d\u0438\u0436\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0435\u0433\u043e. \u0424\u043b\u043e\u043c\u0430\u0441\u0442\u0435\u0440\u044b \u0443 \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u043d\u044b\u0435.<br \/> \u0424\u0430\u0439\u043b <em>traefik.yml<\/em>:<\/p>\n<pre><code class=\"yaml\">global:   checkNewVersion: true   sendAnonymousUsage: false log:   level: DEBUG # DEBUG, INFO, WARNING, ERROR, CRITICAL   format: common # common, json, logfmt   filePath: \/var\/log\/traefik\/traefik.log accesslog:   format: common # common, json, logfmt   filePath: \/var\/log\/traefik\/access.log api:   dashboard: true entryPoints:   web:     address: \":8080\"     http:       redirections:         entryPoint:           to: websecure           scheme: https           permanent: false   websecure:     address: \":8443\" #  registry: #    address: \":5000\" providers:   docker:     endpoint: \"unix:\/\/\/var\/run\/docker.sock\"     exposedByDefault: false   file:     directory: \/etc\/traefik\/config     watch: true certificatesResolvers:   myresolver:     acme:       email: your-email@example.com       storage: acme.json       tlsChallenge: {} <\/code><\/pre>\n<p>\u041e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u0430\u043a\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u0430\u043a \u043b\u043e\u0433\u0438, \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u044b, \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b, \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u2013 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435, \u0437\u043d\u0430\u0447\u0438\u0442 \u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u044f\u0442\u044c \u0437\u0430 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 Traefik.<\/p>\n<p>\u0420\u0430\u0437\u0434\u0435\u043b <code>global<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a \u0442\u0430\u0431\u0443\u0440\u0435\u0442\u043a\u0430. \u0412\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c.<br \/> \u0420\u0430\u0437\u0434\u0435\u043b <code>log<\/code> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u0443\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u043a\u0443\u0434\u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438. \u0412 \u0444\u0430\u0439\u043b\u0435 <em>docker-compose.yml<\/em> \u043e\u043d \u043f\u043e\u043a\u0430 \u0437\u0430\u043c\u0430\u043f\u043b\u0435\u043d \u0432 \u043f\u0430\u043f\u043a\u0443 <code>.\/logs<\/code>, \u0447\u0442\u043e\u0431 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0431\u0435\u0433\u0430\u0442\u044c. \u0410 \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u0448\u0435\u0447\u043a\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0430\u0442\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0446\u0438\u0432\u0438\u043b\u044c\u043d\u044b\u0439 <code>\/var\/log\/traefik<\/code>.<\/p>\n<p>\u041a\u043d\u043e\u043f\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <code>api<\/code>.<\/p>\n<p>\u0420\u0430\u0437\u0434\u0435\u043b <code>entryPoints<\/code>. \u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u044d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442\u044b \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0435\u0442\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0430 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043a \u043d\u0438\u043c \u043d\u0430\u0434\u043e \u0435\u0449\u0451 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 <code>ports:<\/code> \u0444\u0430\u0439\u043b\u0430 <em>docker-compose.yml<\/em>. \u041e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0437\u0434\u0435\u0441\u044c \u0441\u0445\u0435\u043c\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0441 HTTP \u043d\u0430 HTTPS \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u043e\u0443\u0442\u0435\u0440. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0435\u0433\u043e \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c web-to-websecure@internal. \u0410\u0434\u0440\u0435\u0441\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043a\u0440\u0430\u0442\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u0430 \u043f\u043e\u043b\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u2013 0.0.0.0:8443.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 <code>providers<\/code>. \u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 docker \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0432 Traefik \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u043a\u0435\u0442 unix:. \u0410 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e <code>exposedByDefault=false<\/code>, \u0442\u043e Traefik \u0431\u0443\u0434\u0435\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043e <code>traefik.enable=true<\/code>. \u0412\u0435\u0447\u0435\u0440\u0438\u043d\u043a\u0430 \u0434\u043b\u044f \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0445.<br \/> \u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 file. \u0423\u043a\u0430\u0437\u0430\u043d\u0430 \u043f\u0430\u043f\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0433\u0434\u0435 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e \u0434\u043b\u044f Traefik \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0438. \u0412 docker-compose.yml \u044d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u0437\u0430\u043c\u0430\u043f\u043b\u0435\u043d\u0430 \u0432 <code>.\/config<\/code> \u043d\u0430 \u0445\u043e\u0441\u0442\u0435. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043f\u0446\u0438\u044f watch \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430, \u0442\u043e Traefik \u0431\u0443\u0434\u0435\u0442<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-353548","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/353548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=353548"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/353548\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=353548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=353548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=353548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}