Web interfaces
Web
Gateway menyajikan Antarmuka 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: tetapkan
gateway.controlUi.basePath(mis./openclaw)
Kapabilitas tersedia di Antarmuka Kontrol. Sisa halaman ini berfokus pada mode bind, keamanan, dan permukaan yang menghadap web.
Webhook
Ketika hooks.enabled=true, Gateway juga mengekspos endpoint webhook kecil pada server HTTP yang sama.
Lihat konfigurasi Gateway → hooks untuk auth + payload.
Konfigurasi (aktif secara default)
Antarmuka Kontrol diaktifkan secara default ketika aset tersedia (dist/control-ui).
Anda dapat mengontrolnya melalui konfigurasi:
{
gateway: {
controlUi: { enabled: true, basePath: "/openclaw" }, // basePath optional
},
}
Akses Tailscale
Serve Terintegrasi (direkomendasikan)
Pertahankan Gateway pada loopback dan biarkan Tailscale Serve mem-proxy-nya:
{
gateway: {
bind: "loopback",
tailscale: { mode: "serve" },
},
}
Lalu mulai gateway:
openclaw gateway
Buka:
https://<magicdns>/(ataugateway.controlUi.basePathyang Anda konfigurasikan)
Bind tailnet + token
{
gateway: {
bind: "tailnet",
controlUi: { enabled: true },
auth: { mode: "token", token: "your-token" },
},
}
Lalu mulai gateway (contoh non-loopback ini menggunakan auth token rahasia bersama):
openclaw gateway
Buka:
http://<tailscale-ip>:18789/(ataugateway.controlUi.basePathyang Anda konfigurasikan)
Internet publik (Funnel)
{
gateway: {
bind: "loopback",
tailscale: { mode: "funnel" },
auth: { mode: "password" }, // or OPENCLAW_GATEWAY_PASSWORD
},
}
Catatan keamanan
- Auth Gateway diwajibkan secara default (token, kata sandi, trusted-proxy, atau header identitas Tailscale Serve ketika diaktifkan).
- Bind non-loopback tetap mewajibkan auth gateway. Dalam praktiknya, ini berarti auth token/kata sandi 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. - Ketika
gateway.tls.enabled: true, helper dashboard lokal dan status merender URL dashboardhttps://dan URL WebSocketwss://. - Dalam mode yang membawa identitas seperti Tailscale Serve atau
trusted-proxy, pemeriksaan auth WebSocket dipenuhi dari header permintaan sebagai gantinya. - Untuk deployment Antarmuka Kontrol non-loopback, tetapkan
gateway.controlUi.allowedOriginssecara eksplisit (origin lengkap). Tanpanya, startup gateway 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 Antarmuka Kontrol/WebSocket ketika
gateway.auth.allowTailscaleadalahtrue(tidak perlu token/kata sandi). Endpoint API HTTP tidak menggunakan header identitas Tailscale tersebut; endpoint tersebut mengikuti mode auth HTTP normal gateway sebagai gantinya. Tetapkangateway.auth.allowTailscale: falseuntuk mewajibkan kredensial eksplisit. Lihat Tailscale dan Keamanan. Alur tanpa token ini mengasumsikan host gateway tepercaya. gateway.tailscale.mode: "funnel"mewajibkangateway.auth.mode: "password"(kata sandi bersama).
Membangun UI
Gateway menyajikan file statis dari dist/control-ui. Bangun file tersebut dengan:
pnpm ui:build