Files
docker-compose/home-assistant/docker-compose.yaml
2025-03-03 18:29:34 +01:00

244 lines
8.5 KiB
YAML

version: '3'
services:
homeassistant:
container_name: HomeAssistant
network_mode: host
image: "ghcr.io/home-assistant/home-assistant:latest"
volumes:
- /share/docker_data/ha/:/config
#- /dev/skyconnect:/dev/ttyUSB1
# - /dev/ttyUSB1:/dev/ttyUSB1
#- /var/log:/logging
- /var/run/docker.sock:/var/run/docker.sock
- /run/dbus:/run/dbus:ro
privileged: true
environment:
- DISABLE_JEMALLOC=value
- TZ=Europe/Bratislava
labels:
- com.centurylinklabs.watchtower.enable=true
- homepage.group=Smarthome
- homepage.name=Home Assistant
- homepage.weight=1
- homepage.icon=home-assistant.png
- homepage.href=https://ha.sectorq.eu
- homepage.description=3D Printing
- homepage.server=my-docker
- homepage.container=HomeAssistant
- homepage.widget.type=homeassistant
- homepage.widget.url=https://ha.sectorq.eu
- homepage.widget.key=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIzOTk5NGJjYjIzYjk0YzExYmM5OWZiNTBlNzU0N2M2YyIsImlhdCI6MTc0MDM5OTY4NCwiZXhwIjoyMDU1NzU5Njg0fQ.LDebvPGreyZzlWT1CylHSdSt8i_cWO72HnNCsCAIaG8
- homepage.widget.custom=[{"state","sensor.sonoff_1001555a27_power"}]
restart: always
dns:
- 192.168.77.101
ollama:
volumes:
- /share/docker_data/ollama:/root/.ollama
ports:
- 11434:11434
container_name: ollama
# image: ollama/ollama:0.1.27-rocm
image: ollama/ollama
# environment:
# - HSA_OVERRIDE_GFX_VERSION=9.0.0
# devices:
# - /dev/dri/renderD128
# - /dev/dri/card1
# - /dev/kfd
labels:
com.centurylinklabs.watchtower.enable: true
esphome:
container_name: esphome
image: esphome/esphome:latest
volumes:
- /share/docker_data/esphome/config:/config
- /etc/localtime:/etc/localtime:ro
restart: always
privileged: true
network_mode: host
environment:
- USERNAME=jaydee
- PASSWORD=jaydee1
labels:
- com.centurylinklabs.watchtower.enable=true
- homepage.group=Smarthome
- homepage.name=ESPHome
- homepage.weight=1
- homepage.icon=esphome.png
- homepage.href=https://esphome.sectorq.eu
- homepage.description=3D Printing
- homepage.server=my-docker
- homepage.container=esphome
- homepage.widget.type=esphome
- homepage.widget.url=https://esphome.sectorq.eu
- homepage.widget.username=jaydee
- homepage.widget.password=jaydee1
wyoming-piper-en:
image: rhasspy/wyoming-piper
container_name: piper-en
ports:
- 10200:10200
volumes:
- /share/docker_data/piper/english:/data
command: --voice en_US-lessac-medium
restart: always
labels:
com.centurylinklabs.watchtower.enable: true
wyoming-whisper-en:
image: rhasspy/wyoming-whisper
container_name: whisper-en
ports:
- 10300:10300
volumes:
- /share/docker_data/whisper/english:/data
command: --model tiny-int8 --language en
restart: always
labels:
com.centurylinklabs.watchtower.enable: true
openwakeword:
container_name: openwakeword
image: rhasspy/wyoming-openwakeword:latest
command:
--preload-model 'ok_nabu'
--custom-model-dir /custom
--model 'ok nabu'
--model 'ok_nabu'
--uri 'tcp://0.0.0.0:10400'
--threshold 0.7
--trigger-level 2
--debug
volumes:
- /share/docker_data/openwakeword-data:/data
- /share/docker_data/openwakeword-data:/custom # Place my custom wakewords here
environment:
- TZ=Europe/Bratislava
restart: always
ports:
- 10400:10400
- 10400:10400/udp
labels:
com.centurylinklabs.watchtower.enable: true
matter-server:
container_name: matter-server
image: ghcr.io/home-assistant-libs/python-matter-server:stable
restart: unless-stopped
security_opt:
- apparmor=unconfined
volumes:
- /share/docker_data/matter-server:/data
- /run/dbus:/run/dbus:ro
network_mode: host
labels:
com.centurylinklabs.watchtower.enable: true
grafana:
ports:
- 3007:3000
container_name: grafana
image: grafana/grafana:latest
labels:
- com.centurylinklabs.watchtower.enable=true
- homepage.group=Smarthome
- homepage.name=Grafana
- homepage.weight=1
- homepage.icon=grafana.png
- homepage.href=https://g.sectorq.eu
- homepage.description=Graphs
- homepage.server=my-docker
- homepage.container=grafana
# - homepage.widget.type=grafana
# - homepage.widget.url=https://g.sectorq.eu
# - homepage.widget.key=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
# environment:
# - GF_AUTH_DISABLE_LOGIN_FORM=true
# - GF_AUTH_ANONYMOUS_ENABLED=true
# - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
# - GF_SECURITY_ALLOW_EMBEDDING=true
restart: unless-stopped
volumes:
- /share/docker_data/grafana/data:/var/lib/grafana
- /share/docker_data/grafana/certs:/certs
user: "0:0"
environment:
GF_LOG_FILTERS: rendering:debug
GF_RENDERING_SERVER_URL: http://renderer:8092/render
GF_RENDERING_CALLBACK_URL: http://grafana:3000/
GF_AUTH_GENERIC_OAUTH_ENABLED: "true"
GF_AUTH_GENERIC_OAUTH_NAME: "authentik"
GF_AUTH_GENERIC_OAUTH_CLIENT_ID: "xc8AKsYOvHFmYnRjfnvt2YfgR5pg8Mlfc9YEqd3T"
GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET: "gb5ThPlyIUN2I8UPvIKAqQBoGFmTAb7tFxt5OiJQkAG6Ef2HDKksNOjWPJFfXiO22RuCnWuyzl6IMqPYO6QTa55EYfoN5N87enh5MOhTXjo2JTTnEL1eZhEI1Sw1vBO8"
GF_AUTH_GENERIC_OAUTH_SCOPES: "openid profile email"
GF_AUTH_GENERIC_OAUTH_AUTH_URL: "https://auth.sectorq.eu/application/o/authorize/"
GF_AUTH_GENERIC_OAUTH_TOKEN_URL: "https://auth.sectorq.eu/application/o/token/"
GF_AUTH_GENERIC_OAUTH_API_URL: "https://auth.sectorq.eu/application/o/userinfo/"
GF_AUTH_SIGNOUT_REDIRECT_URL: "https://auth.sectorq.eu/application/o/grafana/end-session/"
GF_SERVER_ROOT_URL: https://g.sectorq.eu/
# Optionally enable auto-login (bypasses Grafana login screen)
GF_AUTH_OAUTH_AUTO_LOGIN: "true"
# Optionally map user groups to Grafana roles
GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH: "contains(groups, 'Grafana Admins') && 'Admin' || contains(groups, 'Grafana Editors') && 'Editor' || 'Viewer'"
GF_INSTALL_PLUGINS: https://storage.googleapis.com/integration-artifacts/alexanderzobnin-zabbix-app/4.5.7/main/163fabf651b776bf70adc08fa41bec4f52645374/alexanderzobnin-zabbix-app-4.5.7%2B163fabf6.linux_amd64.zip;alexanderzobnin-zabbix-app
renderer:
image: grafana/grafana-image-renderer:latest
restart: unless-stopped
ports:
- 8092
labels:
- com.centurylinklabs.watchtower.enable=true
- homepage.group=Smarthome
- homepage.name=Music Assistant
- homepage.weight=1
- homepage.icon=music-assistant.png
- homepage.href=http://192.168.77.101:8095
- homepage.description=Music assistant
- homepage.server=my-docker
- homepage.container=music-assistant-server
# espresense:
# image: espresense/espresense-companion
# ports:
# - 8267:8267
# volumes:
# - ./data/espresense:/config/espresense
music-assistant-server:
image: ghcr.io/music-assistant/server:latest # <<< Desired release version here (or use beta to get the latest beta version)
container_name: music-assistant-server
restart: unless-stopped
# Network mode must be set to host for MA to work correctly
network_mode: host
volumes:
- /share/docker_data/music-assistant-server/data:/data/
# privileged caps (and security-opt) needed to mount smb folders within the container
cap_add:
- SYS_ADMIN
- DAC_READ_SEARCH
security_opt:
- apparmor:unconfined
environment:
# Provide logging level as environment variable.
# default=info, possible=(critical, error, warning, info, debug)
- LOG_LEVEL=info
labels:
com.centurylinklabs.watchtower.enable: true
influxdb:
ports:
- 8086:8086
volumes:
- /share/docker_data/influxdb/data:/var/lib/influxdb2
- /share/docker_data/influxdb/config:/etc/influxdb2
environment:
- DOCKER_INFLUXDB_INIT_MODE=setup
- DOCKER_INFLUXDB_INIT_USERNAME=ha
- DOCKER_INFLUXDB_INIT_PASSWORD=haHAhaHA
- DOCKER_INFLUXDB_INIT_ORG=ha
- DOCKER_INFLUXDB_INIT_BUCKET=ha
image: influxdb:2
restart: unless-stopped
healthcheck:
test: "echo test > /var/lib/influxdb2/hc || exit 1"
interval: 10s
timeout: 3s
retries: 2
labels:
com.centurylinklabs.watchtower.enable: true