mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-08-07 21:08:34 +03:00
fix(webui): configure public websocket URL
This commit is contained in:
+7
-1
@@ -103,6 +103,7 @@ direct TCP peer is the tunnel process and the assertion is non-empty:
|
||||
"websocket": {
|
||||
"host": "127.0.0.1",
|
||||
"port": 8765,
|
||||
"publicWsUrl": "wss://nanobot.example.com/",
|
||||
"trustedProxyAuth": {
|
||||
"trustedPeerCidrs": ["127.0.0.1/32", "::1/128"],
|
||||
"assertionHeader": "Cf-Access-Jwt-Assertion"
|
||||
@@ -116,7 +117,12 @@ This is two-part authorization: a trusted direct loopback peer **and** a
|
||||
non-empty Cloudflare Access assertion. A trusted CIDR alone is not a bypass.
|
||||
For this flow `/webui/bootstrap` returns connection metadata without a
|
||||
bootstrap token or REST API token; the proxy assertion authorizes the WebSocket
|
||||
handshake and REST requests directly. The assertion header must be generated
|
||||
handshake and REST requests directly.
|
||||
|
||||
Set `publicWsUrl` to the browser-facing `wss://` endpoint when the tunnel sends
|
||||
the origin host header (such as `127.0.0.1:8765`); otherwise the WebUI could
|
||||
attempt to open its WebSocket directly against the loopback address.
|
||||
The assertion header must be generated
|
||||
by Cloudflare Access after authentication; routing/client metadata headers such
|
||||
as `Host`, `Forwarded`, `X-Forwarded-*`, `X-Real-IP`, and `CF-Connecting-IP`
|
||||
are rejected as `assertionHeader` values. Nanobot trusts the assertion but does
|
||||
|
||||
@@ -216,6 +216,7 @@ All fields go under `channels.websocket` in `config.json`.
|
||||
| `host` | string | `"127.0.0.1"` | Bind address. Use `"0.0.0.0"` to accept external connections. |
|
||||
| `port` | int | `8765` | Listen port. |
|
||||
| `path` | string | `"/"` | WebSocket upgrade path. Trailing slashes are normalized (root `/` is preserved). |
|
||||
| `publicWsUrl` | string | `""` | Exact public `ws://` or `wss://` endpoint returned by `/webui/bootstrap`. Set this when a reverse proxy forwards requests with an origin `Host` header (for example, `wss://claw.example.com/`); its path must match `path`. |
|
||||
| `maxMessageBytes` | int | `37748736` | Maximum inbound message size in bytes (1 KB – 40 MB). Default (36 MB) is sized to accept up to 4 base64-encoded image attachments at 8 MB each; lower it if the channel only carries text. |
|
||||
|
||||
### Authentication
|
||||
@@ -310,6 +311,7 @@ user at the edge and forward the resulting `Cf-Access-Jwt-Assertion`:
|
||||
"channels": {
|
||||
"websocket": {
|
||||
"host": "127.0.0.1",
|
||||
"publicWsUrl": "wss://nanobot.example.com/",
|
||||
"trustedProxyAuth": {
|
||||
"trustedPeerCidrs": ["127.0.0.1/32", "::1/128"],
|
||||
"assertionHeader": "Cf-Access-Jwt-Assertion"
|
||||
|
||||
Reference in New Issue
Block a user