version: "3.5" networks: web: external: true iot: external: true lan: external: true volumes: hass: driver: local driver_opts: o: bind type: none device: /data/files/hass video: driver: local driver_opts: o: bind type: none device: /data/video music: driver: local driver_opts: o: bind type: none device: /data/music services: hass: container_name: hass build: ./hass image: thomasloven/home-assistant restart: always networks: default: web: iot: lan: volumes: - hass:/config - video:/media/video - music:/media/music - /etc/localtime:/etc/localtime:ro environment: WAITDB_HOST: db WAITDB_USER: hass WAITDB_PASS: hass depends_on: - db labels: traefik.enable: true traefik.docker.network: web traefik.http.routers.hass.rule: HOST(`${HASS_ROOT}`) traefik.http.routers.hass.tls.certResolver: le db: image: mariadb:10.4.12 restart: always volumes: - ./db:/var/lib/mysql - /etc/timezone:/etc/timezone environment: MYSQL_INITDB_SKIP_TZINFO: "true" MYSQL_DATABASE: hass MYSQL_USER: hass MYSQL_PASSWORD: hass MYSQL_ROOT_PASSWORD: hass dbadmin: image: phpmyadmin networks: default: web: environment: PMA_ARBITRARY: 1 labels: traefik.enable: true traefik.docker.network: web traefik.http.routers.dbadmin.rule: HOST(`db.${HASS_ROOT}`) traefik.http.routers.dbadmin.middlewares: auth@file traefik.http.routers.dbadmin.tls.certResolver: le mqtt: image: eclipse-mosquitto:1.6 restart: always networks: default: iot: ipv4_address: ${MQTT_IP} volumes: - ./mqtt/data:/mosquitto/data - ./mqtt/log:/mosquitto/log #- ./mqtt/config:/mosquitto/config grafana: image: grafana/grafana restart: always volumes: - ./grafana:/var/lib/grafana - /etc/timezone:/etc/timezone networks: web: default: user: "0" labels: traefik.enable: true traefik.docker.network: web traefik.http.routers.grafana.rule: HOST(`grafana.${HASS_ROOT}`) traefik.http.routers.grafana.middlewares: auth@file traefik.http.routers.grafana.tls.certResolver: le influx: image: influxdb:1.8 restart: always volumes: - ./influx:/var/lib/influxdb - /etc/timezone:/etc/timezone # Only needed during initial setup # environment: # INFLUXDB_DB: hass # INFLUXDB_USER: hass # INFLUXDB_USER_PASSWORD: hass # Devices deconz: image: marthoc/deconz:amd64-2.05.77 restart: always devices: - /dev/conbee:/dev/ttyUSB0 volumes: - ./deconz:/root/.local/share/dresden-elektronik/deCONZ - ./deconz-otau:/root/otau - /etc/timezone:/etc/timezone networks: web: default: environment: DECONZ_VNC_MODE: 1 DECONZ_VNC_PASSWORD: secret DEBUG_OTAU: 1 DECONZ_WEB_PORT: 8081 ports: - 8081:8081 labels: traefik.enable: true traefik.docker.network: web traefik.http.services.deconz.loadbalancer.server.port: 8081 traefik.http.routers.deconz.rule: HOST(`deconz.${HASS_ROOT}`) traefik.http.routers.deconz.middlewares: auth@file traefik.http.routers.deconz.tls.certResolver: le healthcheck: test: curl http://localhost:5900 || exit 1 # mysensors: # rflink: plejd: image: thomasloven/plejd2mqtt restart: always environment: PLEJD_SITE: PLEJD_USERNAME: PLEJD_PASSWORD: MQTT_BROKER: mqtt://mqtt volumes: - /var/run/dbus:/var/run/dbus mobile: image: pajikos/sms-gammu-gateway restart: always devices: - /dev/gsmmodem:/dev/mobile healthcheck: test: ["CMD", "wget", "-O", "-", "localhost:5000/signal"]