59 lines
2.1 KiB
Markdown
59 lines
2.1 KiB
Markdown
# Smart Home Runtime Stack
|
|
|
|
Runtime-Zustand fuer Home Assistant auf Kallilabcore. Dieser Ordner gehoert zu
|
|
`homelab-infra`, weil Komodo den Stack deployt und Renovate die Images pflegt.
|
|
|
|
## Dienste
|
|
|
|
- `homeassistant`: Home Assistant Container, erreichbar ueber Traefik unter
|
|
`https://home.kaleschke.info`
|
|
- `smarthome-mosquitto`: interner MQTT-Broker fuer Home Assistant, spaeter
|
|
Zigbee2MQTT und ESPHome
|
|
|
|
## Abhaengigkeiten
|
|
|
|
- `frontend_net` existiert bereits und wird von Traefik genutzt.
|
|
- `smarthome_net` wird durch diesen Stack angelegt und ist `internal: true`.
|
|
- Das Fachrepo `smart-home-kalli` muss auf dem Unraid-Host unter
|
|
`/mnt/user/services/smart-home-kalli` liegen. Nur ausgewählte YAML-Dateien
|
|
werden read-only nach `/config` gemountet; `.storage` bleibt in
|
|
`/mnt/user/appdata/homeassistant`.
|
|
- Vor dem ersten Start muessen diese Dateien hostseitig angelegt werden:
|
|
- `/mnt/user/appdata/homeassistant/secrets.yaml`
|
|
- `/mnt/user/appdata/homeassistant/trusted_proxies.yaml`
|
|
- `/mnt/user/appdata/mosquitto/config/passwordfile`
|
|
- `/mnt/user/appdata/mosquitto/config/aclfile`
|
|
|
|
Das detaillierte Host-Bootstrap-Runbook liegt unter
|
|
`docs/runbooks/smart-home-bootstrap.md`.
|
|
|
|
## MQTT Bootstrap
|
|
|
|
Beispiel fuer den initialen Home-Assistant-MQTT-User auf dem Unraid-Host:
|
|
|
|
```sh
|
|
mkdir -p /mnt/user/appdata/mosquitto/config
|
|
docker run --rm -it \
|
|
-v /mnt/user/appdata/mosquitto/config:/mosquitto/external_config \
|
|
eclipse-mosquitto:2.0.22 \
|
|
mosquitto_passwd -c /mosquitto/external_config/passwordfile homeassistant
|
|
cat > /mnt/user/appdata/mosquitto/config/aclfile <<'EOF'
|
|
user homeassistant
|
|
topic readwrite #
|
|
EOF
|
|
```
|
|
|
|
LAN-Port `1883` bleibt in Phase 1 geschlossen. Eine Portfreigabe fuer externe
|
|
MQTT-Clients wird erst in der ESPHome-Phase mit ACLs und per-Device-Usern
|
|
ergaenzt.
|
|
|
|
## Ecowitt
|
|
|
|
Ecowitt wird nicht in Phase 1 exponiert. Wegen des globalen Traefik
|
|
HTTP-zu-HTTPS-Redirects bleibt die Ingress-Entscheidung offen:
|
|
|
|
1. Traefik-HTTP-Ausnahme nur fuer den Ecowitt-Webhook, falls der globale
|
|
EntryPoint-Redirect gezielt abloesbar ist.
|
|
2. Dokumentierter LAN-only Host-Port `8123` als Fallback, wenn Option 1 den
|
|
bestehenden Traefik-Standard zu stark verbiegt.
|