Files
Containr/templates/home-assistant.md
T
2026-04-10 12:02:36 +02:00

5.6 KiB

Home Assistant Template

Overview

Home Assistant is an open source home automation that puts local control and privacy first.

Quick Start

# Create docker-compose.yml with the content below
docker-compose up -d

Docker Compose

version: '3.8'

services:
  homeassistant:
    image: ghcr.io/home-assistant/home-assistant:stable
    container_name: homeassistant
    restart: unless-stopped
    environment:
      - TZ=America/New_York
    volumes:
      - ./config:/config
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "8123:8123"
    privileged: true
    network_mode: host
    depends_on:
      - mqtt
      - postgres
    networks:
      - homeassistant-network

  mqtt:
    image: eclipse-mosquitto:2.0
    container_name: homeassistant-mqtt
    restart: unless-stopped
    volumes:
      - ./mqtt/config:/mosquitto/config
      - ./mqtt/data:/mosquitto/data
      - ./mqtt/log:/mosquitto/log
    ports:
      - "1883:1883"
      - "9001:9001"
    networks:
      - homeassistant-network

  postgres:
    image: postgres:15-alpine
    container_name: homeassistant-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_DB=homeassistant
      - POSTGRES_USER=homeassistant
      - POSTGRES_PASSWORD=homeassistant
    volumes:
      - homeassistant-db:/var/lib/postgresql/data
    networks:
      - homeassistant-network

  zigbee2mqtt:
    image: koenkk/zigbee2mqtt:latest
    container_name: zigbee2mqtt
    restart: unless-stopped
    environment:
      - TZ=America/New_York
    volumes:
      - ./zigbee2mqtt/data:/app/data
      - /run/udev:/run/udev:ro
    ports:
      - "8080:8080"
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0
    networks:
      - homeassistant-network

volumes:
  homeassistant-db:

networks:
  homeassistant-network:
    driver: bridge

Environment Variables

Setup Guide

  1. Create Directories:

    mkdir -p config mqtt/{config,data,log} zigbee2mqtt/data
    
  2. Configure MQTT (mqtt/config/mosquitto.conf):

    listener 1883
    allow_anonymous false
    password_file /mosquitto/config/passwd
    
    listener 9001
    protocol websockets
    
  3. Create MQTT Password:

    docker exec homeassistant-mqtt mosquitto_passwd -c /mosquitto/config/passwd homeassistant
    
  4. Configure Zigbee2MQTT (zigbee2mqtt/data/configuration.yaml):

    homeassistant: true
    permit_join: false
    mqtt:
      base_topic: zigbee2mqtt
      server: mqtt://homeassistant-mqtt:1883
      user: homeassistant
      password: your-mqtt-password
    serial:
      port: /dev/ttyUSB0
    
  5. Deploy:

    docker-compose up -d
    
  6. Access: Open http://localhost:8123

  7. Initial Setup:

    • Create Home Assistant user account
    • Detect devices and integrations
    • Configure automations

Configuration Files

Home Assistant (config/configuration.yaml)

homeassistant:
  name: Home
  latitude: 40.7128
  longitude: -74.0060
  elevation: 10
  unit_system: metric
  time_zone: America/New_York
  country: US

default_config:

http:
  server_port: 8123

mqtt:
  broker: homeassistant-mqtt
  port: 1883
  username: homeassistant
  password: your-mqtt-password

recorder:
  db_url: postgresql://homeassistant:homeassistant@homeassistant-postgres/homeassistant

logger:
  default: info

Device Integration

  • Zigbee Devices: Via Zigbee2MQTT
  • WiFi Devices: Direct integration
  • Z-Wave: Add Z-Wave integration
  • Cameras: RTSP/ONVIF support
  • Sensors: MQTT/HTTP/USB sensors

Reverse Proxy (Traefik)

# Note: Home Assistant works best with host networking
# If using bridge mode, add these labels:
labels:
  - "traefik.enable=true"
  - "traefik.http.routers.homeassistant.rule=Host(`home.yourdomain.com`)"
  - "traefik.http.routers.homeassistant.tls=true"
  - "traefik.http.routers.homeassistant.tls.certresolver=letsencrypt"
  - "traefik.http.services.homeassistant.loadbalancer.server.port=8123"

Backup Strategy

# Backup Home Assistant config
tar czf homeassistant-backup.tar.gz config/

# Backup database
docker exec homeassistant-postgres pg_dump -U homeassistant homeassistant > ha-db-backup.sql

# Restore database
docker exec -i homeassistant-postgres psql -U homeassistant homeassistant < ha-db-backup.sql

Performance Optimization

# For systems with limited resources
environment:
  - WEBSERVER_THREAD_POOL_SIZE=5
  - WEBSERVER_WORKER_TIMEOUT=30

# Resource limits
deploy:
  resources:
    limits:
      memory: 1G
      cpus: '1.0'
    reservations:
      memory: 512M
      cpus: '0.5'

Security

  • Change default MQTT password
  • Use HTTPS in production
  • Network access control
  • Regular updates
  • Monitor access logs

Monitoring

  • Logs: docker-compose logs -f homeassistant
  • Performance: System monitor integration
  • Devices: Device status dashboard
  • Automations: Automation execution history

Troubleshooting

  • Device discovery: Check network connectivity
  • MQTT issues: Verify broker configuration
  • Zigbee problems: Check USB device permissions
  • Performance: Monitor CPU/memory usage
  • Database errors: Check PostgreSQL logs

Hardware Requirements

  • CPU: 2 cores minimum, 4 recommended
  • RAM: 2GB minimum, 4GB recommended
  • Storage: 32GB minimum (SSD recommended)
  • Network: Gigabit recommended for multiple devices

Add-ons

  • HACS: Home Assistant Community Store
  • Configurator: Browser-based configuration editor
  • Terminal: SSH terminal in HA
  • Samba: File sharing
  • VS Code Server: Code editor