मोड
serve:tailscale serveके माध्यम से केवल-tailnet Serve। Gateway127.0.0.1पर रहता है।funnel:tailscale funnelके माध्यम से सार्वजनिक HTTPS। OpenClaw को साझा पासवर्ड चाहिए।off: डिफ़ॉल्ट (कोई Tailscale ऑटोमेशन नहीं)।
off का अर्थ है कि OpenClaw Serve या Funnel को प्रबंधित नहीं कर रहा है; इसका अर्थ यह नहीं है कि स्थानीय Tailscale daemon बंद है या लॉग आउट है।
ऑथ
हैंडशेक नियंत्रित करने के लिएgateway.auth.mode सेट करें:
none(केवल निजी इनग्रेस)token(जबOPENCLAW_GATEWAY_TOKENसेट हो तो डिफ़ॉल्ट)password(OPENCLAW_GATEWAY_PASSWORDया कॉन्फ़िग के माध्यम से साझा सीक्रेट)trusted-proxy(पहचान-जागरूक रिवर्स प्रॉक्सी; देखें विश्वसनीय प्रॉक्सी ऑथ)
tailscale.mode = "serve" और gateway.auth.allowTailscale true हो,
Control UI/WebSocket ऑथ token/password दिए बिना Tailscale पहचान हेडर
(tailscale-user-login) का उपयोग कर सकता है। OpenClaw पहचान को स्वीकार करने से पहले स्थानीय Tailscale daemon (tailscale whois) के माध्यम से x-forwarded-for पते को resolve करके और उसे हेडर से मिलाकर सत्यापित करता है।
OpenClaw किसी अनुरोध को केवल तब Serve मानता है जब वह loopback से
Tailscale के x-forwarded-for, x-forwarded-proto, और x-forwarded-host
हेडर के साथ आता है।
ब्राउज़र डिवाइस पहचान शामिल करने वाले Control UI ऑपरेटर सत्रों के लिए, यह सत्यापित Serve पथ device-pairing round trip को भी छोड़ देता है। यह ब्राउज़र डिवाइस पहचान को bypass नहीं करता: बिना-डिवाइस वाले clients अब भी अस्वीकार किए जाते हैं, और node-role या गैर-Control UI WebSocket कनेक्शन अब भी सामान्य pairing और auth जांचों का पालन करते हैं।
HTTP API endpoints (उदाहरण के लिए /v1/*, /tools/invoke, और /api/channels/*)
Tailscale पहचान-हेडर ऑथ का उपयोग नहीं करते। वे अब भी gateway के सामान्य HTTP ऑथ मोड का पालन करते हैं: डिफ़ॉल्ट रूप से shared-secret ऑथ, या जानबूझकर कॉन्फ़िगर किया गया trusted-proxy / private-ingress none सेटअप।
यह tokenless flow मानता है कि gateway host विश्वसनीय है। यदि उसी host पर अविश्वसनीय स्थानीय code चल सकता है, तो gateway.auth.allowTailscale अक्षम करें और इसके बजाय token/password ऑथ आवश्यक करें।
स्पष्ट shared-secret credentials आवश्यक करने के लिए, gateway.auth.allowTailscale: false
सेट करें और gateway.auth.mode: "token" या "password" का उपयोग करें।
कॉन्फ़िग उदाहरण
केवल-tailnet (Serve)
https://<magicdns>/ (या आपका कॉन्फ़िगर किया गया gateway.controlUi.basePath)
Control UI को device hostname के बजाय नामित Tailscale Service के माध्यम से expose करने के लिए, gateway.tailscale.serviceName को Service नाम पर सेट करें:
https://openclaw.<tailnet-name>.ts.net/ के रूप में रिपोर्ट करता है।
Tailscale Services के लिए host का आपके tailnet में approved tagged node होना आवश्यक है। इस विकल्प को सक्षम करने से पहले Tailscale में tag कॉन्फ़िगर करें और Service को approve करें, अन्यथा gateway startup के दौरान tailscale serve --service=... विफल हो जाएगा।
केवल-tailnet (Tailnet IP से bind करें)
जब आप चाहते हैं कि Gateway सीधे Tailnet IP पर सुने, तो इसका उपयोग करें (कोई Serve/Funnel नहीं)।- Control UI:
http://<tailscale-ip>:18789/ - WebSocket:
ws://<tailscale-ip>:18789
Loopback (
http://127.0.0.1:18789) इस मोड में काम नहीं करेगा।सार्वजनिक इंटरनेट (Funnel + साझा पासवर्ड)
OPENCLAW_GATEWAY_PASSWORD को प्राथमिकता दें।
CLI उदाहरण
नोट्स
- Tailscale Serve/Funnel के लिए
tailscaleCLI का installed और logged in होना आवश्यक है। - सार्वजनिक exposure से बचने के लिए
tailscale.mode: "funnel"तब तक start करने से इनकार करता है जब तक auth modepasswordन हो। gateway.tailscale.serviceNameकेवल Serve मोड पर लागू होता है औरtailscale serve --service=<name>को पास किया जाता है। मान को Tailscale केsvc:<dns-label>Service नाम format का उपयोग करना चाहिए, उदाहरण के लिएsvc:openclaw। Tailscale के लिए Service hosts का tagged nodes होना आवश्यक है, और Serve द्वारा उसे publish करने से पहले Service को admin console में approval की आवश्यकता हो सकती है।- यदि आप चाहते हैं कि OpenClaw shutdown पर
tailscale serveयाtailscale funnelकॉन्फ़िगरेशन को undo करे, तोgateway.tailscale.resetOnExitसेट करें। - gateway restarts के दौरान externally configured
tailscale funnelroute को alive रखने के लिएgateway.tailscale.preserveFunnel: trueसेट करें। सक्षम होने पर और gateway केmode: "serve"में चलने पर, OpenClaw Serve को फिर से apply करने से पहलेtailscale funnel statusजांचता है और जब कोई Funnel route पहले से gateway port को cover करता है, तो उसे छोड़ देता है। OpenClaw-managed Funnel password-only policy अपरिवर्तित रहती है। gateway.bind: "tailnet"एक direct Tailnet bind है (कोई HTTPS नहीं, कोई Serve/Funnel नहीं)।gateway.bind: "auto"loopback को प्राथमिकता देता है; यदि आप केवल-Tailnet चाहते हैं तोtailnetका उपयोग करें।- Serve/Funnel केवल Gateway control UI + WS को expose करते हैं। Nodes उसी Gateway WS endpoint पर connect करते हैं, इसलिए Serve node access के लिए काम कर सकता है।
ब्राउज़र नियंत्रण (remote Gateway + local browser)
यदि आप Gateway को एक machine पर चलाते हैं लेकिन browser को दूसरी machine पर drive करना चाहते हैं, तो browser machine पर एक node host चलाएं और दोनों को उसी tailnet पर रखें। Gateway browser actions को node तक proxy करेगा; अलग control server या Serve URL की आवश्यकता नहीं है। browser control के लिए Funnel से बचें; node pairing को operator access जैसा मानें।Tailscale पूर्वापेक्षाएं + सीमाएं
- Serve के लिए आपके tailnet के लिए HTTPS enabled होना आवश्यक है; यदि यह अनुपस्थित हो तो CLI prompt करता है।
- Serve Tailscale पहचान हेडर inject करता है; Funnel नहीं करता।
- Funnel के लिए Tailscale v1.38.3+, MagicDNS, HTTPS enabled, और funnel node attribute आवश्यक हैं।
- Funnel TLS पर केवल ports
443,8443, और10000का समर्थन करता है। - macOS पर Funnel के लिए open-source Tailscale app variant आवश्यक है।
और जानें
- Tailscale Serve overview: https://tailscale.com/kb/1312/serve
tailscale servecommand: https://tailscale.com/kb/1242/tailscale-serve- Tailscale Funnel overview: https://tailscale.com/kb/1223/tailscale-funnel
tailscale funnelcommand: https://tailscale.com/kb/1311/tailscale-funnel