Initial Home Assistant Container deployment
- docker-compose.yml: homeassistant/home-assistant:stable, bridge, 127.0.0.1:8123, journald - config/ исключён из git (.gitignore) - README + CLAUDE с описанием стека, деплоя, nginx-нюансов
This commit is contained in:
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
config/
|
||||
!config/.gitkeep
|
||||
*.log
|
||||
*.db
|
||||
*.db-shm
|
||||
*.db-wal
|
||||
.HA_VERSION
|
||||
52
CLAUDE.md
Normal file
52
CLAUDE.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 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` (только с самого сервера)
|
||||
33
README.md
Normal file
33
README.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Home Assistant — str-u-01
|
||||
|
||||
Home Assistant Container на str-u-01.striker.su.
|
||||
|
||||
## Стек
|
||||
- **Image**: `homeassistant/home-assistant:stable`
|
||||
- **Network**: bridge, биндинг `127.0.0.1:8123` (только loopback)
|
||||
- **Публичный доступ**: nginx reverse-proxy на `ha.striker.su` с LE-сертификатом
|
||||
- **Логи**: journald (`docker logs` + journalctl)
|
||||
- **Volume**: `./config:/config` (bind-mount, локально на сервере, в git не попадает)
|
||||
|
||||
## Деплой
|
||||
|
||||
```bash
|
||||
ssh striker@str-u-01.striker.su
|
||||
cd /opt/docker/sites/home-assistant
|
||||
git pull
|
||||
docker compose pull
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## Обновление
|
||||
|
||||
HA в режиме Container обновляется ручным `docker compose pull && docker compose up -d`. Авто-обновлений нет специально (контроль над брейкинг-чейнджами).
|
||||
|
||||
## Доступ
|
||||
- UI: https://ha.striker.su
|
||||
- Локально на сервере: http://127.0.0.1:8123
|
||||
- Первый запуск: онбординг (создание учётки админа) при первом заходе на UI
|
||||
|
||||
## Заметки
|
||||
- **trusted_proxies** в `config/configuration.yaml` должен включать `127.0.0.1` (для корректного `X-Forwarded-For` от nginx). Прописывается после первого запуска через `http:` секцию.
|
||||
- Папка `config/` исключена из git (`.gitignore`) — содержит секреты (токены, пароли, БД состояния).
|
||||
22
docker-compose.yml
Normal file
22
docker-compose.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
services:
|
||||
homeassistant:
|
||||
image: homeassistant/home-assistant:stable
|
||||
container_name: home-assistant
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:8123:8123"
|
||||
volumes:
|
||||
- ./config:/config
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
environment:
|
||||
- TZ=Europe/Moscow
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8123/manifest.json"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 60s
|
||||
logging:
|
||||
driver: journald
|
||||
options:
|
||||
tag: "{{.Name}}"
|
||||
Reference in New Issue
Block a user