Merge pull request 'edge-host: containers on host networking — no bridge, no NAT' (#99) from edge-docker-ipv6 into master

Reviewed-on: gitea_admin/homelab#99
This commit was merged in pull request #99.
This commit is contained in:
2026-07-02 18:21:58 +02:00
3 changed files with 32 additions and 3 deletions
@@ -0,0 +1,18 @@
$ANSIBLE_VAULT;1.1;AES256
66366335386261303463626230383532323132366232373839643563643531666662383366313336
6562666333613539396234363135306238323662343132380a636631303364356564656536633164
62373531663635633139373231343434393035646263373833623636613133653561353266383064
3261663765316431620a343665653835363433373637616538396163376366353235653561663364
30353532373061633139623032373263376339616334623931636537633263663237663466636461
39646165343961316364613431393563356562646438346466653133313264366562393164666633
64616164333235653734313562303864633534303037306332613934386238313764656465333465
63363936653566326534333434633631316536336537656334656661663637353830333237356532
66323566356138633161383334363334663035313762636561626466613165333065623136663537
62623863373465316636643933323539303232653263636462646363383861353932366138353233
37303363313362306364303062663435653335343561373934366433306439616431323365636365
64363837353466396130643962343134376361343431383631336565633866623037613065346364
61373664653634656135373466373038626533376361373862316562623035306632333533333231
37353665623738623534353965303634663331613433623661343338666530313863313731316337
37616364633261356361383937376132333636663464326336343439626666313636373436633338
63663730323134376536663562633034323339643537393937336362633333373434643037663331
3634
+3
View File
@@ -29,6 +29,9 @@
state: started
enabled: true
# No docker daemon.json needed: both services run with network_mode: host
# (real host addresses, v4+v6, no bridge/NAT) — see docker-compose.yml.j2.
# --- Directory layout ---
- name: Create service directories
ansible.builtin.file:
@@ -5,6 +5,9 @@
# No `privileged` needed here: docker's --device handles the device-cgroup
# grant that hostPath in k8s could not (that was the only reason the pods
# ran privileged).
# Both services use host networking: real host addresses (v4+v6), no
# bridge, no NAT. The broker LB is IPv6-first and docker bridge NAT66 is
# a tarpit (unmasqueraded SYNs die silently); the host stack just works.
services:
zwave-js:
image: {{ edge_zwavejs_image }}
@@ -25,14 +28,19 @@ services:
# settings.json is edited via the UI and persists here; zwave.port
# stays /dev/zwave.
- ./zwave-js/store:/usr/src/app/store
ports:
- "3000:3000" # Z-Wave JS websocket — HA zwave_js integration
- "8091:8091" # web UI
# Host networking: binds 3000 (Z-Wave JS websocket for HA) and 8091
# (web UI) directly on the host.
network_mode: host
sml2mqtt:
image: {{ edge_sml2mqtt_image }}
container_name: sml2mqtt
restart: unless-stopped
# Outbound-only (serial in, MQTT out) — host networking sidesteps the
# docker NAT66 gap: the broker LB is IPv6-first and bridge-network v6
# SYNs leave unmasqueraded and die. The host stack reaches fd99::81
# fine (open3e proves it continuously).
network_mode: host
# Serial exclusivity: this is the ONLY reader of the meter port —
# HA's edl21 integration stays disabled (see sml2mqtt-config comment
# history in the k8s repo).