Web interfaces
Web
Le Gateway fournit une petite interface de contrôle dans le navigateur (Vite + Lit) sur le même port que le WebSocket du Gateway :
- par défaut :
http://<host>:18789/ - avec
gateway.tls.enabled: true:https://<host>:18789/ - préfixe facultatif : définissez
gateway.controlUi.basePath(par exemple/openclaw)
Les fonctionnalités sont décrites dans Interface de contrôle. Cette page présente les modes de liaison, la sécurité et les autres surfaces accessibles sur le Web.
Configuration (activée par défaut)
L’interface de contrôle est activée par défaut lorsque les ressources sont présentes (dist/control-ui) :
{ gateway: { controlUi: { enabled: true, basePath: "/openclaw" }, // basePath facultatif },}Webhooks
Lorsque hooks.enabled=true, le Gateway expose également un point de terminaison Webhook sur le même serveur HTTP. Consultez hooks dans la référence de configuration du Gateway pour l’authentification et les charges utiles.
RPC HTTP d’administration
POST /api/v1/admin/rpc expose certaines méthodes du plan de contrôle du Gateway via HTTP. Désactivé par défaut ; enregistré uniquement lorsque le Plugin admin-http-rpc est activé. Consultez RPC HTTP d’administration pour le modèle d’authentification, les méthodes autorisées et la comparaison avec l’API WebSocket.
Accès Tailscale
Serve intégré (recommandé)
Maintenez le Gateway sur local loopback et laissez Tailscale Serve agir comme proxy :
{ gateway: { bind: "loopback", tailscale: { mode: "serve" }, },}Démarrez le Gateway :
openclaw gatewayOuvrez https://<magicdns>/ (ou la valeur configurée pour gateway.controlUi.basePath).
Liaison au tailnet + jeton
{ gateway: { bind: "tailnet", controlUi: { enabled: true }, auth: { mode: "token", token: "your-token" }, },}Démarrez le Gateway (cet exemple hors local loopback utilise une authentification par jeton à secret partagé) :
openclaw gatewayOuvrez http://<tailscale-ip>:18789/ (ou la valeur configurée pour gateway.controlUi.basePath).
Internet public (Funnel)
{ gateway: { bind: "loopback", tailscale: { mode: "funnel" }, auth: { mode: "password" }, // ou OPENCLAW_GATEWAY_PASSWORD },}tailscale.mode: "funnel" nécessite gateway.auth.mode: "password" ; Serve et Funnel nécessitent tous deux gateway.bind: "loopback".
Remarques sur la sécurité
- L’authentification du Gateway est requise par défaut : jeton, mot de passe, proxy de confiance ou en-têtes d’identité Tailscale Serve lorsqu’ils sont activés.
- Les liaisons hors local loopback nécessitent toujours l’authentification du Gateway : authentification par jeton ou mot de passe, ou proxy inverse tenant compte de l’identité avec
gateway.auth.mode: "trusted-proxy". - L’assistant d’intégration crée par défaut une authentification à secret partagé et génère généralement un jeton de Gateway, même sur local loopback.
- En mode secret partagé, l’interface envoie
connect.params.auth.tokenouconnect.params.auth.passwordlors de l’établissement de la connexion WebSocket. - Avec
gateway.tls.enabled: true, les outils locaux de tableau de bord et d’état affichent des URLhttps://et des URL WebSocketwss://. - Dans les modes transmettant l’identité (Tailscale Serve,
trusted-proxy), la vérification de l’authentification WebSocket s’appuie sur les en-têtes de la requête plutôt que sur un secret partagé. - Pour les déploiements publics de l’interface de contrôle hors local loopback, définissez explicitement
gateway.controlUi.allowedOriginsavec les origines complètes. Sans ce paramètre, les chargements privés depuis la même origine sont acceptés pour local loopback, les hôtes RFC1918 ou link-local,.local,.ts.netet les hôtes CGNAT de Tailscale. gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback: trueactive le repli sur l’origine fournie par l’en-tête Host ; il s’agit d’un dangereux affaiblissement de la sécurité.- Avec Serve, les en-têtes d’identité Tailscale satisfont l’authentification de l’interface de contrôle et du WebSocket lorsque
gateway.auth.allowTailscale: true(aucun jeton ni mot de passe requis). Les points de terminaison de l’API HTTP n’utilisent pas les en-têtes d’identité Tailscale ; ils suivent toujours le mode d’authentification HTTP normal du Gateway. Définissezgateway.auth.allowTailscale: falsepour exiger des identifiants explicites, même via Serve. Ce flux sans jeton suppose que l’hôte du Gateway lui-même est fiable. Consultez Tailscale et Sécurité.
Compilation de l’interface
Le Gateway fournit les fichiers statiques depuis dist/control-ui :
pnpm ui:build