Langsung ke konten utama
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 Gatewayhooks 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 gateway
Buka:
  • https://<magicdns>/ (atau gateway.controlUi.basePath yang 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 gateway
Buka:
  • http://<tailscale-ip>:18789/ (atau gateway.controlUi.basePath yang 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.token atau connect.params.auth.password.
  • Saat gateway.tls.enabled: true, helper dashboard dan status lokal merender URL dashboard https:// dan URL WebSocket wss://.
  • 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.allowedOrigins secara 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=true mengaktifkan 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.allowTailscale bernilai true (tidak memerlukan token/kata sandi). Endpoint API HTTP tidak menggunakan header identitas Tailscale tersebut; endpoint tersebut mengikuti mode autentikasi HTTP normal gateway sebagai gantinya. Tetapkan gateway.auth.allowTailscale: false untuk memerlukan kredensial eksplisit. Lihat Tailscale dan Keamanan. Alur tanpa token ini mengasumsikan host gateway tepercaya.
  • gateway.tailscale.mode: "funnel" memerlukan gateway.auth.mode: "password" (kata sandi bersama).

Membangun UI

Gateway menyajikan berkas statis dari dist/control-ui. Bangun berkas tersebut dengan:
pnpm ui:build