Web interfaces
Web
Gateway menyajikan UI Kontrol browser kecil (Vite + Lit) dari port yang sama dengan WebSocket Gateway:
- default:
http://<host>:18789/ - dengan
gateway.tls.enabled: true:https://<host>:18789/ - prefiks opsional: atur
gateway.controlUi.basePath(mis./openclaw)
Kapabilitas tersedia di UI Kontrol. Sisa halaman ini berfokus pada mode bind, keamanan, dan permukaan yang menghadap web.
Webhook
Saat hooks.enabled=true, Gateway juga mengekspos endpoint webhook kecil di server HTTP yang sama.
Lihat Konfigurasi Gateway → hooks untuk autentikasi + payload.
RPC HTTP Admin
RPC HTTP Admin mengekspos metode control-plane Gateway tertentu di POST /api/v1/admin/rpc.
Ini nonaktif secara default dan hanya didaftarkan saat plugin admin-http-rpc diaktifkan.
Lihat RPC HTTP Admin untuk model autentikasi, metode yang diizinkan, dan perbandingan WebSocket.
Konfigurasi (aktif secara default)
UI Kontrol diaktifkan secara default saat aset tersedia (dist/control-ui).
Anda dapat mengendalikannya melalui konfigurasi:
{ gateway: { controlUi: { enabled: true, basePath: "/openclaw" }, // basePath opsional },}Akses Tailscale
Serve Terintegrasi (disarankan)
Pertahankan Gateway pada loopback dan biarkan Tailscale Serve mem-proxy-nya:
{ gateway: { bind: "loopback", tailscale: { mode: "serve" }, },}Lalu mulai gateway:
openclaw gatewayBuka:
https://<magicdns>/(ataugateway.controlUi.basePathyang Anda konfigurasi)
Bind Tailnet + token
{ gateway: { bind: "tailnet", controlUi: { enabled: true }, auth: { mode: "token", token: "your-token" }, },}Lalu mulai gateway (contoh non-loopback ini menggunakan autentikasi token rahasia bersama):
openclaw gatewayBuka:
http://<tailscale-ip>:18789/(ataugateway.controlUi.basePathyang Anda konfigurasi)
Internet publik (Funnel)
{ gateway: { bind: "loopback", tailscale: { mode: "funnel" }, auth: { mode: "password" }, // atau OPENCLAW_GATEWAY_PASSWORD },}Catatan keamanan
- Autentikasi Gateway diwajibkan secara default (token, kata sandi, trusted-proxy, atau header identitas Tailscale Serve saat diaktifkan).
- Bind non-loopback tetap memerlukan autentikasi gateway. Dalam praktiknya, ini berarti autentikasi token/kata sandi atau reverse proxy sadar identitas dengan
gateway.auth.mode: "trusted-proxy". - Wizard membuat autentikasi 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. - Saat
gateway.tls.enabled: true, helper dashboard dan status lokal merender URL dashboardhttps://dan URL WebSocketwss://. - Dalam mode yang membawa identitas seperti Tailscale Serve atau
trusted-proxy, pemeriksaan autentikasi WebSocket dipenuhi dari header permintaan sebagai gantinya. - Untuk deployment UI Kontrol non-loopback publik, tetapkan
gateway.controlUi.allowedOriginssecara eksplisit (origin lengkap). Pemuatan LAN/Tailnet private same-origin diterima untuk loopback, RFC1918/link-local,.local,.ts.net, dan host CGNAT Tailscale. gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=truemengaktifkan mode fallback origin header Host, tetapi merupakan penurunan keamanan yang berbahaya.- Dengan Serve, header identitas Tailscale dapat memenuhi autentikasi UI Kontrol/WebSocket saat
gateway.auth.allowTailscalebernilaitrue(tidak memerlukan token/kata sandi). Endpoint API HTTP tidak menggunakan header identitas Tailscale tersebut; endpoint tersebut mengikuti mode autentikasi HTTP normal gateway sebagai gantinya. Tetapkangateway.auth.allowTailscale: falseuntuk memerlukan kredensial eksplisit. Lihat Tailscale dan Keamanan. Alur tanpa token ini mengasumsikan host gateway tepercaya. gateway.tailscale.mode: "funnel"memerlukangateway.auth.mode: "password"(kata sandi bersama).
Membangun UI
Gateway menyajikan berkas statis dari dist/control-ui. Bangun berkas tersebut dengan:
pnpm ui:build