local. ब्राउज़िंग एक केवल-LAN सुविधा है: बंडल किया गया bonjour Plugin LAN विज्ञापन का स्वामी है, जो macOS होस्ट पर अपने-आप शुरू होता है और Linux, Windows तथा कंटेनरीकृत Gateway परिनियोजनों पर ऑप्ट-इन है। यही बीकन क्रॉस-नेटवर्क खोज के लिए कॉन्फ़िगर किए गए वाइड-एरिया DNS-SD डोमेन के माध्यम से भी प्रकाशित हो सकता है। खोज सर्वोत्तम-प्रयास पर आधारित है और SSH या Tailnet-आधारित कनेक्टिविटी का स्थान नहीं लेती।
Tailscale पर वाइड-एरिया Bonjour (यूनिकास्ट DNS-SD)
यदि Node और Gateway अलग-अलग नेटवर्क पर हैं, तो मल्टीकास्ट mDNS सीमा पार नहीं कर सकता। Tailscale पर यूनिकास्ट DNS-SD (“Wide-Area Bonjour”) पर स्विच करके खोज का वही उपयोगकर्ता अनुभव बनाए रखें:- Gateway होस्ट पर एक DNS सर्वर चलाएँ, जिस तक Tailnet के माध्यम से पहुँचा जा सके।
- एक समर्पित ज़ोन (उदाहरण:
openclaw.internal.) के अंतर्गत_openclaw-gw._tcpके लिए DNS-SD रिकॉर्ड प्रकाशित करें। - Tailscale split DNS को कॉन्फ़िगर करें, ताकि आपका चुना हुआ डोमेन iOS सहित क्लाइंट के लिए उस DNS सर्वर के माध्यम से रिज़ॉल्व हो।
openclaw.internal. केवल एक उदाहरण है — OpenClaw किसी भी खोज डोमेन का समर्थन करता है। iOS/Android Node, local. और आपके कॉन्फ़िगर किए गए वाइड-एरिया डोमेन, दोनों को ब्राउज़ करते हैं।
Gateway कॉन्फ़िगरेशन
discovery.wideArea.domain, फ़ॉलबैक के रूप में OPENCLAW_WIDE_AREA_DOMAIN एनवायरनमेंट वेरिएबल को भी स्वीकार करता है।
एक-बार का DNS सर्वर सेटअप (Gateway होस्ट, केवल macOS)
brew install coredns) इंस्टॉल करता है और इसे इस प्रकार कॉन्फ़िगर करता है:
- केवल Gateway के Tailscale इंटरफ़ेस पर पोर्ट 53 सुनना
~/.openclaw/dns/<domain>.dbसे आपका चुना हुआ डोमेन (उदाहरण:openclaw.internal.) उपलब्ध कराना
--apply के बिना चलाएँ।
Tailnet से कनेक्टेड मशीन से सत्यापित करें:
Tailscale DNS सेटिंग्स
Tailscale एडमिन कंसोल में:- Gateway के Tailnet IP (UDP/TCP 53) की ओर इंगित करने वाला नेमसर्वर जोड़ें।
- split DNS जोड़ें, ताकि आपका खोज डोमेन उस नेमसर्वर का उपयोग करे।
_openclaw-gw._tcp ब्राउज़ कर सकते हैं।
Gateway लिसनर सुरक्षा
Gateway WS पोर्ट (डिफ़ॉल्ट18789) डिफ़ॉल्ट रूप से लूपबैक से बाइंड होता है। LAN/Tailnet पहुँच के लिए स्पष्ट रूप से बाइंड करें और प्रमाणीकरण सक्षम रखें। केवल-Tailnet सेटअप के लिए ~/.openclaw/openclaw.json में gateway.bind: "tailnet" सेट करें और Gateway (या macOS मेनूबार ऐप) को पुनः आरंभ करें।
क्या विज्ञापित होता है
केवल Gateway ही_openclaw-gw._tcp को विज्ञापित करता है। सक्षम होने पर LAN मल्टीकास्ट विज्ञापन बंडल किए गए bonjour Plugin से आता है; वाइड-एरिया DNS-SD प्रकाशन का स्वामित्व Gateway के पास रहता है।
सेवा प्रकार
_openclaw-gw._tcp- Gateway ट्रांसपोर्ट बीकन, जिसका उपयोग macOS/iOS/Android Node करते हैं।
TXT कुंजियाँ (गैर-गोपनीय संकेत)
सुरक्षा नोट्स:
- Bonjour/mDNS TXT रिकॉर्ड अप्रमाणित होते हैं। क्लाइंट को TXT को आधिकारिक रूटिंग जानकारी नहीं मानना चाहिए।
- क्लाइंट को रिज़ॉल्व किए गए सेवा एंडपॉइंट (SRV + A/AAAA) का उपयोग करके रूट करना चाहिए।
lanHost,tailnetDns,gatewayPort, औरgatewayTlsSha256को केवल संकेत मानें। - इसी प्रकार SSH ऑटो-टार्गेटिंग को केवल TXT संकेतों के बजाय रिज़ॉल्व किए गए सेवा होस्ट का उपयोग करना चाहिए।
- TLS पिनिंग को कभी भी किसी विज्ञापित
gatewayTlsSha256द्वारा पहले से संग्रहीत पिन को ओवरराइड नहीं करने देना चाहिए। - iOS/Android Node को खोज-आधारित सीधे कनेक्शन केवल-TLS मानने चाहिए और पहली बार के फ़िंगरप्रिंट पर विश्वास करने से पहले उपयोगकर्ता की स्पष्ट पुष्टि आवश्यक करनी चाहिए।
macOS पर डीबगिंग
अंतर्निहित टूल:Gateway लॉग में डीबगिंग
Gateway एक रोलिंग लॉग फ़ाइल लिखता है (स्टार्टअप परgateway log file: ... के रूप में प्रिंट होती है)। विशेष रूप से इन bonjour: पंक्तियों को खोजें:
bonjour: advertise failed ...bonjour: suppressing ciao netmask assertion ...bonjour: ... name conflict resolved/hostname conflict resolved
(2) या (3) जैसे प्रत्यय जोड़ सकता है। ये प्रत्यय सामान्य विरोध समाधान हैं और डुप्लिकेट OCM पर्यवेक्षण का संकेत नहीं देते।
Bonjour विज्ञापित .local होस्ट के लिए सिस्टम होस्टनाम का उपयोग करता है, बशर्ते वह वैध DNS लेबल हो। यदि सिस्टम होस्टनाम में स्पेस, अंडरस्कोर या कोई अन्य अमान्य DNS-लेबल वर्ण है, तो OpenClaw openclaw.local पर फ़ॉलबैक करता है। स्पष्ट होस्ट लेबल की आवश्यकता होने पर Gateway शुरू करने से पहले OPENCLAW_MDNS_HOSTNAME=<name> सेट करें।
iOS Node पर डीबगिंग
iOS Node,_openclaw-gw._tcp खोजने के लिए NWBrowser का उपयोग करता है।
लॉग कैप्चर करने के लिए: Settings -> Gateway -> Advanced -> Discovery Debug Logs, फिर Settings -> Gateway -> Advanced -> Discovery Logs -> पुनरुत्पादित करें -> Copy। लॉग में ब्राउज़र स्थिति संक्रमण और परिणाम-समूह परिवर्तन शामिल होते हैं।
Bonjour कब सक्षम करें
macOS होस्ट पर खाली-कॉन्फ़िगरेशन वाले Gateway स्टार्टअप के लिए Bonjour अपने-आप शुरू होता है, क्योंकि स्थानीय ऐप और आस-पास के iOS/Android Node आमतौर पर समान-LAN खोज पर निर्भर होते हैं। Linux, Windows या किसी अन्य गैर-macOS होस्ट पर समान-LAN ऑटो-डिस्कवरी उपयोगी होने पर इसे स्पष्ट रूप से सक्षम करें:discovery.mdns.mode का उपयोग करता है कि कितना TXT मेटाडेटा प्रकाशित करना है; यही मोड वाइड-एरिया DNS-SD रिकॉर्ड में वैकल्पिक TXT संकेतों को भी नियंत्रित करता है। मोड:
Bonjour कब अक्षम करें
जब LAN मल्टीकास्ट विज्ञापन अनावश्यक, अनुपलब्ध या हानिकारक हो, तब Bonjour को अक्षम रखें — सामान्य मामलों में गैर-macOS सर्वर, Docker ब्रिज नेटवर्किंग, WSL या mDNS मल्टीकास्ट छोड़ने वाली नेटवर्क नीति शामिल हैं। Gateway अपने प्रकाशित URL, SSH, Tailnet या वाइड-एरिया DNS-SD के माध्यम से उपलब्ध रहता है; केवल LAN ऑटो-डिस्कवरी अविश्वसनीय होती है। परिनियोजन-सीमित समस्याओं के लिए एनवायरनमेंट ओवरराइड का उपयोग करें (Docker इमेज, सेवा फ़ाइलों, लॉन्च स्क्रिप्ट और एकबारगी डीबगिंग के लिए सुरक्षित — एनवायरनमेंट हटने पर यह भी हट जाता है):Docker संबंधी सावधानियाँ
यदिOPENCLAW_DISABLE_BONJOUR सेट नहीं है, तो पता लगाए गए कंटेनरों में बंडल किया गया Bonjour Plugin LAN मल्टीकास्ट विज्ञापन अपने-आप अक्षम कर देता है। Docker ब्रिज नेटवर्क आमतौर पर कंटेनर और LAN के बीच mDNS मल्टीकास्ट (224.0.0.251:5353) फ़ॉरवर्ड नहीं करते, इसलिए कंटेनर से विज्ञापन करने पर खोज का काम करना दुर्लभ है।
सावधानियाँ:
- Bonjour macOS होस्ट पर अपने-आप शुरू होता है और अन्य जगहों पर ऑप्ट-इन है। इसे अक्षम रखने से Gateway बंद नहीं होता — यह केवल LAN मल्टीकास्ट विज्ञापन छोड़ता है।
- Bonjour अक्षम करने से
gateway.bindनहीं बदलता; Docker अभी भी डिफ़ॉल्ट रूप सेOPENCLAW_GATEWAY_BIND=lanका उपयोग करता है, ताकि प्रकाशित होस्ट पोर्ट काम करे। - Bonjour अक्षम करने से वाइड-एरिया DNS-SD अक्षम नहीं होता। जब Gateway और Node एक ही LAN पर न हों, तब वाइड-एरिया खोज या Tailnet का उपयोग करें।
- Docker के बाहर उसी
OPENCLAW_CONFIG_DIRका पुनः उपयोग करने से कंटेनर की ऑटो-अक्षम नीति बनी नहीं रहती। OPENCLAW_DISABLE_BONJOUR=0केवल होस्ट नेटवर्किंग, macvlan या किसी अन्य ऐसे नेटवर्क के लिए सेट करें, जहाँ mDNS मल्टीकास्ट का गुजरना ज्ञात हो; बलपूर्वक अक्षम करने के लिए इसे1पर सेट करें।
अक्षम Bonjour की समस्या निवारण
यदि Docker सेटअप के बाद कोई Node अब Gateway को अपने-आप नहीं खोजता:-
पुष्टि करें कि Gateway स्वचालित, बलपूर्वक-सक्षम या बलपूर्वक-अक्षम मोड में चल रहा है:
-
पुष्टि करें कि प्रकाशित पोर्ट के माध्यम से स्वयं Gateway तक पहुँचा जा सकता है:
-
Bonjour अक्षम होने पर प्रत्यक्ष लक्ष्य का उपयोग करें:
- नियंत्रण UI या स्थानीय टूल:
http://127.0.0.1:18789 - LAN क्लाइंट:
http://<gateway-host>:18789 - क्रॉस-नेटवर्क क्लाइंट: Tailnet MagicDNS, Tailnet IP, SSH टनल या वाइड-एरिया DNS-SD
- नियंत्रण UI या स्थानीय टूल:
-
यदि आपने Docker में जानबूझकर Bonjour Plugin सक्षम किया है और
OPENCLAW_DISABLE_BONJOUR=0के साथ विज्ञापन को बलपूर्वक सक्रिय किया है, तो होस्ट से मल्टीकास्ट का परीक्षण करें:यदि ब्राउज़िंग खाली है, या Gateway लॉग में बार-बार ciao प्रोब विफलताएँ दिखाई देती हैं, तोOPENCLAW_DISABLE_BONJOUR=1पुनर्स्थापित करें और प्रत्यक्ष या Tailnet मार्ग का उपयोग करें।
सामान्य विफलता मोड
- Bonjour नेटवर्कों के पार काम नहीं करता: Tailnet या SSH का उपयोग करें।
- मल्टीकास्ट अवरुद्ध है: कुछ Wi-Fi नेटवर्क mDNS को अक्षम कर देते हैं।
- विज्ञापक जाँच/घोषणा में अटका है: अवरुद्ध मल्टीकास्ट, कंटेनर ब्रिज, WSL, या इंटरफ़ेस में बार-बार बदलाव वाले होस्ट प्रत्युत्तरकर्ता को अघोषित स्थिति में छोड़ सकते हैं। Gateway सीधे, SSH, Tailnet, या वाइड-एरिया DNS-SD मार्गों से उपलब्ध रहता है; मल्टीकास्ट अनुपलब्ध होने पर
discovery.mdns.mode: "off"याOPENCLAW_DISABLE_BONJOUR=1से LAN Bonjour को अक्षम करें। - Docker ब्रिज नेटवर्किंग: पहचाने गए कंटेनरों में Bonjour स्वतः अक्षम हो जाता है। केवल होस्ट, macvlan, या किसी अन्य mDNS-सक्षम नेटवर्क के लिए
OPENCLAW_DISABLE_BONJOUR=0सेट करें। - स्लीप/इंटरफ़ेस में बदलाव: macOS अस्थायी रूप से mDNS परिणाम खो सकता है; पुनः प्रयास करें।
- ब्राउज़ करना काम करता है, लेकिन रिज़ॉल्व करना विफल होता है: मशीन के नाम सरल रखें (इमोजी या विराम-चिह्नों से बचें), फिर Gateway पुनः आरंभ करें। सेवा इंस्टेंस का नाम होस्ट नाम से बनता है, इसलिए अत्यधिक जटिल नाम कुछ रिज़ॉल्वर को भ्रमित कर सकते हैं।
एस्केप किए गए इंस्टेंस नाम (\032)
Bonjour/DNS-SD अक्सर सेवा इंस्टेंस नामों में बाइट्स को दशमलव \DDD अनुक्रमों के रूप में एस्केप करता है (रिक्त स्थान \032 बन जाते हैं)। प्रोटोकॉल स्तर पर यह सामान्य है; UI को प्रदर्शन के लिए इन्हें डीकोड करना चाहिए (iOS BonjourEscapes.decode का उपयोग करता है)।
सक्षम करना / अक्षम करना / कॉन्फ़िगरेशन
macOS होस्ट डिफ़ॉल्ट रूप से बंडल किए गए LAN खोज Plugin को स्वतः आरंभ करते हैं। जब Bonjour Plugin सक्षम हो और
OPENCLAW_DISABLE_BONJOUR सेट न हो, तब Bonjour सामान्य होस्ट पर विज्ञापन करता है और पहचाने गए कंटेनरों (Docker, Fly.io मशीनों और सामान्य कंटेनर रनटाइम) के भीतर स्वतः अक्षम हो जाता है।
संबंधित दस्तावेज़
- खोज नीति और ट्रांसपोर्ट चयन: खोज
- Node पेयरिंग + अनुमोदन: Gateway पेयरिंग