networks: traefik-public: external: true volumes: esphome_config: {} services: esphome: container_name: esphome image: ghcr.io/esphome/esphome environment: - USERNAME=${DATABASE__USERNAME} - PASSWORD=${DATABASE__PASSWORD} - TZ=${TZ:-UTC} - DOMAIN=${DOMAIN} volumes: - esphome_config:/config restart: always privileged: true networks: - traefik-public deploy: # placement: # constraints: # - node.labels.esphome.esphome_config == true labels: - traefik.enable=true - traefik.swarm.network=traefik-public - traefik.constraint-label=traefik-public - traefik.http.routers.esphome.entrypoints=https - traefik.http.routers.esphome.rule=Host(`esphome.${DOMAIN}`) - traefik.http.routers.esphome.tls.certresolver=le - traefik.http.routers.esphome.service=esphome_app - traefik.http.services.esphome_app.loadbalancer.server.port=6052