Hi everyone,
I’ve been trying for hours to get a Let’s Encrypt certificate working with Traefik 2.11 in Docker but no certificate is being issued. I’d really appreciate any help — I feel like I’ve tried everything.
Here’s my setup:
- Traefik version: 2.11.24
- Docker environment
- Ports 80 and 443 are exposed and open in the firewall.
- ACME HTTP challenge configured using entryPoint
web
. - Dashboard is served via
websecure
(port 443) and correctly routed using a file provider (dashboard.yml
). - Domain resolves correctly to my server via A and AAAA records.
- File
/letsencrypt/acme.json
exists and has correct permissions (600
). - I can access
http://mydomain.com/.well-known/acme-challenge/test
and see a blank page (HTTP 200). - Running
curl -I https://acme-v02.api.letsencrypt.org
returns HTTP 200. - Traefik logs show
Testing certificate renew...
but nothing happens after that. No line about "certificate obtained". - I’ve confirmed that
tls.certresolver=letsencrypt
is included in the router rule.
Contents of dashboard.yml
(simplified):
type or paste codhttp:
routers:
traefik-dashboard:
rule: "Host(`traefik.server4.mydomain.com`)"
entryPoints:
- websecure
tls:
certResolver: letsencrypt
service: api@internal
middlewares:
- dashboard-auth
- ipwhitelist
middlewares:
dashboard-auth:
basicAuth:
users:
- "user:$apr1#####################"
ipwhitelist:e here
Docker-compose.yml
- "--certificatesresolvers.letsencrypt.acme.email=contacto@mydomail.com>
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json>
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.file.directory=/rules"
- "--providers.file.watch=true"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./letsencrypt:/letsencrypt"
- "./traefik.yml:/traefik.yml:ro"
- "./rules:/rules"
networks:
traefik:
name: traefik
Traefik.yml
log:
level: INFO
accessLog: {}
api:
dashboard: true
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
certificatesResolvers:
letsencrypt:
acme:
email: contacto@midominio.com
storage: /letsencrypt/acme.json
httpChallenge:
entryPoint: web
I also checked that the domain is reachable externally and that no other services are blocking port 80. I'm not using Cloudflare or DNS challenge — only HTTP.
Any ideas why the certificate isn’t being issued? Thanks so much in advance