Traefik requires two configuration files:
Basic configuration with panel to see traefik active configuration:
#debug: "true" #logLevel: "DEBUG" api: dashboard: true entryPoints: http: address: ":80" https: address: ":443" providers: docker: endpoint: "unix:///var/run/docker.sock" exposedByDefault: false certificatesResolvers: http: acme: email: domains@example.com storage: acme.json httpChallenge: entryPoint: http
An empty storage file for all Let's Encrypt certificates
touch acme.json chmod 600 acme.json
The access is configured with user admin
and password from htpasswd (MD5, SHA1 or BCrypt): htpasswd generator
NOTE 1: pay attention to double $$
at password.
NOTE 2: the domain (host.example.com
) must resolve against host, because traefik will start to obtain certificates as soon as it start.
services: traefik: image: traefik:v2.1 container_name: traefik restart: unless-stopped security_opt: - no-new-privileges:true ports: - 80:80 - 443:443 volumes: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock:ro - ./traefik.yaml:/traefik.yaml:ro - ./acme.json:/acme.json labels: - "traefik.enable=true" - "traefik.http.routers.traefik.entrypoints=http" - "traefik.http.routers.traefik.rule=Host(`host.example.com`)" - "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$yjlvJ56A$$$R20oIMhPsstfBc8.ZFaW43" - "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https" - "traefik.http.routers.traefik.middlewares=traefik-https-redirect" - "traefik.http.routers.traefik-secure.entrypoints=https" - "traefik.http.routers.traefik-secure.rule=Host(`host.example.com`)" - "traefik.http.routers.traefik-secure.middlewares=traefik-auth" - "traefik.http.routers.traefik-secure.tls=true" - "traefik.http.routers.traefik-secure.tls.certresolver=http" - "traefik.http.routers.traefik-secure.service=api@internal"
Both the domains
host.example.com
to access traefik panelapp.example.com
to access app with traefik proxymust resolve against host, because traefik will start to obtain certificates as soon as it start.
services: traefik: image: traefik:v2.1 container_name: traefik restart: unless-stopped security_opt: - no-new-privileges:true ports: - 80:80 - 443:443 volumes: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock:ro - ./traefik.yaml:/traefik.yaml:ro - ./acme.json:/acme.json labels: - "traefik.enable=true" - "traefik.http.routers.traefik.entrypoints=http" - "traefik.http.routers.traefik.rule=Host(`host.example.com`)" - "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$ablvJ36A$$Q21oIBhPxftfMc8.ZFeW31" - "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https" - "traefik.http.routers.traefik.middlewares=traefik-https-redirect" - "traefik.http.routers.traefik-secure.entrypoints=https" - "traefik.http.routers.traefik-secure.rule=Host(`host.example.com`)" - "traefik.http.routers.traefik-secure.middlewares=traefik-auth" - "traefik.http.routers.traefik-secure.tls=true" - "traefik.http.routers.traefik-secure.tls.certresolver=http" - "traefik.http.routers.traefik-secure.service=api@internal" app: image: oguzpastirmaci/hostname container_name: app labels: - "traefik.enable=true" - "traefik.http.routers.app.entrypoints=http" - "traefik.http.routers.app.rule=Host(`app.example.com`)" - "traefik.http.middlewares.app-https-redirect.redirectscheme.scheme=https" - "traefik.http.routers.app.middlewares=app-https-redirect" - "traefik.http.routers.app-secure.entrypoints=https" - "traefik.http.routers.app-secure.rule=Host(`app.example.com`)" - "traefik.http.routers.app-secure.tls=true" - "traefik.http.routers.app-secure.tls.certresolver=http" - "traefik.http.routers.app-secure.service=app" - "traefik.http.services.app.loadbalancer.server.port=8000"