Skip to content

Instantly share code, notes, and snippets.

@kallangerard
Last active January 11, 2023 03:18
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kallangerard/5ac4a65973b3b27e6e46acac8358aebf to your computer and use it in GitHub Desktop.
Save kallangerard/5ac4a65973b3b27e6e46acac8358aebf to your computer and use it in GitHub Desktop.
How to use Traefik v2 with Home Assistant and Docker Docker-Compose.yaml
# docker/docker-compose.yaml
---
version: "2.3"
services:
traefik:
image: traefik:v2.2.1
container_name: traefik
ports:
- 80:80
- 443:443
networks:
- default
- backend
environment:
- CLOUDFLARE_DNS_API_TOKEN=${CLOUDFLARE_DNS_API_TOKEN}
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- traefik:/letsencrypt
command:
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --providers.docker
- --providers.docker.exposedbydefault=false
- --providers.docker.endpoint=unix://var/run/docker.sock
# network name is <projectname>_backend
- --providers.docker.network=docker_backend
# certificatesresolver.<any_name>.acme
- --certificatesresolvers.cloudflare.acme.dnschallenge.provider=cloudflare
- --certificatesresolvers.cloudflare.acme.storage=/letsencrypt/acme.json
- --certificatesresolvers.cloudflare.acme.dnschallenge.resolvers=1.1.1.1:53,8.8.8.8:53
labels:
- "traefik.enable=true"
# global redirect to https
- "traefik.http.routers.redirs.entrypoints=web"
- "traefik.http.routers.redirs.rule=hostregexp(`{host:.+}`)"
# HTTP>HTTPS REDIRECT
- "traefik.http.routers.redirs.middlewares=redirect-to-https"
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
restart: always
homeassistant:
image: homeassistant/home-assistant:0.113.2
container_name: homeassistant
networks:
- backend
environment:
- PGID=${DOCKER_PGID}
- PUID=${DOCKER_PUID}
- TZ=${TIME_ZONE}
volumes:
- homeassistant:/config
- /etc/localtime:/etc/localtime:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.homeassistant.entrypoints=websecure"
- "traefik.http.routers.homeassistant.rule=Host(`homeassistant.${DOMAIN_NAME}`)"
- "traefik.http.routers.homeassistant.tls=true"
- "traefik.http.routers.homeassistant.tls.certresolver=cloudflare"
- "traefik.http.services.homeassistant.loadbalancer.server.port=8123"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8123"]
interval: 2m
timeout: 10s
retries: 3
start_period: 40s
restart: always
networks:
default:
backend:
volumes:
traefik:
homeassistant:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment