Files
NestQuest/api/README.md
T
overseerandClaude Opus 5.5 3321a70ffd Bind the API port to a configurable LAN address for the reverse proxy
Publish port 8080 on ${NESTQUEST_BIND_ADDRESS:-127.0.0.1} so the shared
Traefik proxy (TLS for nestquest.cubecraftlabs.com) can reach the API
box, while an unconfigured deployment stays localhost-only. Document the
variable in deploy/.env.example and the production topology in
api/README.md.

Maestro task 9d121e76-e1ce-479f-aef5-0e5e9756fda8.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 07:52:47 -04:00

1.8 KiB

NestQuest API

Standalone FastAPI service owning the NestQuest database (Feature 16). Served with uvicorn --factory api.app:create_app; configuration is environment-supplied (api/config.py) and every variable is required.

Runtime dependencies

api/requirements.txt is the API deployable's OWN dependency manifest (fastapi, uvicorn, pyjwt[crypto], httpx) — deliberately kept out of the integration's pyproject.toml dev group, which exists only so the monorepo test venv can run the API tests.

Container deployment (scaffold)

The image is built from the repository ROOT context (the API loads the bundled domain core from custom_components/nestquest/core/ by file location, so both trees must be in the build context):

docker build -t nestquest-api:latest .

Run it with compose — the SQLite file lives on the named volume nestquest-db so recreating the container keeps household data:

cp deploy/.env.example deploy/.env   # then fill in real values
docker compose -f deploy/compose.yaml up -d --build

deploy/.env is git-ignored and supplies the secrets (panel service token, Authentik OIDC settings); NESTQUEST_DB_PATH is fixed to /var/lib/nestquest/nestquest.db by compose.

The published port binds NESTQUEST_BIND_ADDRESS from deploy/.env and defaults to 127.0.0.1 (localhost only). In production TLS is terminated by the shared Traefik reverse proxy, which serves https://nestquest.cubecraftlabs.com (Let's Encrypt, auto-renewed, HTTP redirected to HTTPS) and forwards to the API box on port 8080 — so on that box set NESTQUEST_BIND_ADDRESS to its LAN address (10.60.1.14). Traefik only allows /api/v1/panel from the Home Assistant host. Network separation, backup and restore are later Feature 17 tasks.