Я пытаюсь настроить letEncrypt с traeffik, и все, что я делаю, похоже, не работает. На данный момент я получаю следующую ошибку:
В других сообщениях SO упоминалось, что это может быть связано с неиспользованием http-запроса для traeffik ( Traefik выдаст сертификат вместо Let's encrypt ), но я использую его, поэтому честно понятия не имею (это не решает проблему - не закрывайте). Мои файлы конфигурации кажутся маленькими, но я не получаю сообщений об ошибках, поэтому моя способность перебирать перерывы мала. Если кто-нибудь может помочь с решением этой проблемы, я был бы признателен - я занимался этим какое-то время и не знаю, что делать.
Я раскручиваю следующие три файла ниже с помощью этого небольшого скрипта bash:
root@ubuntu-1gb-nyc3-01:/lowteck# cat ./runSwarm.sh
#!/bin/bash
./buildandpush.sh
cd ./back
./buildandpush.sh
cd ..
docker volume prune -f
docker kill $(docker ps -q)
docker rm $(docker ps -a -q)
docker swarm init \
--advertise-addr 104.236.214.151
docker network create -d overlay --attachable proxy
docker stack deploy --compose-file=stage.yaml prod2
docker stack deploy --compose-file=traefik.yaml prodTraefik
Вот мой traefik.toml
:
root@ubuntu-1gb-nyc3-01:/lowteck# cat traefik.toml
logLevel = "DEBUG"
defaultEntryPoints = ["http", "https"]
[web]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.forwardedHeaders]
trustedIPs = ["104.236.214.151"]
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[acme]
caServer = "https://acme-v02.api.letsencrypt.org/directory"
email = "pweyand@gmail.com"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"
[[acme.domains]]
main = "lowteck.com"
sans = ["www.lowteck.com"]
[docker]
domain = "traefik"
watch = true
swarmmode = true
network="web"
Вот мой traefik.yaml
:
root@ubuntu-1gb-nyc3-01:/lowteck# cat traefik.yaml
version: '3.3'
networks:
proxy:
external: true
configs:
traefik.toml:
file: ./traefik.toml
services:
traefik:
image: traefik
ports:
- "80:80"
- "8080:8080"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
configs:
- source: traefik.toml
target: /etc/traefik/traefik.toml
labels:
- "traefik.enable=false"
networks:
- proxy
deploy:
replicas: 1
placement:
constraints: [node.role == manager]
Вот мой stage.yaml
:
root@ubuntu-1gb-nyc3-01:/lowteck# cat stage.yaml
version: "3.3"
networks:
default:
external: false
proxy:
external: true
services:
back:
image: patientplatypus/lowtechback:latest
ports:
- '5000:5000'
networks:
- proxy
- default
deploy:
replicas: 1
restart_policy:
condition: on-failure
max_attempts: 5
window: 120s
labels:
- "traefik.docker.backend=back"
- "traefik.port=5000"
- "traefik.frontend.rule=Host:back.lowteck.com"
- "traefik.docker.network=proxy"
front:
image: patientplatypus/lowtechfront:latest
ports:
- '3000:3000'
networks:
- proxy
- default
depends_on:
- back
deploy:
replicas: 1
restart_policy:
condition: on-failure
max_attempts: 5
window: 120s
labels:
- "traefik.docker.backend=front"
- "traefik.port=3000"
- "traefik.frontend.rule=Host:104.236.214.151, lowteck.com, www.lowteck.com, zennify.me"
- "traefik.docker.network=proxy"
Опять же, я уже некоторое время занимаюсь этим, и у меня практически нет кодов ошибок, по которым можно продолжить. Если у кого-нибудь есть совет, пожалуйста, дайте мне знать.
РЕДАКТИРОВАТЬ:
Я обнаружил ошибку после выхода из модуля traefik, а именно то, что мне нужно:
[[acme.domains]]
main = "lowteck.com"
sans = ["www.lowteck.com", "back.lowteck.com"]
Однако это не решило проблему https, хотя журналы теперь очищены для контейнера traefik. Вы можете увидеть полный вывод журнала здесь: https://gist.github.com/patientplatypus/8a40e12c6ba64cdc7d2bf88581967057.