Web interfaces
Web
El Gateway sirve una pequeña interfaz de control para navegador (Vite + Lit) desde el mismo puerto que el WebSocket del Gateway:
- valor predeterminado:
http://<host>:18789/ - con
gateway.tls.enabled: true:https://<host>:18789/ - prefijo opcional: establezca
gateway.controlUi.basePath(p. ej.,/openclaw)
Las funcionalidades se describen en Interfaz de control. Esta página trata los modos de vinculación, la seguridad y otras superficies orientadas a la web.
Configuración (activada de forma predeterminada)
La interfaz de control está activada de forma predeterminada cuando los recursos están presentes (dist/control-ui):
{ gateway: { controlUi: { enabled: true, basePath: "/openclaw" }, // basePath opcional },}Webhooks
Cuando hooks.enabled=true, el Gateway también expone un endpoint de Webhook en el mismo servidor HTTP. Consulte hooks en la referencia de configuración del Gateway para obtener información sobre la autenticación y las cargas útiles.
RPC HTTP de administración
POST /api/v1/admin/rpc expone determinados métodos del plano de control del Gateway mediante HTTP. Está desactivado de forma predeterminada y solo se registra cuando el Plugin admin-http-rpc está activado. Consulte RPC HTTP de administración para conocer el modelo de autenticación, los métodos permitidos y la comparación con la API de WebSocket.
Acceso mediante Tailscale
Serve integrado (recomendado)
Mantenga el Gateway en local loopback y permita que Tailscale Serve actúe como proxy:
{ gateway: { bind: "loopback", tailscale: { mode: "serve" }, },}Inicie el Gateway:
openclaw gatewayAbra https://<magicdns>/ (o el valor configurado de gateway.controlUi.basePath).
Vinculación a tailnet + token
{ gateway: { bind: "tailnet", controlUi: { enabled: true }, auth: { mode: "token", token: "your-token" }, },}Inicie el Gateway (este ejemplo sin local loopback utiliza autenticación mediante token de secreto compartido):
openclaw gatewayAbra http://<tailscale-ip>:18789/ (o el valor configurado de gateway.controlUi.basePath).
Internet pública (Funnel)
{ gateway: { bind: "loopback", tailscale: { mode: "funnel" }, auth: { mode: "password" }, // o OPENCLAW_GATEWAY_PASSWORD },}tailscale.mode: "funnel" requiere gateway.auth.mode: "password"; tanto Serve como Funnel requieren gateway.bind: "loopback".
Notas de seguridad
- La autenticación del Gateway es obligatoria de forma predeterminada: token, contraseña, proxy de confianza o encabezados de identidad de Tailscale Serve cuando están activados.
- Las vinculaciones que no sean de local loopback también requieren autenticación del Gateway: autenticación mediante token/contraseña o un proxy inverso con reconocimiento de identidad y
gateway.auth.mode: "trusted-proxy". - El asistente de incorporación crea autenticación mediante secreto compartido de forma predeterminada y suele generar un token del Gateway, incluso en local loopback.
- En el modo de secreto compartido, la interfaz envía
connect.params.auth.tokenoconnect.params.auth.passworddurante el establecimiento de conexión de WebSocket. - Con
gateway.tls.enabled: true, los asistentes locales del panel y de estado muestran URLhttps://y URL de WebSocketwss://. - En los modos que incluyen identidad (Tailscale Serve,
trusted-proxy), la comprobación de autenticación de WebSocket se satisface mediante los encabezados de la solicitud en lugar de un secreto compartido. - Para implementaciones públicas de la interfaz de control que no usen local loopback, establezca explícitamente
gateway.controlUi.allowedOrigins(orígenes completos). Las cargas privadas del mismo origen se aceptan sin esta opción para local loopback, RFC1918/enlace local,.local,.ts.nety hosts CGNAT de Tailscale. gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback: trueactiva el uso alternativo del origen a partir del encabezado Host; esto supone una peligrosa reducción de la seguridad.- Con Serve, los encabezados de identidad de Tailscale satisfacen la autenticación de la interfaz de control/WebSocket cuando
gateway.auth.allowTailscale: true(no se requiere token ni contraseña). Los endpoints de la API HTTP no utilizan los encabezados de identidad de Tailscale; siempre siguen el modo normal de autenticación HTTP del Gateway. Establezcagateway.auth.allowTailscale: falsepara exigir credenciales explícitas incluso mediante Serve. Este flujo sin token presupone que el propio host del Gateway es de confianza. Consulte Tailscale y Seguridad.
Compilación de la interfaz
El Gateway sirve archivos estáticos desde dist/control-ui:
pnpm ui:build