179 lines
3.9 KiB
YAML
179 lines
3.9 KiB
YAML
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"]
|