# 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.