mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-19 13:11:40 +00:00
docs: refresh control ui auth ux refs
This commit is contained in:
@@ -2545,7 +2545,7 @@ Related: [/concepts/oauth](/concepts/oauth) (OAuth flows, token storage, multi-a
|
||||
</Accordion>
|
||||
|
||||
<Accordion title='The Control UI says "unauthorized" (or keeps reconnecting). What now?'>
|
||||
Your gateway is running with auth enabled (`gateway.auth.*`), but the UI is not sending the matching token/password.
|
||||
Your gateway auth path and the UI's auth method do not match.
|
||||
|
||||
Facts (from code):
|
||||
|
||||
@@ -2557,8 +2557,9 @@ Related: [/concepts/oauth](/concepts/oauth) (OAuth flows, token storage, multi-a
|
||||
- Fastest: `openclaw dashboard` (prints + copies the dashboard URL, tries to open; shows SSH hint if headless).
|
||||
- If you don't have a token yet: `openclaw doctor --generate-gateway-token`.
|
||||
- If remote, tunnel first: `ssh -N -L 18789:127.0.0.1:18789 user@host` then open `http://127.0.0.1:18789/`.
|
||||
- Set `gateway.auth.token` (or `OPENCLAW_GATEWAY_TOKEN`) on the gateway host.
|
||||
- In the Control UI settings, paste the same token.
|
||||
- Shared-secret mode: set `gateway.auth.token` / `OPENCLAW_GATEWAY_TOKEN` or `gateway.auth.password` / `OPENCLAW_GATEWAY_PASSWORD`, then paste the matching secret in Control UI settings.
|
||||
- Tailscale Serve mode: make sure `gateway.auth.allowTailscale` is enabled and you are opening the Serve URL, not a raw loopback/tailnet URL that bypasses Tailscale identity headers.
|
||||
- Trusted-proxy mode: make sure you are coming through the configured non-loopback identity-aware proxy, not a same-host loopback proxy or raw gateway URL.
|
||||
- If mismatch persists after the one retry, rotate/re-approve the paired device token:
|
||||
- `openclaw devices list`
|
||||
- `openclaw devices rotate --device <id> --role operator`
|
||||
|
||||
@@ -27,8 +27,10 @@ Auth is supplied during the WebSocket handshake via:
|
||||
|
||||
- `connect.params.auth.token`
|
||||
- `connect.params.auth.password`
|
||||
- Tailscale Serve identity headers when `gateway.auth.allowTailscale: true`
|
||||
- trusted-proxy identity headers when `gateway.auth.mode: "trusted-proxy"`
|
||||
The dashboard settings panel keeps a token for the current browser tab session and selected gateway URL; passwords are not persisted.
|
||||
Onboarding generates a gateway token by default, so paste it here on first connect.
|
||||
Onboarding generates a gateway token by default, so shared-secret setups usually paste that here on first connect.
|
||||
|
||||
## Device pairing (first connection)
|
||||
|
||||
@@ -157,7 +159,8 @@ Then open:
|
||||
|
||||
- `http://<tailscale-ip>:18789/` (or your configured `gateway.controlUi.basePath`)
|
||||
|
||||
Paste the token into the UI settings (sent as `connect.params.auth.token`).
|
||||
Paste the matching shared secret into the UI settings (sent as
|
||||
`connect.params.auth.token` or `connect.params.auth.password`).
|
||||
|
||||
## Insecure HTTP
|
||||
|
||||
|
||||
@@ -19,7 +19,8 @@ Status: the macOS/iOS SwiftUI chat UI talks directly to the Gateway WebSocket.
|
||||
|
||||
1. Start the gateway.
|
||||
2. Open the WebChat UI (macOS/iOS app) or the Control UI chat tab.
|
||||
3. Ensure gateway auth is configured (required by default, even on loopback).
|
||||
3. Ensure a valid gateway auth path is configured (shared-secret by default,
|
||||
even on loopback).
|
||||
|
||||
## How it works (behavior)
|
||||
|
||||
@@ -59,7 +60,10 @@ WebChat options:
|
||||
Related global options:
|
||||
|
||||
- `gateway.port`, `gateway.bind`: WebSocket host/port.
|
||||
- `gateway.auth.mode`, `gateway.auth.token`, `gateway.auth.password`: WebSocket auth (token/password).
|
||||
- `gateway.auth.mode`, `gateway.auth.token`, `gateway.auth.password`:
|
||||
shared-secret WebSocket auth.
|
||||
- `gateway.auth.allowTailscale`: browser Control UI chat tab can use Tailscale
|
||||
Serve identity headers when enabled.
|
||||
- `gateway.auth.mode: "trusted-proxy"`: reverse-proxy auth for browser clients behind an identity-aware **non-loopback** proxy source (see [Trusted Proxy Auth](/gateway/trusted-proxy-auth)).
|
||||
- `gateway.remote.url`, `gateway.remote.token`, `gateway.remote.password`: remote gateway target.
|
||||
- `session.*`: session storage and main key defaults.
|
||||
|
||||
Reference in New Issue
Block a user