Summary
netbird.stoganet.com is hardcoded in several places where the other hostnames use \${DOMAIN} or environment variables. This makes the repo less portable and harder to reuse.
Context
Most service hostnames in compose/Caddyfile are derived from \${DOMAIN} (e.g. jellyfin.\${DOMAIN}, seerr.\${DOMAIN}). The NetBird hostname is the exception — it appears as a literal in:
compose/Caddyfile (site block)
compose/netbird/config.yaml.example (exposedAddress, auth.issuer, dashboardRedirectURIs)
compose/netbird/dashboard.env (NETBIRD_MGMT_API_ENDPOINT, AUTH_AUTHORITY)
compose/setup.sh (--management-url)
Scope
- Introduce
NETBIRD_HOSTNAME (or reuse \${DOMAIN} + a netbird subdomain) consistently across all four files
- Update the
.example files to use the placeholder
- Keep the live config working through the migration
Out of scope: any change to NetBird's runtime behavior. This is purely templating.
Acceptance criteria
Notes
Care needed with dashboard.env because the NetBird dashboard reads those values at container start — needs a restart of the dashboard container after the change, not just Caddy.
Summary
netbird.stoganet.comis hardcoded in several places where the other hostnames use\${DOMAIN}or environment variables. This makes the repo less portable and harder to reuse.Context
Most service hostnames in
compose/Caddyfileare derived from\${DOMAIN}(e.g.jellyfin.\${DOMAIN},seerr.\${DOMAIN}). The NetBird hostname is the exception — it appears as a literal in:compose/Caddyfile(site block)compose/netbird/config.yaml.example(exposedAddress,auth.issuer,dashboardRedirectURIs)compose/netbird/dashboard.env(NETBIRD_MGMT_API_ENDPOINT,AUTH_AUTHORITY)compose/setup.sh(--management-url)Scope
NETBIRD_HOSTNAME(or reuse\${DOMAIN}+ anetbirdsubdomain) consistently across all four files.examplefiles to use the placeholderOut of scope: any change to NetBird's runtime behavior. This is purely templating.
Acceptance criteria
netbird.stoganet.comremains in tracked files (except possibly indocs/prose)Notes
Care needed with
dashboard.envbecause the NetBird dashboard reads those values at container start — needs a restart of the dashboard container after the change, not just Caddy.