version: '3' services: homeassistant: image: homeassistant/home-assistant:{{ homeassistant.version }} volumes: # We do not yes manage configs with ansible - ./config/homeassistant:/config - /etc/localtime:/etc/localtime:ro restart: unless-stopped environment: TZ: Europe/Berlin network_mode: "host" # networks: # local_network: # ipv4_address: ${SUBNET}.2 depends_on: - zigbee2mqtt - mariadb - mosquitto extra_hosts: - "zwave:${SUBNET}.3" - "zigbee2mqtt:${SUBNET}.6" - "mariadb:${SUBNET}.4" - "mosquitto:${SUBNET}.5" # ports: # - 8123:8123 # - 1400:1400 # - 1401:1401 {% if homeassistant.mqtt.zigbee2mqtt.zigbee_adapter_id %} zigbee2mqtt: # 8080 image: ghcr.io/koenkk/zigbee2mqtt:{{ homeassistant.mqtt.zigbee2mqtt.version }} restart: unless-stopped volumes: - ./data/zigbee2mqtt:/app/data - /run/udev:/run/udev:ro environment: - TZ=Europe/Berlin networks: local_network: ipv4_address: ${SUBNET}.6 exposed: devices: # Make sure this matched your adapter location - /dev/serial/by-id/{{ homeassistant.mqtt.zigbee2mqtt.zigbee_adapter_id }}:/dev/ttyUSB0 labels: traefik.enable: true traefik.http.routers.homeassistant-mqtt.entrypoints: https traefik.http.routers.homeassistant-mqtt.rule: Host(`{{ homeassistant.mqtt.zigbee2mqtt.domain }}`) traefik.http.services.homeassistant-mqtt.loadbalancer.server.port: 8080 traefik.http.routers.homeassistant-mqtt.tls: "true" traefik.http.routers.homeassistant-mqtt.tls.certresolver: hetzner traefik.http.routers.homeassistant-mqtt.middlewares: local-only@file {% endif %} {% if homeassistant.matter.matter_adapter_id %} matter: image: ghcr.io/matter-js/matterjs-server:stable volumes: - ./data/matter:/data networks: local_network: ipv4_address: ${SUBNET}.7 exposed: labels: traefik.enable: true traefik.http.routers.homeassistant-matter.entrypoints: https traefik.http.routers.homeassistant-matter.rule: Host(`{{ homeassistant.matter.domain }}`) traefik.http.services.homeassistant-matter.loadbalancer.server.port: 5580 traefik.http.routers.homeassistant-matter.tls: "true" traefik.http.routers.homeassistant-matter.tls.certresolver: hetzner traefik.http.routers.homeassistant-matter.middlewares: local-only@file openthread: image: openthread/border-router:latest networks: local_network: ipv4_address: ${SUBNET}.8 exposed: environment: - TZ=Europe/Berlin - OT_RCP_DEVICE=/dev/ttyUSB0 - OT_LOG_LEVEL=7 - OT_THREAD_IF=wpan0 - OT_INFRA_IF=br0 - OT_REST_LISTEN_ADDR=0.0.0.0 - OT_REST_LISTEN_PORT=9212 volumes: - ./data/openthread:/data devices: # Make sure this matched your adapter location - /dev/serial/by-id/{{ homeassistant.matter.matter_adapter_id }}:/dev/ttyUSB0 - /dev/net/tun:/dev/net/tun cap_add: - NET_ADMIN labels: traefik.enable: true traefik.http.routers.homeassistant-openthread.entrypoints: https traefik.http.routers.homeassistant-openthread.rule: Host(`{{ homeassistant.matter.openthread_domain }}`) traefik.http.services.homeassistant-openthread.loadbalancer.server.port: 9212 traefik.http.routers.homeassistant-openthread.tls: "true" traefik.http.routers.homeassistant-openthread.tls.certresolver: hetzner traefik.http.routers.homeassistant-openthread.middlewares: local-only@file restart: always {% endif %} mosquitto: image: eclipse-mosquitto:{{ homeassistant.mqtt.mosquitto.version }} restart: unless-stopped user: "1883:1883" volumes: - ./config/mosquitto:/mosquitto/config:ro - ./data/mosquitto:/mosquitto/data - ./data/mosquitto/log:/mosquitto/log environment: - TZ=Europe/Berlin networks: local_network: ipv4_address: ${SUBNET}.5 mariadb: image: mariadb:10.11.2 volumes: - ./data/mariadb:/var/lib/mysql - ./config/mariadb:/etc/mysql/conf.d - /etc/localtime:/etc/localtime:ro restart: unless-stopped environment: MARIADB_ROOT_PASSWORD: {{ homeassistant.mariadb.password }} MARIADB_MYSQL_LOCALHOST_USER: "yes" MARIADB_MYSQL_LOCALHOST_GRANTS: "yes" MARIADB_AUTO_UPGRADE: "yes" MARIADB_DISABLE_UPGRADE_BACKUP: "yes" TZ: Europe/Berlin networks: local_network: ipv4_address: ${SUBNET}.4 networks: local_network: ipam: driver: default config: - subnet: ${SUBNET}.0/24 exposed: name: traefik_exposed external: true