Traeffic, Docker и Let's Encrypt - PullRequest
0 голосов
/ 01 июля 2018

Завершающий этап, прежде чем мой сайт наконец-то заработает -> SSL.

Я использую сайт Jekyll с Traefic в качестве обратного прокси-сервера, Docker для предотвращения «работы на моей машине» и Let's Encrypt for SSL. Глядя на документы, это должна быть прогулка в парке, но (как и все в разработке программного обеспечения) это сложнее, чем кажется.

Моя текущая конфигурация Traefic:

[entryPoints]
    [entryPoints.http]
        address = ":80"
        [entryPoints.http.redirect]
            entryPoint = "https"
            permanent = true
    [entryPoints.https]
    address = ":443"
        [entryPoints.https.tls]

[docker]
    endpoint = "unix:///var/run/docker.sock"
    domain = "johanvergeer.com"
    watch = true
    exposedByDefault = true
    usebindportip = true
    swarmMode = true
[acme]
    email = "johanvergeer@gmail.com"
    storage = "acme.json"
    entryPoint = "https"
    acmeLogging = true
    caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"
    [[acme.domains]]
    main = "johanvergeer.com"
    [acme.httpChallenge]
    entryPoint = "http"
    provider = "digitalocean"

И файл docker-compose

version: "3.6"
services:
  site:
    ports:
      - 4000:4000
    image: registry.gitlab.com/johanvergeer/redgyro/site:latest
    deploy:
      labels:
        - traefik.site.port=4000
        - traefik.enable=true
        - traefik.frontend.rule=Host:johanvergeer.com
        - traefik.frontend.entryPoints=http,https
        - traefik.docker.network=traefik-net
        - traefik.backend.loadbalancer.method=drr
    networks: 
      - traefik-net

  reverse-proxy:
    image: traefik # The official Traefik docker image
    ports:
      - "80:80"     # The HTTP port
      - "8080:8080" # The Web UI (enabled by --api)
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
      - $PWD/traefik.toml:/etc/traefik/traefik.toml
      - $PWD/acme.json:/etc/traefik/acme.json
    deploy:
      labels:
        - traefik.site.port=80
        - traefik.logLevel=DEBUG
        - traefik.docker.network=traefik-net
        - traefik.backend.loadbalancer.method=drr
      placement:
        constraints:
          - node.role == manager
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure
    networks:
      - traefik-net

networks: 
  traefik-net:
    name: traefik-net

В данный момент я даже ничего не получаю в журналах Traefic, пока он настроен на DEBUG.

Браузер показывает ошибки Your connection is not private и NET::ERR_CERT_AUTHORITY_INVALID.

Кто-нибудь знает, как решить эту проблему?

1 Ответ

0 голосов
/ 07 июля 2018

httpChallenge не принимает provider параметр. Вы можете попробовать удалить это.

Если это не сработает, и вы работаете в DigitalOcean, попробуйте сделать dnsChallenge вместо httpChallenge. Для этого измените ваш traefik.toml из этого:

[acme.httpChallenge]
entryPoint = "http"
provider = "digitalocean"

К этому:

[acme.dnsChallenge]
provider = "digitalocean"
delayBeforeCheck = 0

И передать переменную окружения DO_AUTH_TOKEN как , указанное здесь . Если вы ожидаете добавления поддоменов позже, Задача DNS с подстановочными доменами - это путь.

Также рассмотрите возможность удаления caServer из вашей конфигурации, чтобы вы по умолчанию работали, если вы достигли Let's Encrypto Rate Limit для подготовки.

Вы также можете попробовать обратиться за помощью на форум Let's Encrypt Community Support , если вы еще этого не сделали.

...