edge-host: containers on host networking — no bridge, no NAT #99

Merged
k.renner merged 5 commits from edge-docker-ipv6 into master 2026-07-02 16:21:59 +00:00
Owner

Post-cutover fix arc: sml2mqtt could not reach the IPv6-first broker LB from the compose bridge (no v6, then unmasqueraded NAT66 SYNs). Final design per review feedback: both containers use host networking — real host addresses v4+v6, no bridge, no NAT; the interim daemon.json NAT66 experiment is removed again. Also includes the encrypted edge_host vault.yml (ansible-vault, password via ANSIBLE_VAULT_PASSWORD env — standard repo pattern). Deployed + verified: zwave-js serves HA (12 nodes), sml2mqtt publishes, meter data live.

🤖 Generated with Claude Code

Post-cutover fix arc: sml2mqtt could not reach the IPv6-first broker LB from the compose bridge (no v6, then unmasqueraded NAT66 SYNs). Final design per review feedback: both containers use host networking — real host addresses v4+v6, no bridge, no NAT; the interim daemon.json NAT66 experiment is removed again. Also includes the encrypted edge_host vault.yml (ansible-vault, password via ANSIBLE_VAULT_PASSWORD env — standard repo pattern). Deployed + verified: zwave-js serves HA (12 nodes), sml2mqtt publishes, meter data live. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
k.renner added 5 commits 2026-07-02 16:16:01 +00:00
mqtt.renner.uno resolves AAAA-first; the default bridge has no IPv6 and
sml2mqtt does not fall back to A records — InitialMqttConnectionFailed
loop after the USB cutover. Same daemon-level IPv6+ULA+NAT66 fix as the
netbird-proxy role.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fixed-cidr-v6 only covers docker0; the compose-created network stayed
v4-only and sml2mqtt kept failing to reach the broker.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Bridge-network IPv6 SYNs to the AAAA-first broker LB leave without
masquerade and die; sml2mqtt is outbound-only, and the host stack
reaches the broker (open3e proves it). Daemon/network v6 kept for
future containers.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Per review: pass real addresses instead of NAT. zwave-js binds
3000/8091 on the host directly; sml2mqtt is outbound-only; the NAT66
daemon config and compose-network v6 experiment are removed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
k.renner merged commit c520752fb8 into master 2026-07-02 16:21:59 +00:00
Sign in to join this conversation.