This repo is being extracted from a larger Home Assistant automation monorepo. During the transition, the monorepo and this repo will both contain copies of the auth and remote-access tooling.
Use copied files for now.
The monorepo remains the operational deployment source until this standalone repo has completed at least one real converge cycle from its own checkout. That means:
ha-federated-access first when they touch auth or remote accessThis is intentionally conservative because these scripts install packages, write /opt and /var/log, patch Home Assistant configuration, and restart containers.
These paths are now logically owned by ha-federated-access:
homeassistant/auth_oidc/static/injection.js
homeassistant/auth_oidc/static/ha-branding-overrides.js
netbird/docker-compose.yaml
netbird/init-secrets.sh
netbird/render-config.sh
netbird/setup-instance.sh
netbird/nginx-ha-proxy.conf
netbird/templates/
patches/hass-oidc-auth-subject-link.patch
scripts/bootstrap-authentik-user.sh
scripts/converge-authentik-oidc-providers.sh
scripts/converge-homeassistant-oidc.sh
scripts/converge-netbird-browser-access.sh
scripts/converge-netbird-idps.sh
scripts/install-netbird.sh
scripts/users-cli.py
scripts/users.sh
scripts/verify-netbird.sh
scripts/verify-users-cli.sh
terraform/cloudflare-dns/
The monorepo may keep copies temporarily, but those copies should be treated as vendored deployment copies, not the source of truth.
For auth/remote-access changes:
Validation commands:
bash -n scripts/*.sh scripts/lib/*.sh netbird/*.sh
python3 -m py_compile scripts/*.py
node --check homeassistant/auth_oidc/static/injection.js
node --check homeassistant/auth_oidc/static/ha-branding-overrides.js
Before the monorepo stops carrying full copies, this repo must prove:
examples/config.example.yaml can be adapted to the real deployment without adding old monorepo-only keysscripts/converge-homeassistant-oidc.sh runs successfully from this repo checkoutscripts/converge-netbird-browser-access.sh runs successfully from this repo checkout when browser access is enabledscripts/verify-netbird.sh passes or reports only known environmental warnings/auth/oidc/welcome response after converge.envUse release tarballs after the standalone-proof milestone.
Recommended monorepo behavior:
HA_FEDERATED_ACCESS_VERSION=v0.1.0..vendor/ha-federated-access..env and config.yaml.Example shape:
curl -fsSL \
"https://github.com/josephmienko/ha-federated-access/archive/refs/tags/${HA_FEDERATED_ACCESS_VERSION}.tar.gz" \
-o /tmp/ha-federated-access.tar.gz
tar -xzf /tmp/ha-federated-access.tar.gz -C .vendor
ENV_FILE="$PWD/.env" \
CONFIG_FILE="$PWD/config.yaml" \
.vendor/ha-federated-access-*/scripts/converge-homeassistant-oidc.sh
This keeps the monorepo small and makes auth tooling upgrades explicit.
Do not use a git subtree yet.
A subtree would preserve history and make local edits easy, but it also makes ownership ambiguous while the extracted repo is still moving quickly. Use copied files during proof-out, then release tarballs for operational consumption.
Do not make this HACS.
This repo is host-level infrastructure orchestration. HACS may still be relevant later for a small Home Assistant integration or frontend companion, but not for these install/converge scripts.
The monorepo can replace copied files with a release-tarball wrapper when:
ENV_FILE and CONFIG_FILE