Bonjour / mDNS-discovery
OpenClaw gebruikt Bonjour (mDNS / DNS‑SD) als een LAN‑only gemak om een actieve Gateway (WebSocket-endpoint) te ontdekken. Het is best‑effort en vervangt niet SSH of Tailnet‑gebaseerde connectiviteit.Wide‑area Bonjour (Unicast DNS‑SD) over Tailscale
Als de node en de gateway zich op verschillende netwerken bevinden, gaat multicast mDNS niet over die grens. Je kunt dezelfde discovery‑UX behouden door over te schakelen op unicast DNS‑SD (“Wide‑Area Bonjour”) over Tailscale. Hogere stappen op niveau:- Draai een DNS‑server op de Gateway-host (bereikbaar via Tailnet).
- Publiceer DNS‑SD‑records voor
_openclaw-gw._tcponder een aparte zone (voorbeeld:openclaw.internal.). - Configureer Tailscale split DNS zodat je gekozen domein via die DNS‑server wordt opgelost voor clients (inclusief iOS).
openclaw.internal. is slechts een voorbeeld.
iOS/Android-nodes doorzoeken zowel local. als je geconfigureerde wide‑area‑domein.
Gateway-config (aanbevolen)
Eenmalige DNS‑serverinstallatie (Gateway-host)
- te luisteren op poort 53 alleen op de Tailscale‑interfaces van de Gateway
- je gekozen domein (voorbeeld:
openclaw.internal.) te serveren vanuit~/.openclaw/dns/<domain>.db
Tailscale DNS-instellingen
In de Tailscale‑beheerconsole:- Voeg een nameserver toe die verwijst naar het tailnet‑IP van de Gateway (UDP/TCP 53).
- Voeg split DNS toe zodat je discovery‑domein die nameserver gebruikt.
_openclaw-gw._tcp in je discovery‑domein doorzoeken zonder multicast.
Gateway‑listenerbeveiliging (aanbevolen)
De Gateway WS‑poort (standaard18789) bindt standaard aan loopback. Voor LAN/tailnet‑toegang
bind expliciet en houd authenticatie ingeschakeld.
Voor tailnet‑only‑opstellingen:
- Stel
gateway.bind: "tailnet"in~/.openclaw/openclaw.jsonin. - Herstart de Gateway (of herstart de macOS‑menubalkapp).
Wat adverteert
Alleen de Gateway adverteert_openclaw-gw._tcp.
Servicetypen
_openclaw-gw._tcp— Gateway‑transportbeacon (gebruikt door macOS/iOS/Android‑nodes).
TXT‑sleutels (niet‑geheime hints)
De Gateway adverteert kleine niet‑geheime hints om UI‑flows handig te maken:role=gatewaydisplayName=<friendly name>lanHost=<hostname>.localgatewayPort=<port>(Gateway WS + HTTP)gatewayTls=1(alleen wanneer TLS is ingeschakeld)gatewayTlsSha256=<sha256>(alleen wanneer TLS is ingeschakeld en een vingerafdruk beschikbaar is)canvasPort=<port>(alleen wanneer de canvas‑host is ingeschakeld; standaard18793)sshPort=<port>(standaard 22 wanneer niet overschreven)transport=gatewaycliPath=<path>(optioneel; absoluut pad naar een uitvoerbareopenclaw‑entrypoint)tailnetDns=<magicdns>(optionele hint wanneer Tailnet beschikbaar is)
- Bonjour/mDNS TXT-records zijn unauthenticated. Clients mogen TXT niet als gezaghebbende routeringsinformatie behandelen.
- Clients moeten routeren via het opgeloste service-endpoint (SRV + A/AAAA). Behandel
lanHost,tailnetDns,gatewayPortengatewayTlsSha256alleen als hints. - TLS-pinning mag er nooit toe leiden dat een geadverteerde
gatewayTlsSha256een eerder opgeslagen pin overschrijft. - iOS/Android-nodes moeten discovery-gebaseerde directe verbindingen behandelen als alleen-TLS en expliciete gebruikersbevestiging vereisen voordat een eerste fingerprint wordt vertrouwd.
Debugging op macOS
Handige ingebouwde tools:-
Blader door instanties:
-
Eén instantie resolven (vervang
<instance>):
Debugging in Gateway‑logs
De Gateway schrijft een rollend logbestand (bij het opstarten afgedrukt alsgateway log file: ...). Let op regels met bonjour:, met name:
bonjour: advertise failed ...bonjour: ... name conflict resolved/hostname conflict resolvedbonjour: watchdog detected non-announced service ...
Debugging op iOS‑node
De iOS‑node gebruiktNWBrowser om _openclaw-gw._tcp te ontdekken.
Logs vastleggen:
- Instellingen → Gateway → Geavanceerd → Discovery Debug Logs
- Instellingen → Gateway → Geavanceerd → Discovery Logs → reproduceer → Kopiëren
Veelvoorkomende foutmodi
- Bonjour gaat niet over netwerken heen: gebruik Tailnet of SSH.
- Multicast geblokkeerd: sommige wifi‑netwerken schakelen mDNS uit.
- Slaapstand / interface‑churn: macOS kan mDNS‑resultaten tijdelijk laten vallen; probeer opnieuw.
- Doorzoeken werkt maar resolven faalt: houd machinenamen eenvoudig (vermijd emoji’s of leestekens) en herstart daarna de Gateway. De servicenaam wordt afgeleid van de hostnaam, dus te complexe namen kunnen sommige resolvers in de war brengen.
Geëscapete instantienamen (\032)
Bonjour/DNS‑SD escapt vaak bytes in servicenaam‑instanties als decimale \DDD‑
reeksen (bijv. spaties worden \032).
- Dit is normaal op protocolniveau.
- UI’s moeten dit decoderen voor weergave (iOS gebruikt
BonjourEscapes.decode).
Uitschakelen / configuratie
OPENCLAW_DISABLE_BONJOUR=1schakelt adverteren uit (legacy:OPENCLAW_DISABLE_BONJOUR).gateway.bindin~/.openclaw/openclaw.jsonbepaalt de bind‑modus van de Gateway.OPENCLAW_SSH_PORToverschrijft de SSH‑poort die in TXT wordt geadverteerd (legacy:OPENCLAW_SSH_PORT).OPENCLAW_TAILNET_DNSpubliceert een MagicDNS‑hint in TXT (legacy:OPENCLAW_TAILNET_DNS).OPENCLAW_CLI_PATHoverschrijft het geadverteerde CLI‑pad (legacy:OPENCLAW_CLI_PATH).
Gerelateerde documentatie
- Discovery‑beleid en transportselectie: Discovery
- Node‑koppeling + goedkeuringen: Gateway pairing