# CLAUDE.md — home-assistant ## Что Home Assistant Container на str-u-01 (45.10.53.148). UI публикуется через nginx на `ha.striker.su`. ## Стек - `homeassistant/home-assistant:stable` (Docker Hub, обычный Container — не Supervised, без addons) - bridge network, `127.0.0.1:8123:8123` (только loopback на сервере) - volume bind-mount: `./config:/config` (НЕ в git) - log-driver: journald (см. memory `reference_fail2ban_gitea.md` про journald на str-u-01) - `restart: unless-stopped`, healthcheck на `/manifest.json` ## Структура ``` home-assistant/ ├── docker-compose.yml # сервис ha ├── .gitignore # исключает config/ ├── README.md └── CLAUDE.md ``` На сервере: `/opt/docker/sites/home-assistant/`. Папка `config/` создаётся автоматически HA при первом запуске. ## Деплой ```bash ssh striker@str-u-01.striker.su cd /opt/docker/sites/home-assistant git pull docker compose pull && docker compose up -d ``` ## nginx vhost: `/etc/nginx/conf.d/ha.striker.su` на str-u-01 (ssl + reverse-proxy на 127.0.0.1:8123). Обязательно `proxy_set_header Upgrade` / `Connection upgrade` для WebSocket — UI ломается без них. ## LE-сертификат DNS-01 через Technitium API (см. memory `feedback_acme_technitium_dns01.md`). Файлы: `/etc/letsencrypt/live/ha.striker.su/fullchain.pem` + `privkey.pem`. ## HA конфиг После первого запуска в `config/configuration.yaml` добавить: ```yaml http: use_x_forwarded_for: true trusted_proxies: - 127.0.0.1 ``` Иначе HA отвергнет соединения от nginx как "untrusted proxy". ## Доступы - UI: https://ha.striker.su (онбординг при первом входе — создаёт admin) - Локально: `curl http://127.0.0.1:8123` (только с самого сервера)