Remote access
Tailscale
OpenClaw, Gateway panosu ve WebSocket portu için Tailscale Serve (tailnet) veya Funnel (genel) ayarını otomatik yapılandırabilir. Bu, Gateway'in loopback'e bağlı kalmasını sağlarken Tailscale HTTPS, yönlendirme ve (Serve için) kimlik başlıkları sağlar.
Modlar
serve:tailscale serveüzerinden yalnızca tailnet'e açık Serve. Gateway127.0.0.1üzerinde kalır.funnel:tailscale funnelüzerinden genel HTTPS. OpenClaw paylaşılan bir parola gerektirir.off: Varsayılan (Tailscale otomasyonu yok).
Durum ve denetim çıktısı, bu OpenClaw Serve/Funnel modu için Tailscale maruziyeti ifadesini kullanır. off, OpenClaw'ın Serve veya Funnel'ı yönetmediği anlamına gelir; yerel Tailscale arka plan programının durdurulduğu veya oturumunun kapatıldığı anlamına gelmez.
Kimlik Doğrulama
El sıkışmayı denetlemek için gateway.auth.mode değerini ayarlayın:
none(yalnızca özel ingress)token(OPENCLAW_GATEWAY_TOKENayarlandığında varsayılan)password(OPENCLAW_GATEWAY_PASSWORDveya yapılandırma üzerinden paylaşılan gizli anahtar)trusted-proxy(kimlik farkındalıklı ters proxy; bkz. Güvenilir Proxy Kimlik Doğrulaması)
tailscale.mode = "serve" olduğunda ve gateway.auth.allowTailscale değeri true olduğunda, Control UI/WebSocket kimlik doğrulaması token/parola sağlamadan Tailscale kimlik başlıklarını (tailscale-user-login) kullanabilir. OpenClaw, kabul etmeden önce x-forwarded-for adresini yerel Tailscale arka plan programı (tailscale whois) üzerinden çözümleyip başlıkla eşleştirerek kimliği doğrular. OpenClaw bir isteği yalnızca loopback'ten Tailscale'in x-forwarded-for, x-forwarded-proto ve x-forwarded-host başlıklarıyla geldiğinde Serve olarak değerlendirir.
Tarayıcı cihaz kimliğini içeren Control UI operatör oturumları için, bu doğrulanmış Serve yolu cihaz eşleştirme gidiş dönüşünü de atlar. Tarayıcı cihaz kimliğini baypas etmez: cihazsız istemciler yine reddedilir ve node rolündeki veya Control UI dışı WebSocket bağlantıları normal eşleştirme ve kimlik doğrulama kontrollerini izlemeye devam eder.
HTTP API uç noktaları (örneğin /v1/*, /tools/invoke ve /api/channels/*) Tailscale kimlik başlığı kimlik doğrulamasını kullanmaz. Yine Gateway'in normal HTTP kimlik doğrulama modunu izlerler: varsayılan olarak paylaşılan gizli anahtar kimlik doğrulaması ya da bilinçli olarak yapılandırılmış güvenilir proxy / özel ingress none kurulumu.
Bu tokensız akış, Gateway ana makinesinin güvenilir olduğunu varsayar. Aynı ana makinede güvenilmeyen yerel kod çalışabiliyorsa gateway.auth.allowTailscale ayarını devre dışı bırakın ve bunun yerine token/parola kimlik doğrulaması gerektirin.
Açık paylaşılan gizli anahtar kimlik bilgilerini zorunlu kılmak için gateway.auth.allowTailscale: false ayarlayın ve gateway.auth.mode: "token" veya "password" kullanın.
Yapılandırma örnekleri
Yalnızca tailnet (Serve)
{ gateway: { bind: "loopback", tailscale: { mode: "serve" }, },}Açın: https://<magicdns>/ (veya yapılandırılmış gateway.controlUi.basePath değeriniz)
Control UI'ı cihaz ana makine adı yerine adlandırılmış bir Tailscale Service üzerinden dışa açmak için gateway.tailscale.serviceName değerini Service adı olarak ayarlayın:
{ gateway: { bind: "loopback", tailscale: { mode: "serve", serviceName: "svc:openclaw" }, },}Yukarıdaki örnekte başlangıç, Service URL'sini cihaz ana makine adı yerine https://openclaw.<tailnet-name>.ts.net/ olarak bildirir.
Tailscale Services, ana makinenin tailnet'inizde onaylı etiketli bir node olmasını gerektirir. Bu seçeneği etkinleştirmeden önce etiketi yapılandırın ve Service'i Tailscale içinde onaylayın; aksi takdirde tailscale serve --service=... Gateway başlangıcı sırasında başarısız olur.
Yalnızca tailnet (Tailnet IP'sine bağlanma)
Gateway'in doğrudan Tailnet IP'sinde dinlemesini istediğinizde bunu kullanın (Serve/Funnel yok).
{ gateway: { bind: "tailnet", auth: { mode: "token", token: "your-token" }, },}Başka bir Tailnet cihazından bağlanın:
- Control UI:
http://<tailscale-ip>:18789/ - WebSocket:
ws://<tailscale-ip>:18789
Genel internet (Funnel + paylaşılan parola)
{ gateway: { bind: "loopback", tailscale: { mode: "funnel" }, auth: { mode: "password", password: "replace-me" }, },}Parolayı diske kaydetmek yerine OPENCLAW_GATEWAY_PASSWORD kullanmayı tercih edin.
CLI örnekleri
openclaw gateway --tailscale serveopenclaw gateway --tailscale funnel --auth passwordNotlar
- Tailscale Serve/Funnel,
tailscaleCLI'ın kurulu ve oturum açmış olmasını gerektirir. tailscale.mode: "funnel", genel maruziyeti önlemek için kimlik doğrulama modupassworddeğilse başlamayı reddeder.gateway.tailscale.serviceNameyalnızca Serve modu için geçerlidir vetailscale serve --service=<name>komutuna geçirilir. Değer, Tailscale'insvc:<dns-label>Service adı biçimini kullanmalıdır; örneğinsvc:openclaw. Tailscale, Service ana makinelerinin etiketli node'lar olmasını gerektirir ve Serve bunu yayımlayabilmeden önce Service'in yönetici konsolunda onaylanması gerekebilir.- OpenClaw'ın kapanışta
tailscale serveveyatailscale funnelyapılandırmasını geri almasını istiyorsanızgateway.tailscale.resetOnExitayarını yapın. - Harici olarak yapılandırılmış bir
tailscale funnelrotasını Gateway yeniden başlatmaları boyunca canlı tutmak içingateway.tailscale.preserveFunnel: trueayarlayın. Etkinleştirildiğinde ve Gatewaymode: "serve"ile çalıştığında, OpenClaw Serve'ü yeniden uygulamadan öncetailscale funnel statusdenetimi yapar ve bir Funnel rotası zaten Gateway portunu kapsıyorsa bunu atlar. OpenClaw tarafından yönetilen Funnel'ın yalnızca parola ilkesi değişmez. gateway.bind: "tailnet"doğrudan Tailnet bağlamadır (HTTPS yok, Serve/Funnel yok).gateway.bind: "auto"loopback'i tercih eder; yalnızca Tailnet istiyorsanıztailnetkullanın.- Serve/Funnel yalnızca Gateway kontrol UI + WS öğesini dışa açar. Node'lar aynı Gateway WS uç noktası üzerinden bağlanır, bu nedenle Serve node erişimi için çalışabilir.
Tarayıcı denetimi (uzak Gateway + yerel tarayıcı)
Gateway'i bir makinede çalıştırıyor ancak başka bir makinedeki tarayıcıyı yönetmek istiyorsanız, tarayıcı makinesinde bir node ana makinesi çalıştırın ve ikisini de aynı tailnet üzerinde tutun. Gateway tarayıcı eylemlerini node'a proxy'ler; ayrı bir kontrol sunucusu veya Serve URL'si gerekmez.
Tarayıcı denetimi için Funnel'dan kaçının; node eşleştirmesini operatör erişimi gibi ele alın.
Tailscale önkoşulları + sınırlar
- Serve, tailnet'iniz için HTTPS'in etkin olmasını gerektirir; eksikse CLI bunu sorar.
- Serve, Tailscale kimlik başlıklarını enjekte eder; Funnel etmez.
- Funnel, Tailscale v1.38.3+, MagicDNS, HTTPS etkinliği ve bir funnel node özniteliği gerektirir.
- Funnel, TLS üzerinden yalnızca
443,8443ve10000portlarını destekler. - macOS üzerinde Funnel, açık kaynak Tailscale uygulama varyantını gerektirir.
Daha fazla bilgi
- Tailscale Serve genel bakışı: https://tailscale.com/kb/1312/serve
tailscale servekomutu: https://tailscale.com/kb/1242/tailscale-serve- Tailscale Funnel genel bakışı: https://tailscale.com/kb/1223/tailscale-funnel
tailscale funnelkomutu: https://tailscale.com/kb/1311/tailscale-funnel