From d4c0483538110116979e098f824b0d207ea2d24e Mon Sep 17 00:00:00 2001 From: pixelthorn Date: Wed, 1 Jul 2026 18:57:06 -0500 Subject: [PATCH] Add homeassistant.yaml --- homeassistant.yaml | 176 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 homeassistant.yaml diff --git a/homeassistant.yaml b/homeassistant.yaml new file mode 100644 index 0000000..38f0992 --- /dev/null +++ b/homeassistant.yaml @@ -0,0 +1,176 @@ +services: +# ************** +# homeassistant +# ************** + homeassistant: + container_name: homeassistant + image: ghcr.io/home-assistant/home-assistant:stable + restart: unless-stopped + # Use Host network mode - allows access to local network devices and services directly; no ports or networks in host mode + # Home Assistant relies heavily on network discovery protocols (mDNS, SSDP, Bluetooth, Zigbee over IP, etc.) that don't work reliably through Docker's NAT bridge + # Without host networking, devices on your LAN may fail to be discovered automatically + network_mode: host + privileged: false + # Bluetooth, USB and any other devices must be mapped as volumes or devices for the host hardware + # Directly map any devices this container needs access to (zigbee, etc) + devices: + - /dev/ttyUSB0:/dev/ttyUSB0 + # NOTE: Home Assistant requires root inside the container and doesn't support running as an arbitrary non-root user + cap_drop: + - ALL # Drop all Linux capabilities... + cap_add: # ...add back only what's needed + - NET_BIND_SERVICE # Bind to ports below 1024 + - NET_RAW # Needed for ping/presence detection + - NET_ADMIN # Needed for Bluetooth + security_opt: + - apparmor=unconfined # Needed for Bluetooth + volumes: + - /srv/docker/home/homeassistant:/config + - /etc/localtime:/etc/localtime:ro + - /run/dbus:/run/dbus:ro # Needed for bluetooth functionality + environment: + TZ: America/Chicago + labels: + - homepage.group=Home + - homepage.name=Homeassistant + - homepage.icon=homeassistant.png + - homepage.href=${HA_URL} + - homepage.description=Local git server + - homepage.widget.type=homeassistant + - homepage.widget.url=${HA_URL} + - homepage.widget.key=${HA_TOKEN} + - homepage.widget.fields=["people_home", "lights_on", "switches_on"] + - dockhand.url=${HA_URL} + - rackpeek.tags=homeassistant + +# ************** +# ha-mcp +# *************** +# https://github.com/homeassistant-ai/ha-mcp/blob/master/docker-compose.yml +# Connect your MCP client to the ha-mcp container + ha-mcp: + image: ghcr.io/homeassistant-ai/ha-mcp:latest + container_name: ha-mcp-server + restart: unless-stopped + #network_mode: host + command: ha-mcp-web + ports: + - "8076:8086" + env_file: + - stack.env + networks: + - ollama-net + environment: + - HOMEASSISTANT_URL=${HA_IP} + - HOMEASSISTANT_TOKEN=${HA_TOKEN} + - BACKUP_HINT=normal # Optional: Configure backup hint behavior + - HAMCP_ENABLE_FILESYSTEM_TOOLS=true + - ENABLE_YAML_CONFIG_EDITING=true + - HAMCP_ENABLE_CUSTOM_COMPONENT_INTEGRATION=true + read_only: true + tmpfs: + - /tmp + cap_drop: + - ALL + security_opt: + - no-new-privileges:true + deploy: + resources: + limits: + memory: 256M + labels: + # homepage labels used by rackpeek + - homepage.group=AI + - homepage.name=HA-MCP + - homepage.icon=mcp.png + - homepage.href=${HA_IP}/mcp + - homepage.description=MCP Server for Homeassistant + - dockhand.url=${HA_IP}/mcp + - rackpeek.tags=ai + +# *********************** +# music-assistant +# *********************** + music-assistant: + container_name: music-assistant + image: ghcr.io/music-assistant/server:latest + restart: unless-stopped + network_mode: host + volumes: + - /srv/docker/home/ha-addons/music-assistant:/data + environment: + - TZ=America/Chicago + privileged: false + cap_add: + - SYS_ADMIN + - DAC_READ_SEARCH + labels: + # homepage labels used by rackpeek + - homepage.group=Entertainment + - homepage.name=Music Assistant + - homepage.icon=music-assistant-light.png + - homepage.href=${MA_URL} + - homepage.description=Music Assistant for Homeassistant + - dockhand.url=${MA_URL} + - rackpeek.tags=entertainment + +# *********************** +# code-server +# *********************** + code-server: + container_name: code-server + image: lscr.io/linuxserver/code-server:latest + restart: unless-stopped + network_mode: host + env_file: + - stack.env + environment: + - TZ=America/Chicago + - PUID=1001 # docker user + - PGID=1001 # docker group + - PASSWORD=${CODESERVER_PWD} # or use HASHED_PASSWORD + - DEFAULT_WORKSPACE=/config + volumes: + - /srv/docker/home/ha-addons/code-server:/config + - /srv/docker/home/homeassistant:/config/workspace/homeassistant + #connect any other volumes you wish to be able to access i.e. esphome, nodered, etc + privileged: false + labels: + # homepage labels used by rackpeek + - homepage.group=Development + - homepage.name=Code Server + - homepage.icon=code-server.png + - homepage.href=${CODESERVER_URL} + - homepage.description=Code Server for Homeassistant + - dockhand.url=${CODESERVER_URL} + - rackpeek.tags=development + +# *********************** +# ESPHOME +# *********************** + esphome: + container_name: esphome + image: ghcr.io/esphome/esphome:latest + restart: unless-stopped + network_mode: host + environment: + - TZ=America/Chicago + privileged: false + cap_add: + - NET_ADMIN + - NET_RAW + volumes: + - /srv/docker/home/ha-addons/esphome:/config + - /etc/localtime:/etc/localtime:ro + labels: + # homepage labels used by rackpeek + - homepage.group=Development + - homepage.name=ESPHome + - homepage.icon=esphome.png + - homepage.href=${ESPHOME_URL} + - homepage.description=Create custom sensors for Homeassistant + - dockhand.url=${ESPHOME_URL} + - rackpeek.tags=development +networks: + ollama-net: + external: true \ No newline at end of file