Operational scripts for deploying, managing, and monitoring the HomeIQ stack.
Single configuration: Use domain scripts only. See docs/deployment/DEPLOYMENT_QUICK_REFERENCE.md.
# Full stack (Windows)
.\scripts\start-stack.ps1
# Full stack (Linux/Mac)
./scripts/start-stack.shDo not use docker compose up -d from the project root — it creates orphan project groups.
| Script | Purpose | When to Use |
|---|---|---|
domain.sh / domain.ps1 |
Per-domain Docker Compose helper (start, stop, restart, status, logs, build); passes repo-root .env for Compose interpolation (same as start-stack) |
Day-to-day domain management |
start-stack.sh / start-stack.ps1 |
Start all 9 domains in dependency order with health polling | Full stack startup |
ensure-network.sh / ensure-network.ps1 |
Create the homeiq-network Docker bridge if it doesn't exist |
Called automatically by other scripts; run manually if network issues occur |
deploy-phase-5.sh |
Tiered production deployment with health gates and smoke tests | Production deployments |
check-service-health.sh |
Check health of all services, with JSON and critical-only modes | Health monitoring and CI checks |
backup-postgres.sh |
Back up PostgreSQL databases | Scheduled or pre-deployment backups |
backup-influxdb.sh |
Back up InfluxDB data | Scheduled or pre-deployment backups |
check-pg-stability.sh |
Verify PostgreSQL connection stability and schema health | After DB changes or suspected instability |
Deprecated scripts from the pre-domain-split era are in scripts/archive/. See archive/README.md for details.
Start a single domain:
./scripts/domain.sh start core-platformStart the full stack (all 9 domains in order):
./scripts/start-stack.shStart the full stack without waiting for health checks:
./scripts/start-stack.sh --skip-waitCheck domain status:
./scripts/domain.sh status data-collectorsView logs for a specific service:
./scripts/domain.sh logs ml-engine ai-core-serviceList all valid domain names:
./scripts/domain.sh listBuild images for a domain:
./scripts/domain.sh build core-platformRun a full health check:
./scripts/check-service-health.sh
./scripts/check-service-health.sh --json
./scripts/check-service-health.sh --critical-only