• Docker
  • Traefik et HTTPS - impossible de renouveler

Bonjour,
J'ai tourné le problème dans tous les sens et je n'arrive pas à faire fonctionner le renouvellement auto.

Mon installation:

  • un pc sous debian 10 accessible depuis l'extérieur via serveur apache en HTTPS.
  • https://mondomaine.net est donc accessible.
  • certificat généré par certbot.

Pour essayer d'installer traefik sous docker: openvpn et apache arrêtés. Pas de firewall.

Voici ce que me retourne traefik:

level=error msg="Unable to obtain ACME certificate for domains \"mondomaine.net\": cannot get ACME client get directory at 'https://acme-v02.api.letsencrypt.org/directory': Get \"https://acme-v02.api.letsencrypt.org/directory\": dial tcp 172.65.32.248:443: i/o timeout" providerName=leresolver.acme routerName=traefik@dockerrule="Host('mondomaine.net')"

Voici mon docker-compose:

version: "3.3"
services:
traefik:
image: traefik
container_name: traefik
command:
  - --entrypoints.web.address=:80
  - --entrypoints.websecure.address=:443
  - --providers.docker
  - --api
  - --certificatesresolvers.leresolver.acme.caserver=https://acme-v02.api.letsencrypt.org/directory
  - --certificatesresolvers.leresolver.acme.email=nom@gmail.com
  - --certificatesresolvers.leresolver.acme.storage=/acme.json
  - --certificatesresolvers.leresolver.acme.tlschallenge=true
ports:
  - "80:80"
  - "443:443"
networks:
  - proxy
volumes:
  - "/var/run/docker.sock:/var/run/docker.sock:ro"
  - "./acme.json:/acme.json"
labels:
  - "traefik.http.routers.traefik.rule=Host('mondomaine.net')"
  - "traefik.http.routers.traefik.service=api@internal"
  - "traefik.http.routers.traefik.tls.certresolver=leresolver"
  - "traefik.http.routers.traefik.entrypoints=websecure"
  - "traefik.http.routers.traefik.middlewares=authtraefik"
  - "traefik.http.middlewares.authtraefik.basicauth.users=moi:$$iVa14QsOy97iR7vy6"
  - "traefik.http.routers.http-catchall.rule=hostregexp('{host:.+}')"
  - "traefik.http.routers.http-catchall.entrypoints=web"
  - "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
  - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
networks:
  proxy:
    external: true

acme.json créé manuel, chmod 600 et désespérément vide!

Par avance Merci. Je deviens fou 🤣

Edit de mise page

    lexav Edit de mise page

    Ah.

    Sinon pour répondre on voit que le TLS challenge n'arrive pas à joindre ton docker sur le port 443.

    Je vois que tu n'as pas de network dans la balise prévue :

    networks:

    Et idem sur ton docker-compose apache si j'ai bien compris il faut bien que ton network soit déclaré et soit dans le même network que traefik et que ton apache soit démarré.

    @Banip:
    je me suis mal exprimé: mon serveur apache n'est pas dockerisé (c'est pour plus tard). Je le cite pour monter que mon mondomaine.net est bien enregistré et que je n'est pas de problème en https.

    Pour le network, Je déclare l'utilisation d'un réseau existant:

    docker network ls

    NETWORK ID     NAME      DRIVER    SCOPE
    bde2c68aa915   bridge    bridge    local
    6ab0dd84bbb4   host      host      local
    def798c429ae   none      null      local
    41746764e3a2   proxy     bridge    local

    puis:

    docker network inspect proxy

    [
    {
        "Name": "proxy",
        "Id": "41746764e3a2f0ee12bdbe9b3cf63c031fa26572e63e59471b5c922d3b83a827",
        "Created": "2021-04-11T16:48:45.34825633+02:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.23.0.0/16",
                    "Gateway": "172.23.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
    ]

    Et si je laisse la création automatique du réseau, j'ai le même résultat.

    En complément, j'arrive à ping 172.65.32.248:443 depuis mon container:

    docker exec -it traefik ping 172.65.32.248:443

    PING 172.65.32.248:443 (172.65.32.248): 56 data bytes
    64 bytes from 172.65.32.248: seq=0 ttl=54 time=11.840 ms
    64 bytes from 172.65.32.248: seq=1 ttl=54 time=12.005 ms
    64 bytes from 172.65.32.248: seq=2 ttl=54 time=11.665 ms
    --- 172.65.32.248:443 ping statistics ---
    11 packets transmitted, 11 packets received, 0% packet loss
    round-trip min/avg/max = 11.604/11.832/12.042 ms

    Malheureusement, "docker exec -it traefik curl https://acme-v02.api.letsencrypt.org/directory" ne fonctionne pas.
    Ou plutôt je ne sais pas faire dans un docker.

    Et je te remercie pour tes remarques. je me sens moins seul. 😄

    Question idiote: mon fournisseur c'est Freenom. Cela peut avoir un rapport?

    @lexav Pour que les personnes aient une plus grande envie de répondre, je te conseille de respecter le format Mardown.
    Voila la documentation qui te seras utile sur beaucoup de forums -> https://www.markdownguide.org/basic-syntax/#code

    Tu pourras faire de jolies choses comme docker network ls :

    NETWORK ID     NAME                     DRIVER    SCOPE
    da6cff0cbc41   bridge                   bridge    local
    dc603f243aa9   host                     host      local
    290187618f91   none                     null      local

    Pense à utiliser le bouton prévisualiser a coté de "Publier la réponse" pour voir ce que ça donne 🙂

    De mon côté j'ai déja eu ce problème, mais tu as indiqué que tu avais bien crée le fichier manuellement, ce qui n'était pas mon cas.

      Whisper40 Merci pour la mise en page Markdown. J'ai essayé de rendre mon post plus lisible.

      8 jours plus tard

      Après avoir laisser de coté ce problème quelques jours, j'ai trouvé.
      J'avais modifié /etc/network/interfaces il y a longtemps en ajoutant quelques lignes:

      #The loopback network interface
      auto lo
      iface lo inet loopback
      #The primary network interface
      allow-hotplug enp3s0
      iface enp3s0 inet dhcp
      #ajout de routing pour acceder à 80 et 443 depuis l'extérieur
      post-up ip rule add sport 443 table cnx
      post-up ip route add table cnx to 192.168.1.0/24 dev enp3s0
      post-up ip route add table cnx default via 192.168.1.1

      Visiblement, cela ne plait pas !
      Après le retrait des 3 dernières lignes, c'est bon.

      Répondre…