services: traefik: image: "traefik:v2.11" container_name: "traefik" restart: unless-stopped networks: - proxy command: - "--api.insecure=false" - "--api.dashboard=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--providers.docker.network=proxy" - "--entryPoints.web.address=:80" - "--entryPoints.websecure.address=:443" - "--entryPoints.websecure.http.tls=true" - "--entryPoints.web.http.redirections.entryPoint.to=websecure" - "--entryPoints.web.http.redirections.entryPoint.scheme=https" # Let's Encrypt ACME - "--certificatesresolvers.le.acme.email=exil@exil.dev" - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json" - "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web" ports: - "80:80" - "443:443" - "8080:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - "./letsencrypt:/letsencrypt" - "./dynamic:/etc/traefik/dynamic:ro" labels: # Dashboard - "traefik.enable=true" - "traefik.http.routers.dashboard.rule=Host(`dashboard.purrlobby.exil.dev`)" - "traefik.http.routers.dashboard.entrypoints=websecure" - "traefik.http.routers.dashboard.service=api@internal" - "traefik.http.routers.dashboard.tls=true" - "traefik.http.routers.dashboard.tls.certresolver=le" - "traefik.http.middlewares.dashboard-auth.basicauth.users=admin:$$apr1$$XHYvA6xP$$nol8TiAhcTXeMqcJjtDuv1" - "traefik.http.routers.dashboard.middlewares=dashboard-auth" server: build: context: . target: final container_name: "purrlobby" restart: unless-stopped networks: - proxy labels: - "traefik.enable=true" - "traefik.http.routers.purrlobby.entrypoints=websecure" - "traefik.http.routers.purrlobby.rule=Host(`purrlobby.exil.dev`)" - "traefik.http.routers.purrlobby.tls=true" - "traefik.http.routers.purrlobby.tls.certresolver=le" - "traefik.http.services.purrlobby.loadbalancer.server.port=80" networks: proxy: name: proxy