OpenClawSkills
GitHub
Gateway / Operaciones • 5 min de lectura

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.

Tutorial.step

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).

Tutorial.step

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".

Tutorial.step

Ejemplos de configuración

#

Tutorial.step

Solo tailnet (Serve)

Json5
{
  gateway: {
    bind: "loopback",
    tailscale: { mode: "serve" },
  },
}

Abrir: https://<magicdns>/ (o tu gateway.controlUi.basePath configurado)

#

Tutorial.step

Solo tailnet (vincular a IP de Tailnet)

Usa esto si quieres que el Gateway escuche directamente en una IP de Tailnet (sin Serve/Funnel).

Json5
{
  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.

#

Tutorial.step

Internet público (Funnel + contraseña compartida)

Json5
{
  gateway: {
    bind: "loopback",
    tailscale: { mode: "funnel" },
    auth: { mode: "password", password: "replace-me" },
  },
}

Prefiere OPENCLAW_GATEWAY_PASSWORD sobre almacenar la contraseña en disco.

Tutorial.step

Ejemplos de CLI

Bash
openclaw gateway --tailscale serve
openclaw gateway --tailscale funnel --auth password
Tutorial.step

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.

Tutorial.step

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.

Tutorial.step

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.

Tutorial.step

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