Tailscale
Tailscale Serve / Funnel integrado para el dashboard del Gateway.
OpenClaw puede configurar automáticamente Tailscale Serve (tailnet) o Funnel (público) para el
dashboard del Gateway y puerto WebSocket. Esto mantiene el Gateway vinculado a loopback, y
Tailscale proporciona HTTPS, enrutamiento, y (para Serve) headers de identidad.
Modos
Solo tailnet via tailscale serve. El Gateway permanece en 127.0.0.1.
HTTPS público via tailscale funnel. OpenClaw requiere una contraseña compartida.
Predeterminado (sin automatización de Tailscale).
Autenticación
Establece gateway.auth.mode para controlar el handshake:
(predeterminado si OPENCLAW_GATEWAY_TOKEN está establecido)
(via OPENCLAW_GATEWAY_PASSWORD o secreto compartido en config)
Si tailscale.mode = "serve" y gateway.auth.allowTailscale es true,
las solicitudes de proxy Serve válidas pueden autenticarse via headers de identidad de Tailscale
(tailscale-user-login) sin proporcionar token/contraseña. OpenClaw valida
resolviendo la dirección x-forwarded-for via Tailscale local para identificar la identidad,
luego la compara contra el header usando el daemon (tailscale whois) antes de aceptar.
Si una solicitud llega desde loopback, OpenClaw solo la trata como Serve si tiene los headers
x-forwarded-for, x-forwarded-proto, x-forwarded-host
de Tailscale.
Para requerir credenciales explícitas, establece gateway.auth.allowTailscale: false o
fuerza gateway.auth.mode: "password".
Ejemplos de configuración
#
Solo tailnet (Serve)
{
gateway: {
bind: "loopback",
tailscale: { mode: "serve" },
},
}Abrir: https://<magicdns>/ (o tu gateway.controlUi.basePath configurado)
#
Solo tailnet (vincular a IP de Tailnet)
Usa esto si quieres que el Gateway escuche directamente en una IP de Tailnet (sin Serve/Funnel).
{
gateway: {
bind: "tailnet",
auth: { mode: "token", token: "your-token" },
},
}Conectar desde otro dispositivo de Tailnet:
UI de Control: http://<tailscale-ip>:18789/
WebSocket: ws://<tailscale-ip>:18789
Nota: loopback (http://127.0.0.1:18789) no funcionará en este modo.
#
Internet público (Funnel + contraseña compartida)
{
gateway: {
bind: "loopback",
tailscale: { mode: "funnel" },
auth: { mode: "password", password: "replace-me" },
},
}Prefiere OPENCLAW_GATEWAY_PASSWORD sobre almacenar la contraseña en disco.
Ejemplos de CLI
openclaw gateway --tailscale serve openclaw gateway --tailscale funnel --auth password
Notas
Tailscale Serve/Funnel requiere que el CLI de tailscale esté instalado y logueado.
tailscale.mode: "funnel" se negará a iniciar a menos que el modo de auth sea password para evitar exposición pública.
Si quieres que OpenClaw deshaga tailscale serve al salir, establece gateway.tailscale.resetOnExit
o configuración de tailscale funnel al salir.
gateway.bind: "tailnet" es vinculación directa de Tailnet (sin HTTPS, sin Serve/Funnel).
gateway.bind: "auto" prefiere loopback. Usa tailnet si quieres solo Tailnet.
Serve/Funnel solo expone la UI de control del Gateway + WS. Las conexiones de nodos son
via el mismo endpoint WS del Gateway, así que Serve puede ser usado para acceso de nodos.
Control de navegador (Gateway remoto + navegador local)
Si ejecutas el Gateway en una máquina pero quieres controlar un navegador desde otra,
ejecuta un host de nodo en la máquina del navegador y mantén ambos en el mismo tailnet.
El Gateway hace proxy de acciones de navegador al nodo. No se necesita servidor de control o URL de serve separado.
Evita Funnel para control de navegador. Trata el emparejamiento de nodos como acceso de operador.
Prerrequisitos + limitaciones de Tailscale
Serve requiere que HTTPS de tailnet esté habilitado. Si no, el CLI te avisará.
Serve inyecta headers de identidad de Tailscale. Funnel no.
Funnel requiere Tailscale v1.38.3+, MagicDNS, HTTPS habilitado, y el atributo de nodo Funnel.
Funnel solo soporta puertos 443, 8443, 10000 sobre TLS.
Funnel en macOS requiere la variante de app Tailscale de código abierto.
Aprende más
Resumen de Tailscale Serve: https://tailscale.com/kb/1312/serve
Comando tailscale serve: https://tailscale.com/kb/1242/tailscale-serve
Resumen de Tailscale Funnel: https://tailscale.com/kb/1223/tailscale-funnel
Comando tailscale funnel: https://tailscale.com/kb/1311/tailscale-funnel