- docker-compose.yml: homeassistant/home-assistant:stable, bridge, 127.0.0.1:8123, journald - config/ исключён из git (.gitignore) - README + CLAUDE с описанием стека, деплоя, nginx-нюансов
53 lines
2.0 KiB
Markdown
53 lines
2.0 KiB
Markdown
# 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` (только с самого сервера)
|