[HA] 使用 Docker Compose 安裝 Home Assistant
這裡是假設手邊已經有一台安裝 docker、docker-compose 的 Linux 系統。
採用的映象檔是 ghcr.io/home-assistant/home-assistant:stable
,因為我需要使用網址來區分服務(同一個 443 port 的情況下),所以採取反向代理的方式,一方面讓之後要部屬其他應用、加上憑證、等等操作都交給 nginx 比較方便,因此不會將 8123 port 直接對外。
- 建立
mynetwork
docker create network mynetwork
- 建立
ha
ha/docker-compose.yml
version: '3' services: ha: container_name: homeassistant #image: "homeassistant/home-assistant:stable" image: ${HA_IMAGE} volumes: - ./volume/ha/config:/config - /etc/localtime:/etc/localtime:ro - /run/dbus:/run/dbus:ro restart: unless-stopped privileged: true networks: - mynetwork networks: mynetwork: external: true
ha/.env
HA_IMAGE="homeassistant/home-assistant:stable"
ha/.gitignore
volume/
- 建立
nginx
nginx/docker-compose.yml
version: '3' services: web: image: nginx volumes: # - ./templates:/etc/nginx/templates - /usr/share/nginx/html:/usr/share/nginx/html - ./nginx.conf:/etc/nginx/nginx.conf - /etc/letsencrypt:/etc/letsencrypt networks: - mynetwork ports: - "80:80" - "443:443" environment: - NGINX_ENVSUBST_TEMPLATE_SUFFIX=.conf - NGINX_PORT=80 networks: mynetwork: external: true
nginx/nginx.conf
events { } http { upstream ha { server ha:8123; } error_log /etc/nginx/error_log.log warn; client_max_body_size 20m; # proxy_cache_path /etc/nginx/cache keys_zone=one:500m max_size=1000m; proxy_cache off; server { server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; } } server { listen 80; #listen 443 ssl; #server_name home.example.com; # SSL certificate and key configuration #ssl_certificate /etc/letsencrypt/live/home.example.com/fullchain.pem; #ssl_certificate_key /etc/letsencrypt/live/home.example.com/privkey.pem; # Additional SSL configurations (e.g., enable secure ciphers, etc.) #ssl_protocols TLSv1.2 TLSv1.3; #ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384'; location /.well-known/acme-challenge { root /usr/share/nginx/html; } location / { proxy_pass http://ha; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } } }
- 啟動服務
docker-compose -f ha/docker-compose.yml up -d docker-compose -f nginx/docker-compose.yml up -d
創建帳號
例如我的 IP 是 192.168.56.100
現在可以進入 http://192.168.56.100/
開始創建帳號。