--- okf: "0.1" type: runbook visibility: private status: active updated: 2026-06-11 links: - ../services/ha-diag-agent.md --- # ha-diag-agent — deployment i testy ## First-time deployment See **[DEPLOY.md](DEPLOY.md)** for the full procedure: HA token creation, per-host `.env` config, deploy commands, verification steps, 48h shadow-mode observation, and rollback. **Shadow mode** (`HA_DIAG_SHADOW_MODE`, default `true` on the control-plane): `ha_websocket_dead` events are downgraded to `alert_only` with a `[SHADOW MODE]` note instead of queuing an automatic `container_restart`. Set to `false` in `/opt/homelab/config/control-plane/.env` on the VPS when ready for live actions. ## Deployment ```bash # 1. Create config on target node ssh oskar@ mkdir -p /opt/homelab/config/ha-diag-agent /var/lib/ha-diag-agent cat > /opt/homelab/config/ha-diag-agent/.env << 'EOF' HA_URL=http://homeassistant.local:8123 # or http://100.70.180.90:8123 for chelsty-infra HA_TOKEN= NODE_NAME=piha # or chelsty-infra LOCATION_TAG=ken # or chelsty CHECK_INTERVAL=60 EOF # 2. Deploy scripts/deploy/deploy.sh --service ha-diag-agent # 3. Verify docker ps --filter name=ha-diag-agent docker exec ha-diag-agent python -c "import urllib.request; print(urllib.request.urlopen('http://localhost:8087/health', timeout=5).read().decode())" ``` ### chelsty-infra note `chelsty-infra` runs docker-compose v1 (1.29.2). Use `docker-compose` (hyphenated): ```bash docker-compose -f docker-compose.yml up -d --build ``` ### HA long-lived token In HA UI: Profile → Long-Lived Access Tokens → Create token. ## Running Tests ```bash cd services/ha-diag-agent pip install -e ".[dev]" pytest tests/ -v ```