First catalog apps to exercise core 26.17's app-to-app dependency feature — until now every app was standalone. - mosquitto: MQTT broker, first dependency *provider*. Mandatory auth; per-consumer accounts created by on_install/on_start hooks (scripts/provision-client.sh, scripts/ensure-client.sh) that run inside the broker container via `docker compose exec`. Provider-side password stash so on_start can restore an account after a volume wipe. - zigbee2mqtt: first dependency *consumer*. `requires` mosquitto; MQTT creds wired in from the provisioning hook via ZIGBEE2MQTT_CONFIG_* env. Serial coordinator path as a text setting + devices mapping. Supporting changes: - Bump vendored furtka_manifest.py (26.10-era -> 26.17) so the validator actually validates the `requires` schema instead of ignoring it. - Document `requires`/hooks in apps/README.md (was undocumented), including the three framework gaps building this pair surfaced. - CI now shellchecks app hook scripts (apps/*/scripts/*.sh), not just repo-root scripts/. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
15 lines
563 B
Text
15 lines
563 B
Text
# Furtka Mosquitto broker config.
|
|
#
|
|
# Auth is mandatory: anonymous publish/subscribe is off and every client
|
|
# must present credentials. Accounts are NOT managed by hand here — each
|
|
# consumer app (e.g. zigbee2mqtt) provisions its own account through the
|
|
# install/start hooks in ./scripts/, which call mosquitto_passwd against the
|
|
# password_file below. The file lives on the persistent data volume so
|
|
# accounts survive reboots.
|
|
listener 1883
|
|
|
|
allow_anonymous false
|
|
password_file /mosquitto/data/passwd
|
|
|
|
persistence true
|
|
persistence_location /mosquitto/data/
|