diff --git a/docs/MASTER_TODO.md b/docs/MASTER_TODO.md index 0e96c93..a0a3a5a 100644 --- a/docs/MASTER_TODO.md +++ b/docs/MASTER_TODO.md @@ -25,6 +25,7 @@ Host-Reports (`/mnt/user/backups/restore-reports/`) und in der Git-Historie. | Restore-Test Tailscale | Operator | State-Validierung + Reconnect nur auf Wegwerf-Host/VM, danach Geraet in Tailscale-Admin entfernen | `ops/restore-tests/tailscale-runbook.md` | | Authelia OIDC fuer Apps | Operator/Claude | Live: Grafana + Mealie (verifiziert), Paperless deployed (Login-Test offen). Immich + Nextcloud bewusst geparkt bis Family-Onboarding (siehe `docs/DECISIONS.md` 2026-06-06) | `docs/AUTHELIA_OIDC_PLAN.md` | | Glance-v2-Widgets: Tokens setzen | Operator | In Komodo Stack-ENV fuer `ops-glance` setzen: `GLANCE_KOMODO_API_KEY`/`_SECRET` (Komodo read-only API-Key), `GLANCE_GITEA_TOKEN` (read-only, scope `read:repository`), `GLANCE_PAPERLESS_TOKEN`, `GLANCE_MEALIE_TOKEN`; bis dahin zeigen die neuen Widgets Fehler/leer. Speedtest-Widget: falls weiter 0.0, API-Response pruefen | `ops/glance/config/` | +| Home Assistant Foundation-Abnahme | Operator/Codex | Sofort: Owner-Onboarding abschliessen. Danach Komodo-Stack-Eintrag + Webhook sauber anlegen/verifizieren, HA-MQTT-Smoke-Test und HA-native `backup.create` testen, Restore-Probe fuer HA/Mosquitto dokumentieren. Bis Owner existiert, bleibt Traefik per `homeassistant-lan-only` auf LAN/Tailscale begrenzt | `docs/runbooks/smart-home-bootstrap.md`, `docs/RESTORE_MATRIX.md` | | Audit-PDF aus `docs/` entfernen | Operator | `docs/KalliLab_CORE_Audit_2026-06-06.pdf` (untracked) extern ablegen (H:/ oder Documents-Share) und lokal loeschen; Binaerdateien gehoeren nicht ins GitOps-Repo | Doku-Regeln `docs/REPO_MAP.md` | --- diff --git a/docs/runbooks/smart-home-bootstrap.md b/docs/runbooks/smart-home-bootstrap.md index 1fc36af..906dca6 100644 --- a/docs/runbooks/smart-home-bootstrap.md +++ b/docs/runbooks/smart-home-bootstrap.md @@ -78,7 +78,29 @@ docker logs --tail=100 smarthome-mosquitto - MQTT-Integration verbindet sich mit Host `smarthome-mosquitto`, Port `1883`. - HA-native Backup-Erstellung funktioniert. -## 6. Abnahmebedingung +## 6. Fachrepo-Update + +Das Fachrepo `/mnt/user/services/smart-home-kalli` ist kein eigener +Komodo-Stack. Aenderungen wirken erst nach diesem Host-Ablauf: + +```sh +cd /mnt/user/services/smart-home-kalli +git pull --ff-only origin main +docker restart homeassistant +``` + +Der Restart ist Pflicht, weil `configuration.yaml`, `automations.yaml`, +`scripts.yaml` und `scenes.yaml` als Einzeldateien in den Container gemountet +werden. Nach einem `git pull` kann Docker sonst noch den alten Datei-Inode sehen. + +## 7. UI-Editor-Politik + +`automations.yaml`, `scripts.yaml` und `scenes.yaml` sind read-only aus Git +gemountet. Der Home-Assistant-UI-Editor fuer diese Dateien ist deshalb nicht der +primaere Schreibweg. Automationen und Scripts werden in Git gepflegt; UI-State +und Integrations-State bleiben in `.storage` und werden per Borg gesichert. + +## 8. Abnahmebedingung Vor produktiven Energie-Automationen muss ein Restore-Test fuer `/mnt/user/appdata/homeassistant`, `/mnt/user/appdata/mosquitto` und den Clone diff --git a/ops/borg-ui/BACKUP_SCOPE.md b/ops/borg-ui/BACKUP_SCOPE.md index c3b0b0a..b40d86d 100644 --- a/ops/borg-ui/BACKUP_SCOPE.md +++ b/ops/borg-ui/BACKUP_SCOPE.md @@ -49,7 +49,7 @@ The Unraid flash configuration archive is intentional as well and must be treate | Filebrowser | file-backed state dump + file data | `/local/borg-dumps`, `/local/appdata/filebrowser` | | InfluxDB 3 Core | file data | `/local/appdata/influxdb3/data`, `/local/appdata/influxdb3/plugins` | | Home Assistant | HA-native backup + file state | `/local/appdata/homeassistant`, `/local/services/smart-home-kalli` | -| Smart-Home MQTT / Mosquitto | file data | `/local/appdata/mosquitto/config`, `/local/appdata/mosquitto/data`, `/local/appdata/mosquitto/log` | +| Smart-Home MQTT / Mosquitto | file data | `/local/appdata/mosquitto/config`, `/local/appdata/mosquitto/data` | | Zigbee2MQTT (planned) | file data + coordinator state | `/local/appdata/zigbee2mqtt`, `/local/services/smart-home-kalli` | | ESPHome (planned) | Fachrepo + optional build/runtime cache | `/local/services/smart-home-kalli/esphome`, optional `/local/appdata/esphome` | | Hermes Agent | file data + SSH key | `/local/appdata/hermes-agent/data`, `/local/secrets/hermes_runner_id_ed25519` | diff --git a/smart-home/docker-compose.yml b/smart-home/docker-compose.yml index 6e8897d..f3b80e4 100644 --- a/smart-home/docker-compose.yml +++ b/smart-home/docker-compose.yml @@ -28,6 +28,10 @@ services: - traefik.http.routers.homeassistant.entrypoints=websecure - traefik.http.routers.homeassistant.tls=true - traefik.http.routers.homeassistant.tls.certresolver=le + # Temporary onboarding guard: keep HA reachable only from LAN/Tailscale + # until the owner account exists. + - traefik.http.routers.homeassistant.middlewares=homeassistant-lan-only + - traefik.http.middlewares.homeassistant-lan-only.ipallowlist.sourcerange=192.168.178.0/24,100.64.0.0/10 - traefik.http.services.homeassistant.loadbalancer.server.port=8123 mosquitto: