Saltar al contenido principal
Gateway sirve una pequeña IU de control del navegador (Vite + Lit) desde el mismo puerto que el WebSocket de Gateway:
  • predeterminado: http://<host>:18789/
  • con gateway.tls.enabled: true: https://<host>:18789/
  • prefijo opcional: establece gateway.controlUi.basePath (por ejemplo, /openclaw)
Las capacidades están en IU de control. El resto de esta página se centra en los modos de enlace, la seguridad y las superficies expuestas a la web.

Webhooks

Cuando hooks.enabled=true, Gateway también expone un pequeño endpoint de Webhook en el mismo servidor HTTP. Consulta Configuración de Gatewayhooks para autenticación + payloads.

RPC HTTP de administración

RPC HTTP de administración expone métodos seleccionados del plano de control de Gateway en POST /api/v1/admin/rpc. Está desactivado de forma predeterminada y solo se registra cuando el plugin admin-http-rpc está habilitado. Consulta RPC HTTP de administración para el modelo de autenticación, los métodos permitidos y la comparación con WebSocket.

Configuración (activada de forma predeterminada)

La IU de control está habilitada de forma predeterminada cuando los recursos están presentes (dist/control-ui). Puedes controlarla mediante la configuración:
{
  gateway: {
    controlUi: { enabled: true, basePath: "/openclaw" }, // basePath optional
  },
}

Acceso con Tailscale

Serve integrado (recomendado)

Mantén Gateway en loopback y deja que Tailscale Serve lo proxifique:
{
  gateway: {
    bind: "loopback",
    tailscale: { mode: "serve" },
  },
}
Luego inicia gateway:
openclaw gateway
Abre:
  • https://<magicdns>/ (o tu gateway.controlUi.basePath configurado)

Enlace de Tailnet + token

{
  gateway: {
    bind: "tailnet",
    controlUi: { enabled: true },
    auth: { mode: "token", token: "your-token" },
  },
}
Luego inicia gateway (este ejemplo no loopback usa autenticación con token de secreto compartido):
openclaw gateway
Abre:
  • http://<tailscale-ip>:18789/ (o tu gateway.controlUi.basePath configurado)

Internet público (Funnel)

{
  gateway: {
    bind: "loopback",
    tailscale: { mode: "funnel" },
    auth: { mode: "password" }, // or OPENCLAW_GATEWAY_PASSWORD
  },
}

Notas de seguridad

  • La autenticación de Gateway es obligatoria de forma predeterminada (token, contraseña, trusted-proxy o encabezados de identidad de Tailscale Serve cuando están habilitados).
  • Los enlaces no loopback aún requieren autenticación de gateway. En la práctica, eso significa autenticación con token/contraseña o un proxy inverso con reconocimiento de identidad con gateway.auth.mode: "trusted-proxy".
  • El asistente crea autenticación con secreto compartido de forma predeterminada y normalmente genera un token de gateway (incluso en loopback).
  • En modo de secreto compartido, la IU envía connect.params.auth.token o connect.params.auth.password.
  • Cuando gateway.tls.enabled: true, el panel local y los ayudantes de estado renderizan URL de panel https:// y URL de WebSocket wss://.
  • En modos con identidad, como Tailscale Serve o trusted-proxy, la comprobación de autenticación de WebSocket se satisface desde los encabezados de la solicitud.
  • Para despliegues públicos no loopback de la IU de control, establece gateway.controlUi.allowedOrigins explícitamente (orígenes completos). Las cargas privadas del mismo origen en LAN/Tailnet se aceptan para loopback, RFC1918/link-local, .local, .ts.net y hosts CGNAT de Tailscale.
  • gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true habilita el modo de reserva de origen basado en el encabezado Host, pero es una degradación de seguridad peligrosa.
  • Con Serve, los encabezados de identidad de Tailscale pueden satisfacer la autenticación de la IU de control/WebSocket cuando gateway.auth.allowTailscale es true (no se requiere token/contraseña). Los endpoints de API HTTP no usan esos encabezados de identidad de Tailscale; siguen el modo normal de autenticación HTTP del gateway. Establece gateway.auth.allowTailscale: false para requerir credenciales explícitas. Consulta Tailscale y Seguridad. Este flujo sin token asume que el host de gateway es confiable.
  • gateway.tailscale.mode: "funnel" requiere gateway.auth.mode: "password" (contraseña compartida).

Compilar la IU

Gateway sirve archivos estáticos desde dist/control-ui. Compílalos con:
pnpm ui:build