Web (Gateway)
Gateway menyajikan UI Kontrol browser kecil (Vite + Lit) dari port yang sama dengan WebSocket Gateway:- default:
http://<host>:18789/ - prefiks opsional: setel
gateway.controlUi.basePath(misalnya/openclaw)
Webhook
Saathooks.enabled=true, Gateway juga mengekspos endpoint webhook kecil pada server HTTP yang sama.
Lihat Konfigurasi Gateway → hooks untuk auth + payload.
Config (aktif secara default)
UI Kontrol aktif secara default saat aset tersedia (dist/control-ui).
Anda dapat mengendalikannya melalui config:
Akses Tailscale
Serve terintegrasi (direkomendasikan)
Pertahankan Gateway di loopback dan biarkan Tailscale Serve mem-proxy-nya:https://<magicdns>/(ataugateway.controlUi.basePathyang Anda konfigurasi)
Bind tailnet + token
http://<tailscale-ip>:18789/(ataugateway.controlUi.basePathyang Anda konfigurasi)
Internet publik (Funnel)
Catatan keamanan
- Auth Gateway diwajibkan secara default (token, password, trusted-proxy, atau header identitas Tailscale Serve saat diaktifkan).
- Bind non-loopback tetap memerlukan auth gateway. Dalam praktiknya itu berarti auth token/password atau reverse proxy sadar identitas dengan
gateway.auth.mode: "trusted-proxy". - Wizard membuat auth rahasia bersama secara default dan biasanya menghasilkan token gateway (bahkan pada loopback).
- Dalam mode rahasia bersama, UI mengirim
connect.params.auth.tokenatauconnect.params.auth.password. - Dalam mode yang membawa identitas seperti Tailscale Serve atau
trusted-proxy, pemeriksaan auth WebSocket dipenuhi dari header permintaan sebagai gantinya. - Untuk deployment UI Kontrol non-loopback, setel
gateway.controlUi.allowedOriginssecara eksplisit (origin penuh). Tanpanya, startup gateway akan ditolak secara default. gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=truemengaktifkan mode fallback origin header Host, tetapi ini adalah penurunan keamanan yang berbahaya.- Dengan Serve, header identitas Tailscale dapat memenuhi auth UI Kontrol/WebSocket
saat
gateway.auth.allowTailscaleadalahtrue(tidak memerlukan token/password). Endpoint HTTP API tidak menggunakan header identitas Tailscale tersebut; mereka mengikuti mode auth HTTP normal gateway. Setelgateway.auth.allowTailscale: falseuntuk mewajibkan kredensial eksplisit. Lihat Tailscale dan Security. Alur tanpa token ini mengasumsikan host gateway tepercaya. gateway.tailscale.mode: "funnel"memerlukangateway.auth.mode: "password"(password bersama).
Membangun UI
Gateway menyajikan file statis daridist/control-ui. Bangun file tersebut dengan: