I am currently migrating from Traefik version 1 to Traefik version 3. Here's are my changes
defaultEntryPoints = ["http", "https"]
[web]
address = ":8080"
[web.auth.basic]
users = ["admin:$apr1$kGMbPfo4$wirXXXNT9P5BqkJn1rv8J1"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[[entryPoints.https.tls.certificates]]
CertFile = "/app/cert.pem"
KeyFile = "/app/key.pem"
[[entryPoints.https.tls.certificates]]
CertFile = "/app/mywebsite.cert.pem"
KeyFile = "/app/mywebsite.key.pem"
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.http.redirections.entryPoint]
to = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[[entryPoints.https.tls.certificates]]
certFile = "/app/mywebsite.cert.pem"
keyFile = "/app/mywebsite.key.pem"
[api]
dashboard = true
insecure = false
[log]
level = "INFO"
[accessLog]
services:
traefik:
networks:
- proxy
build:
context: ./traefik
dockerfile: Dockerfile
command: --docker
restart: always
ports:
- "443:443"
# Disable web interface access for traefik, for security purpose.
#expose:
# - "8080"
# Disable web interface access for traefik, for security purpose.
#labels:
# - traefik.frontend.rule=Host:traefik.jstock.co
# - traefik.docker.network=proxy
# - traefik.port=8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock
logging:
driver: "json-file"
options:
max-file: "10"
max-size: "10m"
networks:
proxy:
external: true
services:
traefik:
networks:
- proxy
build:
context: ./traefik2
dockerfile: Dockerfile
command:
- --api.dashboard=true
- --api.insecure=false
- --providers.docker=true
- --serverstransport.insecureskipverify=true
restart: always
ports:
- "80:80"
- "443:443"
- "8080:8080" # Dashboard port
volumes:
- /var/run/docker.sock:/var/run/docker.sock
logging:
driver: "json-file"
options:
max-file: "10"
max-size: "10m"
networks:
proxy:
external: true
However, I am getting error
traefik-1 | {"level":"error","error":"command traefik error: field not found, node: tls","time":"2025-02-28T04:36:16Z","message":"Command error"}
How can I resolve this issue?
Here is the correct traefik.yml
for such a purpose.
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: ":443"
http:
tls: {}
tls:
certificates:
- certFile: "/app/xxx.me.cert.pem"
keyFile: "/app/xxx.me.key.pem"
- certFile: "/app/cert.pem"
keyFile: "/app/key.pem"
providers:
docker:
exposedByDefault: false
log:
level: INFO
Here's the correct labelling format for each Docker service.
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx-xxx-email.rule=Host(`email.xxx.me`)"
- "traefik.http.routers.nginx-xxx-email.entrypoints=websecure"
- "traefik.http.services.nginx-xxx-email.loadbalancer.server.port=80"
- "traefik.docker.network=proxy"