{"id":321,"date":"2018-12-05T22:47:12","date_gmt":"2018-12-05T19:47:12","guid":{"rendered":"https:\/\/artem.services\/?p=321"},"modified":"2020-08-13T13:19:53","modified_gmt":"2020-08-13T10:19:53","slug":"traefik-docker-acme-lets-encrypt","status":"publish","type":"post","link":"https:\/\/artem.services\/?p=321","title":{"rendered":"Traefik &#8212; Docker + ACME HTTP-01 Let&#8217;s Encrypt"},"content":{"rendered":"<p><img loading=\"lazy\" class=\"size-full wp-image-413 aligncenter\" src=\"https:\/\/artem.services\/wp-content\/uploads\/2018\/12\/Traefik-Logo.png\" alt=\"\" width=\"400\" height=\"400\" srcset=\"https:\/\/artem.services\/wp-content\/uploads\/2018\/12\/Traefik-Logo.png 400w, https:\/\/artem.services\/wp-content\/uploads\/2018\/12\/Traefik-Logo-150x150.png 150w, https:\/\/artem.services\/wp-content\/uploads\/2018\/12\/Traefik-Logo-300x300.png 300w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/p>\n<h5>\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435:<\/h5>\n<ul>\n<li>\u041d\u043e\u0434\u0430 \u0441 <a href=\"https:\/\/artem.services\/?p=22\" target=\"_blank\" rel=\"noopener noreferrer\">\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c Docker&#8217;\u043e\u043c<\/a><\/li>\n<li>\u041f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442, \u0438\u043b\u0438 \u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u0440\u043e\u0441<\/li>\n<li>\u0414\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f<\/li>\n<\/ul>\n<p>\u0412 \u043c\u043e\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f &quot;<strong>artem.services<\/strong>&quot;, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0435\u0433\u043e \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0443\u0431\u0434\u043e\u043c\u0435\u043d\u043d\u044b.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u044c <strong>Type A<\/strong> \u0441\u0443\u0431\u0434\u043e\u043c\u043c\u0435\u043d\u0443 &quot;<strong>traefik.artem.services<\/strong>&quot; \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u043d\u0430 \u043d\u0430\u0448\u0443 \u043d\u043e\u0434\u0443.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0438\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0430 <strong>Docker-Compose<\/strong>, \u044d\u0442\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430. \u0415\u0441\u043b\u0438 Compose \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0435\u0433\u043e:<\/p>\n<p><strong>DEB<\/strong> \u0441\u0438\u0441\u0442\u0435\u043c\u044b:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\napt install -y docker-compose\r\n<\/pre>\n<p><strong>RPM<\/strong> \u0441\u0438\u0441\u0442\u0435\u043c\u044b:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nyum install -y docker-compose\r\n<\/pre>\n<p><!--more--><\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0435\u0442\u0435\u0439 <strong>Docker<\/strong>&#39;\u0430:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndocker network ls\r\n<\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0435\u0442\u044c \u0434\u043b\u044f <strong>Traefik<\/strong>&#39;\u0430:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndocker network create proxy\r\n<\/pre>\n<p>\u0423\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0441\u0435\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043b\u0430\u0441\u044c:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndocker network ls\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 <strong>Traefik<\/strong>&#39;\u0430, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442 &quot;<strong>htpasswd<\/strong>&quot;:<\/p>\n<p><strong>DEB<\/strong> \u0441\u0438\u0441\u0442\u0435\u043c\u044b:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\napt install -y apache2-utils\r\n<\/pre>\n<p><strong>RPM<\/strong> \u0441\u0438\u0441\u0442\u0435\u043c\u044b:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nyum install -y httpd-tools\r\n<\/pre>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f &quot;<strong>admin<\/strong>&quot;, \u043f\u0430\u0440\u043e\u043b\u044c &quot;<strong>admin<\/strong>&quot;:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nhtpasswd -nb admin admin\r\nadmin:$apr1$1d8fOToA$1XJ\/7tNFiZdg0MJrD7GQM\/\r\n<\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0441\u0435\u0431\u0435, \u043e\u043d \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f.<\/p>\n<p>&nbsp;<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f <strong>Traefik<\/strong> \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nmkdir -p traefik\/\r\ncd traefik\/\r\n<\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b &quot;<strong>trafiek.toml<\/strong>&quot; \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncat &gt; traefik.toml &lt;&lt; EOF\r\n#Traefik Global Configuration\r\ndebug = false\r\ncheckNewVersion = true\r\nlogLevel = &quot;ERROR&quot;\r\n\r\n#Define the EntryPoint for HTTP and HTTPS\r\ndefaultEntryPoints = [&quot;https&quot;,&quot;http&quot;]\r\n\r\n#Enable Traefik Dashboard on port 8080\r\n#with basic authentication method\r\n#login and password\r\n[web]\r\naddress = &quot;:8080&quot;\r\n[web.auth.basic]\r\nusers = [&quot;admin:$apr1$1d8fOToA$1XJ\/7tNFiZdg0MJrD7GQM\/&quot;]\r\n\r\n#Define the HTTP port 80 and\r\n#HTTPS port 443 EntryPoint\r\n#Enable automatically redirect HTTP to HTTPS\r\n[entryPoints]\r\n[entryPoints.http]\r\naddress = &quot;:80&quot;\r\n[entryPoints.http.redirect]\r\nentryPoint = &quot;https&quot;\r\n[entryPoints.https]\r\naddress = &quot;:443&quot;\r\n[entryPoints.https.tls]\r\n\r\n#Enable retry sending a request if the network error\r\n[retry]\r\n\r\n#Define Docker Backend Configuration\r\n[docker]\r\nendpoint = &quot;unix:\/\/\/var\/run\/docker.sock&quot;\r\ndomain = &quot;traefik.artem.services&quot;\r\nwatch = true\r\nexposedbydefault = false\r\n\r\n#Letsencrypt Registration\r\n#Define the Letsencrypt ACME HTTP challenge\r\n[acme]\r\nemail = &quot;admin@artem.services&quot;\r\nstorage = &quot;acme.json&quot;\r\nentryPoint = &quot;https&quot;\r\nOnHostRule = true\r\n[acme.httpChallenge]\r\nentryPoint = &quot;http&quot;\r\nEOF\r\n<\/pre>\n<p>\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043c\u0435\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\/\u043f\u0430\u0440\u043e\u043b\u044c, \u043d\u0430 \u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438. \u0410 \u0442\u0430\u043a \u0436\u0435 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0438 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c &quot;<strong>docker-compose.yml<\/strong>&quot;:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncat &gt; docker-compose.yml &lt;&lt; EOF\r\nversion: '3'\r\n\r\nservices:\r\n  traefik:\r\n    image: traefik:latest\r\n    command: --docker --docker.domain=traefik.artem.services\r\n    ports:\r\n      - 80:80\r\n      - 443:443\r\n    networks:\r\n      - proxy\r\n    volumes:\r\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock\r\n      - .\/traefik.toml:\/traefik.toml\r\n      - .\/acme.json:\/acme.json\r\n    labels:\r\n      - &quot;traefik.frontend.rule=Host:dash.traefik.artem.services&quot;\r\n      - &quot;traefik.port=8080&quot;\r\n    container_name: traefik\r\n    restart: always\r\n\r\nnetworks:\r\n  proxy:\r\n    external: true\r\nEOF\r\n<\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b \u0434\u043b\u044f <strong>Let&#8217;s Encrypt<\/strong>&#39;\u0430:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ntouch acme.json\r\nchmod 600 acme.json\r\n<\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndocker-compose up -d\r\n<\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0442\u0430\u0442\u0443\u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndocker-compose ps\r\n<\/pre>\n<p>(!) \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u0448\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b &quot;<strong>docker-compose.yml<\/strong>&quot;<\/p>\n<p>\u041e\u0442\u043a\u0440\u043e\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435<\/p>\n<pre>traefik.artem.services<\/pre>\n<p>\u0412\u0430\u0441 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442 \u0441 <strong>80<\/strong>-\u0433\u043e \u043f\u043e\u0440\u0442\u0430, \u043d\u0430 <strong>443<\/strong>-\u0438\u0439. \u0415\u0441\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0434\u043e\u043c\u0435\u043d \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 <strong>SSL<\/strong> \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.<br \/>\n\u0412\u0432\u0435\u0434\u044f \u043b\u043e\u0433\u0438\u043d\/\u043f\u0430\u0440\u043e\u043b\u044c \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438, \u043f\u043e\u043f\u0430\u0434\u0435\u043c \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 <strong>Traefik<\/strong>&#39;\u0430.<\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b <strong>Traefik<\/strong>&#39;\u0430 \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d &quot;<strong>wordpress.artem.services<\/strong>&quot; \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u043d\u0430 \u043d\u0430\u0448 <strong>Traefik<\/strong>.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f <strong>Docker-Compose<\/strong> \u0444\u0430\u0439\u043b\u0430:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nmkdir wordpress\r\ncd wordpress\r\n<\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b Docker-Compose:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncat &gt; docker-compose.yml &lt;&lt; EOF\r\nversion: '3'\r\n\r\nservices:\r\n  wordpress:\r\n    image: wordpress:latest\r\n    environment:\r\n      WORDPRESS_DB_HOST: &quot;mysql&quot;\r\n      WORDPRESS_DB_USER: &quot;wordpress&quot;\r\n      WORDPRESS_DB_PASSWORD: &quot;wordpress&quot;\r\n      WORDPRESS_DB_NAME: &quot;wordpress&quot;\r\n    labels:\r\n      - traefik.backend=wordpress\r\n      - traefik.frontend.rule=Host:wordpress.artem.services\r\n      - traefik.docker.network=proxy\r\n      - traefik.port=80\r\n    restart: always\r\n    networks:\r\n      - proxy\r\n    depends_on:\r\n      - mysql\r\n\r\n  mysql:\r\n    image: mysql:5.7\r\n    environment:\r\n      MYSQL_DATABASE: wordpress\r\n      MYSQL_USER: wordpress\r\n      MYSQL_PASSWORD: wordpress\r\n    restart: always\r\n    networks:\r\n      - proxy\r\n    labels:\r\n      - traefik.enable=false\r\n\r\nnetworks:\r\n  proxy:\r\n    external: true\r\nEOF\r\n<\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndocker-compose up -d\r\n<\/pre>\n<p>\u041e\u0442\u043a\u0440\u043e\u0435\u043c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0441\u0441\u044b\u043b\u043a\u0443:<\/p>\n<pre>wordpress.artem.serves<\/pre>\n<p>\u0414\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0441\u044f \u0441\u0430\u0439\u0442 \u0443\u0436\u0435 \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c <strong>SSL<\/strong> \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435: \u041d\u043e\u0434\u0430 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c Docker&#8217;\u043e\u043c \u041f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442, \u0438\u043b\u0438 \u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u0440\u043e\u0441 \u0414\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0412 \u043c\u043e\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f &quot;artem.services&quot;, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0435\u0433\u043e \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0443\u0431\u0434\u043e\u043c\u0435\u043d\u043d\u044b. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u044c Type A \u0441\u0443\u0431\u0434\u043e\u043c\u043c\u0435\u043d\u0443 &quot;traefik.artem.services&quot; \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u043d\u0430 \u043d\u0430\u0448\u0443 \u043d\u043e\u0434\u0443. \u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0438\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0430 Docker-Compose, \u044d\u0442\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430. &hellip; <a href=\"https:\/\/artem.services\/?p=321\" class=\"more-link\">\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u044c<span class=\"screen-reader-text\"> &quot;Traefik &#8212; Docker + ACME HTTP-01 Let&#8217;s Encrypt&quot;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[85,4,81,84,82,83,86,80],"_links":{"self":[{"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/posts\/321"}],"collection":[{"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/artem.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=321"}],"version-history":[{"count":16,"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/posts\/321\/revisions"}],"predecessor-version":[{"id":2024,"href":"https:\/\/artem.services\/index.php?rest_route=\/wp\/v2\/posts\/321\/revisions\/2024"}],"wp:attachment":[{"href":"https:\/\/artem.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/artem.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/artem.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}