mirror of
https://github.com/ruvnet/RuView.git
synced 2026-10-18 21:00:22 -05:00
Since ADR-296 the sensing server binds its UDP receiver to 127.0.0.1 by default, and docker-entrypoint.sh never set a UDP bind. Inside a container that address cannot receive from the published 5005/udp port, so the default image never shows a node (#2089, follow-up to #1394). The entrypoint now binds UDP on 0.0.0.0 only when the operator has set an ADR-296 source guard (RUVIEW_UDP_ALLOW, RUVIEW_UDP_INSECURE_LAN, or the matching CLI flags). Without a guard it keeps the loopback bind and prints a note explaining why no node will appear and what to set, including the macOS bridge-gateway allowlist. An explicit RUVIEW_UDP_BIND or --udp-bind still wins. I chose this over defaulting the bind to 0.0.0.0 unconditionally. With no guard that would make the server refuse to start (exit 1) in auto mode, which binds UDP, and the guard would still have to be supplied. The change keeps ADR-296's fail-closed rule as is: a routable bind never happens without an allowlist or the explicit insecure opt-in. Auth defaults are unchanged. The entrypoint also normalizes RUVIEW_UDP_INSECURE_LAN=1/yes/on to true, since clap rejects 1 for that flag. The compose service passes RUVIEW_API_TOKEN, the RUVIEW_UDP_* variables and SENSING_ALLOWED_HOSTS through from the shell, with notes on the exit-64 auth check, the macOS gateway allowlist and the 421 Host check. The README and user-guide Docker quickstarts now set a token, and the user guide gains a "Receiving ESP32 frames in Docker" section. Co-Authored-By: claude-flow <ruv@ruv.net>