Web (Gateway)
El Gateway ofrece una pequeña IU de Control en el navegador (Vite + Lit) desde el mismo puerto que el WebSocket del Gateway:- predeterminado:
http://<host>:18789/ - prefijo opcional: configure
gateway.controlUi.basePath(p. ej.,/openclaw)
Webhooks
Cuandohooks.enabled=true, el Gateway también expone un pequeño endpoint de webhook en el mismo servidor HTTP.
Consulte Configuración del Gateway → hooks para autenticación y cargas útiles.
Configuración (activada por defecto)
La IU de Control está habilitada de forma predeterminada cuando los recursos están presentes (dist/control-ui).
Puede controlarla mediante la configuración:
Acceso con Tailscale
Serve integrado (recomendado)
Mantenga el Gateway en loopback y deje que Tailscale Serve lo proxifique:https://<magicdns>/(o sugateway.controlUi.basePathconfigurado)
Enlace al tailnet + token
http://<tailscale-ip>:18789/(o sugateway.controlUi.basePathconfigurado)
Internet público (Funnel)
Notas de seguridad
- La autenticación del Gateway es obligatoria de forma predeterminada (token/contraseña o encabezados de identidad de Tailscale).
- Los enlaces que no sean loopback siguen requiriendo un token/contraseña compartido (
gateway.autho variable de entorno). - El asistente genera un token del gateway de forma predeterminada (incluso en loopback).
- La IU envía
connect.params.auth.tokenoconnect.params.auth.password. - La IU de Control envía encabezados anti–clickjacking y solo acepta conexiones WebSocket del navegador del mismo origen, a menos que se configure
gateway.controlUi.allowedOrigins. - Con Serve, los encabezados de identidad de Tailscale pueden satisfacer la autenticación cuando
gateway.auth.allowTailscaleestrue(no se requiere token/contraseña). Configuregateway.auth.allowTailscale: falsepara exigir credenciales explícitas. Consulte Tailscale y Seguridad. gateway.tailscale.mode: "funnel"requieregateway.auth.mode: "password"(contraseña compartida).
Construcción de la UI
El Gateway sirve archivos estáticos desdedist/control-ui. Compílelos con: