Tableau de bord (Control UI)
Le tableau de bord Gateway est la Control UI dans le navigateur, servie à/ par défaut
(personnalisable avec gateway.controlUi.basePath).
Ouverture rapide (Gateway locale) :
Références clés :
- Control UI pour l’utilisation et les capacités de l’interface.
- Tailscale pour l’automatisation Serve/Funnel.
- Surfaces web pour les modes de liaison et les notes de sécurité.
connect.params.auth.tokenconnect.params.auth.password- En-têtes d’identité Tailscale Serve lorsque
gateway.auth.allowTailscale: true - En-têtes d’identité de proxy de confiance lorsque
gateway.auth.mode: "trusted-proxy"
gateway.auth dans la Configuration Gateway.
Note de sécurité : la Control UI est une surface d’administration (chat, configuration, approbations d’exécution).
Ne l’exposez pas publiquement. L’interface conserve les jetons d’URL du tableau de bord dans sessionStorage
pour la session courante de l’onglet du navigateur et l’URL Gateway sélectionnée, puis les retire de l’URL après chargement.
Privilégiez localhost, Tailscale Serve ou un tunnel SSH.
Chemin rapide (recommandé)
- Après l’onboarding, la CLI ouvre automatiquement le tableau de bord et affiche un lien propre (sans jeton).
- Pour le rouvrir à tout moment :
openclaw dashboard(copie le lien, ouvre le navigateur si possible, affiche une indication SSH en mode headless). - Si l’interface demande une authentification par secret partagé, collez le jeton ou le mot de passe configuré dans les paramètres de la Control UI.
Bases de l’authentification (local vs distant)
- Localhost : ouvrez
http://127.0.0.1:18789/. - Source de jeton à secret partagé :
gateway.auth.token(ouOPENCLAW_GATEWAY_TOKEN) ;openclaw dashboardpeut le transmettre via le fragment d’URL pour un bootstrap unique, et la Control UI le conserve danssessionStoragepour la session courante de l’onglet du navigateur et l’URL Gateway sélectionnée au lieu delocalStorage. - Si
gateway.auth.tokenest géré par SecretRef,openclaw dashboardaffiche/copie/ouvre volontairement une URL sans jeton. Cela évite d’exposer des jetons gérés de manière externe dans les journaux du shell, l’historique du presse-papiers ou les arguments de lancement du navigateur. - Si
gateway.auth.tokenest configuré comme SecretRef et n’est pas résolu dans votre shell actuel,openclaw dashboardaffiche quand même une URL sans jeton accompagnée d’indications exploitables pour configurer l’authentification. - Mot de passe à secret partagé : utilisez le
gateway.auth.passwordconfiguré (ouOPENCLAW_GATEWAY_PASSWORD). Le tableau de bord ne conserve pas les mots de passe après rechargement. - Modes avec identité : Tailscale Serve peut satisfaire l’authentification de la Control UI/WebSocket
via des en-têtes d’identité lorsque
gateway.auth.allowTailscale: true, et un proxy inverse sensible à l’identité non loopback peut satisfairegateway.auth.mode: "trusted-proxy". Dans ces modes, le tableau de bord n’a pas besoin d’un secret partagé collé pour le WebSocket. - Pas localhost : utilisez Tailscale Serve, une liaison non loopback avec secret partagé, un
proxy inverse sensible à l’identité non loopback avec
gateway.auth.mode: "trusted-proxy", ou un tunnel SSH. Les API HTTP utilisent toujours une authentification par secret partagé sauf si vous exécutez intentionnellement un accès privé avecgateway.auth.mode: "none"ou une authentification HTTP de proxy de confiance. Consultez Surfaces web.
Si vous voyez « unauthorized » / 1008
- Assurez-vous que la gateway est joignable (local :
openclaw status; distant : tunnel SSHssh -N -L 18789:127.0.0.1:18789 user@hostpuis ouvrezhttp://127.0.0.1:18789/). - Pour
AUTH_TOKEN_MISMATCH, les clients peuvent effectuer une nouvelle tentative de confiance avec un jeton d’appareil en cache lorsque la gateway renvoie des indications de nouvelle tentative. Cette nouvelle tentative avec le jeton en cache réutilise les portées approuvées en cache du jeton ; les appelants avecdeviceTokenexplicite /scopesexplicites conservent l’ensemble de portées demandé. Si l’authentification échoue encore après cette nouvelle tentative, résolvez manuellement la dérive du jeton. - En dehors de ce chemin de nouvelle tentative, la priorité de l’authentification de connexion est explicite : jeton partagé/mot de passe partagé d’abord, puis
deviceTokenexplicite, puis jeton d’appareil stocké, puis jeton de bootstrap. - Sur le chemin asynchrone de la Control UI Tailscale Serve, les tentatives échouées pour le même
{scope, ip}sont sérialisées avant que le limiteur d’échecs d’authentification ne les enregistre, de sorte que la deuxième mauvaise tentative concurrente peut déjà afficherretry later. - Pour les étapes de réparation de dérive de jeton, suivez la Liste de contrôle de récupération de dérive de jeton.
- Récupérez ou fournissez le secret partagé depuis l’hôte de la gateway :
- Jeton :
openclaw config get gateway.auth.token - Mot de passe : résolvez le
gateway.auth.passwordconfiguré ouOPENCLAW_GATEWAY_PASSWORD - Jeton géré par SecretRef : résolvez le fournisseur de secrets externe ou exportez
OPENCLAW_GATEWAY_TOKENdans ce shell, puis réexécutezopenclaw dashboard - Aucun secret partagé configuré :
openclaw doctor --generate-gateway-token
- Jeton :
- Dans les paramètres du tableau de bord, collez le jeton ou le mot de passe dans le champ d’authentification, puis connectez-vous.