{"id":20122,"date":"2026-05-15T15:38:28","date_gmt":"2026-05-15T12:38:28","guid":{"rendered":"https:\/\/unihost.com\/help\/?p=20122"},"modified":"2026-05-15T15:38:28","modified_gmt":"2026-05-15T12:38:28","slug":"publish-docker-service-https-traefik","status":"publish","type":"post","link":"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/","title":{"rendered":"\u041a\u0430\u043a \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c Docker-\u0441\u0435\u0440\u0432\u0438\u0441 \u0447\u0435\u0440\u0435\u0437 HTTPS \u043d\u0430 VPS \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Traefik"},"content":{"rendered":"<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">Docker-\u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043b\u0443\u0448\u0430\u044e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u043e\u0440\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 3000, 8080, 5000 \u0438\u043b\u0438 8000. \u042d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 Docker-\u0441\u0435\u0442\u0438, \u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043b\u0443\u0447\u0448\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u043c\u0435\u043d, HTTPS \u0438 reverse proxy.<\/span><\/p>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0412 production-\u0441\u0440\u0435\u0434\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">https:\/\/app.example.com<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0414\u043e\u043c\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 IP VPS, Traefik \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0435\u0433\u043e \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 Docker-\u0441\u0435\u0440\u0432\u0438\u0441.<\/span><\/p>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0421\u0445\u0435\u043c\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">User \u2192 https:\/\/app.example.com \u2192 Traefik \u2192 Docker service<\/span><\/pre>\n<h2><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><b>1. \u041d\u0430\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u0434\u043e\u043c\u0435\u043d \u043d\u0430 VPS<\/b><\/span><\/h2>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 DNS-\u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u0430 \u0438\u043b\u0438 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0430.<\/span><\/p>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041f\u0440\u0438\u043c\u0435\u0440:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">Type: A<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">Name: app<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">Value: SERVER_IP<\/span><\/pre>\n<p><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><span style=\"font-weight: 400;\">\u0415\u0441\u043b\u0438 \u0434\u043e\u043c\u0435\u043d <\/span><span style=\"font-weight: 400;\">example.com<\/span><span style=\"font-weight: 400;\">, \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443:<\/span><\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">app.example.com<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c DNS \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">dig app.example.com +short<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">SERVER_IP<\/span><\/pre>\n<h2><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><b>2. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u044c\u0442\u0435 Docker-\u0441\u0435\u0440\u0432\u0438\u0441<\/b><\/span><\/h2>\n<p><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><span style=\"font-weight: 400;\">\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 <\/span><span style=\"font-weight: 400;\">3000<\/span><span style=\"font-weight: 400;\">.<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">services:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0app:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0image: your-app-image:latest<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0container_name: app<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0restart: unless-stopped<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0expose:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"3000\"<\/span><\/pre>\n<p><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><span style=\"font-weight: 400;\">\u0417\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <\/span><span style=\"font-weight: 400;\">expose<\/span><span style=\"font-weight: 400;\">, \u0430 \u043d\u0435 <\/span><span style=\"font-weight: 400;\">ports<\/span><span style=\"font-weight: 400;\">, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442. \u041e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 Docker-\u0441\u0435\u0442\u0438 \u0434\u043b\u044f Traefik.<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041f\u043b\u043e\u0445\u043e:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">ports:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u00a0\u00a0- \"3000:3000\"<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041b\u0443\u0447\u0448\u0435:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">expose:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u00a0\u00a0- \"3000\"<\/span><\/pre>\n<p><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><span style=\"font-weight: 400;\">\u0412\u0430\u0436\u043d\u043e<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u041d\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0439\u0442\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u043e\u0440\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0440\u0443\u0436\u0443, \u0435\u0441\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0434\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 HTTPS \u0438 reverse proxy.<\/span><\/span><\/p>\n<h2><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><b>3. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 Traefik \u043a\u0430\u043a reverse proxy<\/b><\/span><\/h2>\n<p><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><span style=\"font-weight: 400;\">\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 <\/span><span style=\"font-weight: 400;\">docker-compose.yml<\/span><span style=\"font-weight: 400;\">, \u0433\u0434\u0435 Traefik \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 HTTPS.<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435:<\/span><\/p>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">app.example.com<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">admin@example.com<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">your-app-image:latest<\/span><\/p>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u043d\u0430 \u0441\u0432\u043e\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">services:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0traefik:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0image: traefik:v3.0<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0container_name: traefik<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0restart: unless-stopped<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0command:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"--providers.docker=true\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"--providers.docker.exposedbydefault=false\"<\/span><br \/><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"--entrypoints.web.address=:80\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"--entrypoints.websecure.address=:443\"<\/span><br \/><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"--entrypoints.web.http.redirections.entrypoint.to=websecure\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"--entrypoints.web.http.redirections.entrypoint.scheme=https\"<\/span><br \/><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"--certificatesresolvers.letsencrypt.acme.email=admin@example.com\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"--certificatesresolvers.letsencrypt.acme.storage=\/letsencrypt\/acme.json\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"--certificatesresolvers.letsencrypt.acme.httpchallenge=true\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0ports:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"80:80\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"443:443\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0volumes:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"\/var\/run\/docker.sock:\/var\/run\/docker.sock:ro\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \".\/letsencrypt:\/letsencrypt\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0networks:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- proxy<br \/><\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0app:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0image: your-app-image:latest<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0container_name: app<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0restart: unless-stopped<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0expose:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"3000\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0labels:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"traefik.enable=true\"<\/span><br \/><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"traefik.http.routers.app.rule=Host(`app.example.com`)\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"traefik.http.routers.app.entrypoints=websecure\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"traefik.http.routers.app.tls=true\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"traefik.http.routers.app.tls.certresolver=letsencrypt\"<\/span><br \/><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- \"traefik.http.services.app.loadbalancer.server.port=3000\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0networks:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0\u00a0\u00a0- proxy<\/span><br \/><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">networks:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0proxy:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0\u00a0\u00a0name: proxy<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">Traefik \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 routers, services \u0438 entrypoints \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0412 Docker-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 labels \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.\u00a0<\/span><\/p>\n<h2><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><b>4. \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f<\/b><\/span><\/h2>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Traefik:<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043f\u043e\u0440\u0442\u044b 80 \u0438 443;<\/span><\/li>\n<li><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \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 Docker socket;<\/span><\/li>\n<li><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u043d\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u0432\u0441\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438;<\/span><\/li>\n<li><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0438\u0449\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441 traefik.enable=true;<\/span><\/li>\n<li><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 app.example.com;<\/span><\/li>\n<li><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442 HTTPS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0447\u0435\u0440\u0435\u0437 Let&#8217;s Encrypt;<\/span><\/li>\n<li><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u043f\u0440\u043e\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 app:3000.<\/span><\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u0431\u043b\u043e\u043a \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">labels:<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0- \"traefik.enable=true\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0- \"traefik.http.routers.app.rule=Host(`app.example.com`)\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0- \"traefik.http.routers.app.entrypoints=websecure\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0- \"traefik.http.routers.app.tls=true\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\"> \u00a0- \"traefik.http.routers.app.tls.certresolver=letsencrypt\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u00a0\u00a0- \"traefik.http.services.app.loadbalancer.server.port=3000\"<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0427\u0442\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">traefik.enable=true<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">Traefik \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">Host(`app.example.com`)<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u044d\u0442\u043e\u0442 \u0434\u043e\u043c\u0435\u043d \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">entrypoints=websecure<\/span><\/pre>\n<p><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><span style=\"font-weight: 400;\">\u0421\u0435\u0440\u0432\u0438\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 HTTPS entrypoint, \u0442\u043e \u0435\u0441\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0440\u0442 <\/span><span style=\"font-weight: 400;\">443<\/span><span style=\"font-weight: 400;\">.<\/span><\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">tls.certresolver=letsencrypt<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0447\u0435\u0440\u0435\u0437 Let\u2019s Encrypt.<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">loadbalancer.server.port=3000<\/span><\/pre>\n<p><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><span style=\"font-weight: 400;\">\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u043e\u0440\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u2014 <\/span><span style=\"font-weight: 400;\">3000<\/span><span style=\"font-weight: 400;\">.<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">Traefik \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 ACME\/Let\u2019s Encrypt \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432. \u0412 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Traefik \u0434\u043b\u044f Docker Compose \u0441 Let\u2019s Encrypt \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u0441\u0445\u0435\u043c\u0430, \u0433\u0434\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 HTTP challenge \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0447\u0435\u0440\u0435\u0437 Traefik. <\/span><\/p>\n<h2><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><b>5. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b<\/b><\/span><\/h2>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">mkdir -p letsencrypt<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">docker compose up -d<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0442\u0430\u0442\u0443\u0441:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">docker ps<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">traefik<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">app<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043b\u043e\u0433\u0438 Traefik:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">docker logs traefik<\/span><\/pre>\n<p><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><span style=\"font-weight: 400;\">\u0415\u0441\u043b\u0438 DNS \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438 \u043f\u043e\u0440\u0442\u044b <\/span><span style=\"font-weight: 400;\">80\/443<\/span><span style=\"font-weight: 400;\"> \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b, Traefik \u0441\u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c HTTPS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.<\/span><\/span><\/p>\n<h2><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><b>6. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043f\u043e\u0440\u0442\u044b \u0432 firewall<\/b><\/span><\/h2>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041d\u0430 VPS \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u043f\u043e\u0440\u0442\u044b:<\/span><\/p>\n<p><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><span style=\"font-weight: 400;\">80\/tcp<br \/><\/span><span style=\"font-weight: 400;\">443\/tcp<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f UFW:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">sudo ufw allow 80\/tcp<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">sudo ufw allow 443\/tcp<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">sudo ufw status<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">SSH \u043b\u0443\u0447\u0448\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e IP:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">sudo ufw allow from YOUR_TRUSTED_IP to any port 22 proto tcp<\/span><\/pre>\n<h2><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><b>7. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0443 HTTPS<\/b><\/span><\/h2>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">https:\/\/app.example.com<\/span><\/pre>\n<p><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><span style=\"font-weight: 400;\">\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <\/span><span style=\"font-weight: 400;\">curl<\/span><span style=\"font-weight: 400;\">:<\/span><\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">curl -I https:\/\/app.example.com<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">HTTP\/2 200<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/span><\/p>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">http:\/\/app.example.com<\/span><\/pre>\n<p><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><span style=\"font-weight: 400;\">Traefik \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 HTTPS, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d redirect \u0441 <\/span><span style=\"font-weight: 400;\">web<\/span><span style=\"font-weight: 400;\"> \u043d\u0430 <\/span><span style=\"font-weight: 400;\">websecure<\/span><span style=\"font-weight: 400;\">:<\/span><\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">- \"--entrypoints.web.http.redirections.entrypoint.to=websecure\"<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">- \"--entrypoints.web.http.redirections.entrypoint.scheme=https\"<\/span><\/pre>\n<h2><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><b>\u0418\u0442\u043e\u0433<\/b><\/span><\/h2>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0414\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 Docker-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0447\u0435\u0440\u0435\u0437 HTTPS \u043d\u0430 VPS \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Traefik \u043a\u0430\u043a reverse proxy.<\/span><\/p>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0412 \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0441\u0445\u0435\u043c\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">Domain \u2192 VPS \u2192 Traefik \u2192 Docker service<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437:<\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">SERVER_IP:PORT<\/span><\/pre>\n<p><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><span style=\"font-weight: 400;\">\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0438 Docker-\u0441\u0435\u0442\u0438, \u0430 \u043d\u0430\u0440\u0443\u0436\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e <\/span><span style=\"font-weight: 400;\">80<\/span><span style=\"font-weight: 400;\"> \u0438 <\/span><span style=\"font-weight: 400;\">443<\/span><span style=\"font-weight: 400;\"> \u0447\u0435\u0440\u0435\u0437 Traefik.<\/span><\/span><\/p>\n<p><span style=\"font-family: Ubuntu, sans-serif; font-size: 12pt;\"><span style=\"font-weight: 400;\">Traefik \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f Docker-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0432 <\/span><span style=\"font-weight: 400;\">docker-compose.yml<\/span><span style=\"font-weight: 400;\"> \u0447\u0435\u0440\u0435\u0437 labels. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c VPS \u043d\u0443\u0436\u043d\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432:<\/span><\/span><\/p>\n<pre><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">app.example.com \u2192 app:3000<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">api.example.com \u2192 api:8080<\/span><br \/><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">panel.example.com \u2192 panel:9000<\/span><\/pre>\n<p><span style=\"font-weight: 400; font-family: Ubuntu, sans-serif; font-size: 12pt;\">\u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0435 \u0438 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0434\u043b\u044f production-\u0441\u0445\u0435\u043c\u044b: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u043e \u0434\u043e\u043c\u0435\u043d\u0443 \u0441 HTTPS, \u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u043e\u0440\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u043a\u0440\u044b\u0442\u044b\u043c.<\/span><\/p>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Docker-\u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043b\u0443\u0448\u0430\u044e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u043e\u0440\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 3000, 8080, 5000 \u0438\u043b\u0438 8000. \u042d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 Docker-\u0441\u0435\u0442\u0438, \u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043b\u0443\u0447\u0448\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u043c\u0435\u043d, HTTPS \u0438 reverse proxy. \u0412 production-\u0441\u0440\u0435\u0434\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: https:\/\/app.example.com \u0414\u043e\u043c\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 IP VPS, Traefik \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0435\u0433\u043e \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[215,419,1091],"class_list":["post-20122","post","type-post","status-publish","format-standard","hentry","tag-docker","tag-install","tag-traefik"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Publish a Docker Service via HTTPS<\/title>\n<meta name=\"description\" content=\"Learn how to publish a Docker service via HTTPS on a VPS using Traefik, DNS, Docker labels, Let\u2019s Encrypt, firewall rules, and reverse proxy routing.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/\" \/>\n<meta property=\"og:locale\" content=\"ru_RU\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Publish a Docker Service via HTTPS\" \/>\n<meta property=\"og:description\" content=\"Learn how to publish a Docker service via HTTPS on a VPS using Traefik, DNS, Docker labels, Let\u2019s Encrypt, firewall rules, and reverse proxy routing.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/\" \/>\n<meta property=\"og:site_name\" content=\"Unihost.FAQ\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/unihost\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-15T12:38:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/unihost.com\/help\/minio.php?.\/unihost-logo-alt.png\" \/>\n\t<meta property=\"og:image:width\" content=\"250\" \/>\n\t<meta property=\"og:image:height\" content=\"141\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Unihost Support\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@unihost\" \/>\n<meta name=\"twitter:site\" content=\"@unihost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Unihost Support\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/\"},\"author\":{\"name\":\"Unihost Support\",\"@id\":\"https:\/\/unihost.com\/help\/ru\/#\/schema\/person\/bb5ae95f38577c920e6a7507888b715a\"},\"headline\":\"\u041a\u0430\u043a \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c Docker-\u0441\u0435\u0440\u0432\u0438\u0441 \u0447\u0435\u0440\u0435\u0437 HTTPS \u043d\u0430 VPS \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Traefik\",\"datePublished\":\"2026-05-15T12:38:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/\"},\"wordCount\":486,\"publisher\":{\"@id\":\"https:\/\/unihost.com\/help\/ru\/#organization\"},\"keywords\":[\"Docker\",\"install\",\"Traefik\"],\"inLanguage\":\"ru\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/\",\"url\":\"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/\",\"name\":\"How to Publish a Docker Service via HTTPS\",\"isPartOf\":{\"@id\":\"https:\/\/unihost.com\/help\/ru\/#website\"},\"datePublished\":\"2026-05-15T12:38:28+00:00\",\"description\":\"Learn how to publish a Docker service via HTTPS on a VPS using Traefik, DNS, Docker labels, Let\u2019s Encrypt, firewall rules, and reverse proxy routing.\",\"breadcrumb\":{\"@id\":\"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/#breadcrumb\"},\"inLanguage\":\"ru\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Unihost\",\"item\":\"https:\/\/unihost.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Help\",\"item\":\"https:\/\/unihost.com\/help\/ru\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u041a\u0430\u043a \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c Docker-\u0441\u0435\u0440\u0432\u0438\u0441 \u0447\u0435\u0440\u0435\u0437 HTTPS \u043d\u0430 VPS \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Traefik\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/unihost.com\/help\/ru\/#website\",\"url\":\"https:\/\/unihost.com\/help\/ru\/\",\"name\":\"Unihost.FAQ\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/unihost.com\/help\/ru\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/unihost.com\/help\/ru\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ru\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/unihost.com\/help\/ru\/#organization\",\"name\":\"Unihost\",\"alternateName\":\"Unihost\",\"url\":\"https:\/\/unihost.com\/help\/ru\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ru\",\"@id\":\"https:\/\/unihost.com\/help\/ru\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/unihost.com\/help\/minio.php?2026\/01\/minio.png\",\"contentUrl\":\"https:\/\/unihost.com\/help\/minio.php?2026\/01\/minio.png\",\"width\":300,\"height\":300,\"caption\":\"Unihost\"},\"image\":{\"@id\":\"https:\/\/unihost.com\/help\/ru\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/unihost\/\",\"https:\/\/x.com\/unihost\",\"https:\/\/www.instagram.com\/unihost\/?hl=en\",\"https:\/\/www.linkedin.com\/company\/unihost-com\",\"https:\/\/www.youtube.com\/channel\/UCITKsxMDnslQY8brN3advgw\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/unihost.com\/help\/ru\/#\/schema\/person\/bb5ae95f38577c920e6a7507888b715a\",\"name\":\"Unihost Support\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ru\",\"@id\":\"https:\/\/unihost.com\/help\/ru\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a0c9db17c2a0d93e8a0d5ac123f8c5db750ad4d3d5657369c0c4e480f5af77b8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a0c9db17c2a0d93e8a0d5ac123f8c5db750ad4d3d5657369c0c4e480f5af77b8?s=96&d=mm&r=g\",\"caption\":\"Unihost Support\"},\"sameAs\":[\"https:\/\/unihost.com\/\"],\"url\":\"https:\/\/unihost.com\/help\/ru\/author\/support\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Publish a Docker Service via HTTPS","description":"Learn how to publish a Docker service via HTTPS on a VPS using Traefik, DNS, Docker labels, Let\u2019s Encrypt, firewall rules, and reverse proxy routing.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/","og_locale":"ru_RU","og_type":"article","og_title":"How to Publish a Docker Service via HTTPS","og_description":"Learn how to publish a Docker service via HTTPS on a VPS using Traefik, DNS, Docker labels, Let\u2019s Encrypt, firewall rules, and reverse proxy routing.","og_url":"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/","og_site_name":"Unihost.FAQ","article_publisher":"https:\/\/www.facebook.com\/unihost\/","article_published_time":"2026-05-15T12:38:28+00:00","og_image":[{"width":250,"height":141,"url":"https:\/\/unihost.com\/help\/minio.php?.\/unihost-logo-alt.png","type":"image\/png"}],"author":"Unihost Support","twitter_card":"summary_large_image","twitter_creator":"@unihost","twitter_site":"@unihost","twitter_misc":{"Written by":"Unihost Support","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/#article","isPartOf":{"@id":"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/"},"author":{"name":"Unihost Support","@id":"https:\/\/unihost.com\/help\/ru\/#\/schema\/person\/bb5ae95f38577c920e6a7507888b715a"},"headline":"\u041a\u0430\u043a \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c Docker-\u0441\u0435\u0440\u0432\u0438\u0441 \u0447\u0435\u0440\u0435\u0437 HTTPS \u043d\u0430 VPS \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Traefik","datePublished":"2026-05-15T12:38:28+00:00","mainEntityOfPage":{"@id":"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/"},"wordCount":486,"publisher":{"@id":"https:\/\/unihost.com\/help\/ru\/#organization"},"keywords":["Docker","install","Traefik"],"inLanguage":"ru"},{"@type":"WebPage","@id":"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/","url":"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/","name":"How to Publish a Docker Service via HTTPS","isPartOf":{"@id":"https:\/\/unihost.com\/help\/ru\/#website"},"datePublished":"2026-05-15T12:38:28+00:00","description":"Learn how to publish a Docker service via HTTPS on a VPS using Traefik, DNS, Docker labels, Let\u2019s Encrypt, firewall rules, and reverse proxy routing.","breadcrumb":{"@id":"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/#breadcrumb"},"inLanguage":"ru","potentialAction":[{"@type":"ReadAction","target":["https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/unihost.com\/help\/ru\/publish-docker-service-https-traefik\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Unihost","item":"https:\/\/unihost.com\/"},{"@type":"ListItem","position":2,"name":"Help","item":"https:\/\/unihost.com\/help\/ru\/"},{"@type":"ListItem","position":3,"name":"\u041a\u0430\u043a \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c Docker-\u0441\u0435\u0440\u0432\u0438\u0441 \u0447\u0435\u0440\u0435\u0437 HTTPS \u043d\u0430 VPS \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Traefik"}]},{"@type":"WebSite","@id":"https:\/\/unihost.com\/help\/ru\/#website","url":"https:\/\/unihost.com\/help\/ru\/","name":"Unihost.FAQ","description":"","publisher":{"@id":"https:\/\/unihost.com\/help\/ru\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/unihost.com\/help\/ru\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ru"},{"@type":"Organization","@id":"https:\/\/unihost.com\/help\/ru\/#organization","name":"Unihost","alternateName":"Unihost","url":"https:\/\/unihost.com\/help\/ru\/","logo":{"@type":"ImageObject","inLanguage":"ru","@id":"https:\/\/unihost.com\/help\/ru\/#\/schema\/logo\/image\/","url":"https:\/\/unihost.com\/help\/minio.php?2026\/01\/minio.png","contentUrl":"https:\/\/unihost.com\/help\/minio.php?2026\/01\/minio.png","width":300,"height":300,"caption":"Unihost"},"image":{"@id":"https:\/\/unihost.com\/help\/ru\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/unihost\/","https:\/\/x.com\/unihost","https:\/\/www.instagram.com\/unihost\/?hl=en","https:\/\/www.linkedin.com\/company\/unihost-com","https:\/\/www.youtube.com\/channel\/UCITKsxMDnslQY8brN3advgw"]},{"@type":"Person","@id":"https:\/\/unihost.com\/help\/ru\/#\/schema\/person\/bb5ae95f38577c920e6a7507888b715a","name":"Unihost Support","image":{"@type":"ImageObject","inLanguage":"ru","@id":"https:\/\/unihost.com\/help\/ru\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a0c9db17c2a0d93e8a0d5ac123f8c5db750ad4d3d5657369c0c4e480f5af77b8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a0c9db17c2a0d93e8a0d5ac123f8c5db750ad4d3d5657369c0c4e480f5af77b8?s=96&d=mm&r=g","caption":"Unihost Support"},"sameAs":["https:\/\/unihost.com\/"],"url":"https:\/\/unihost.com\/help\/ru\/author\/support\/"}]}},"_links":{"self":[{"href":"https:\/\/unihost.com\/help\/ru\/wp-json\/wp\/v2\/posts\/20122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unihost.com\/help\/ru\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unihost.com\/help\/ru\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unihost.com\/help\/ru\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/unihost.com\/help\/ru\/wp-json\/wp\/v2\/comments?post=20122"}],"version-history":[{"count":6,"href":"https:\/\/unihost.com\/help\/ru\/wp-json\/wp\/v2\/posts\/20122\/revisions"}],"predecessor-version":[{"id":20128,"href":"https:\/\/unihost.com\/help\/ru\/wp-json\/wp\/v2\/posts\/20122\/revisions\/20128"}],"wp:attachment":[{"href":"https:\/\/unihost.com\/help\/ru\/wp-json\/wp\/v2\/media?parent=20122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unihost.com\/help\/ru\/wp-json\/wp\/v2\/categories?post=20122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unihost.com\/help\/ru\/wp-json\/wp\/v2\/tags?post=20122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}