Web interfaces
وب
Gateway یک رابط کاربری کنترلِ مرورگری کوچک (Vite + Lit) را از همان پورتی ارائه میکند که Gateway WebSocket از آن استفاده میکند:
- پیشفرض:
http://<host>:18789/ - با
gateway.tls.enabled: true:https://<host>:18789/ - پیشوند اختیاری:
gateway.controlUi.basePathرا تنظیم کنید (مثلاً/openclaw)
قابلیتها در رابط کاربری کنترل قرار دارند. بقیه این صفحه بر حالتهای bind، امنیت، و سطوح در معرض وب تمرکز دارد.
Webhookها
وقتی hooks.enabled=true باشد، Gateway همچنین یک endpoint کوچک Webhook را روی همان سرور HTTP ارائه میکند.
برای احراز هویت و payloadها، پیکربندی Gateway ← hooks را ببینید.
RPC مدیریتی HTTP
RPC مدیریتی HTTP روشهای منتخب control-plane مربوط به Gateway را در POST /api/v1/admin/rpc ارائه میکند.
این قابلیت بهصورت پیشفرض غیرفعال است و فقط زمانی ثبت میشود که Plugin admin-http-rpc فعال باشد.
برای مدل احراز هویت، روشهای مجاز، و مقایسه با WebSocket، RPC مدیریتی HTTP را ببینید.
پیکربندی (بهصورت پیشفرض روشن)
رابط کاربری کنترل وقتی assetها موجود باشند (dist/control-ui) بهصورت پیشفرض فعال است.
میتوانید آن را از طریق پیکربندی کنترل کنید:
{ gateway: { controlUi: { enabled: true, basePath: "/openclaw" }, // basePath optional },}دسترسی Tailscale
Serve یکپارچه (توصیهشده)
Gateway را روی loopback نگه دارید و اجازه دهید Tailscale Serve آن را proxy کند:
{ gateway: { bind: "loopback", tailscale: { mode: "serve" }, },}سپس gateway را شروع کنید:
openclaw gatewayباز کنید:
https://<magicdns>/(یاgateway.controlUi.basePathپیکربندیشده شما)
bind برای Tailnet + توکن
{ gateway: { bind: "tailnet", controlUi: { enabled: true }, auth: { mode: "token", token: "your-token" }, },}سپس gateway را شروع کنید (این مثال غیر-loopback از احراز هویت با توکن secret مشترک استفاده میکند):
openclaw gatewayباز کنید:
http://<tailscale-ip>:18789/(یاgateway.controlUi.basePathپیکربندیشده شما)
اینترنت عمومی (Funnel)
{ gateway: { bind: "loopback", tailscale: { mode: "funnel" }, auth: { mode: "password" }, // or OPENCLAW_GATEWAY_PASSWORD },}نکات امنیتی
- احراز هویت Gateway بهصورت پیشفرض لازم است (توکن، گذرواژه، trusted-proxy، یا headerهای هویت Tailscale Serve وقتی فعال باشند).
- bindهای غیر-loopback همچنان احراز هویت gateway را الزامی میکنند. در عمل، این یعنی احراز هویت با توکن/گذرواژه یا یک reverse proxy آگاه از هویت با
gateway.auth.mode: "trusted-proxy". - wizard بهصورت پیشفرض احراز هویت با secret مشترک میسازد و معمولاً یک توکن gateway تولید میکند (حتی روی loopback).
- در حالت secret مشترک، رابط کاربری
connect.params.auth.tokenیاconnect.params.auth.passwordرا ارسال میکند. - وقتی
gateway.tls.enabled: trueباشد، helperهای dashboard و status محلی، URLهای dashboard را باhttps://و URLهای WebSocket را باwss://نمایش میدهند. - در حالتهای دارای هویت مانند Tailscale Serve یا
trusted-proxy، بررسی احراز هویت WebSocket بهجای آن از headerهای درخواست برآورده میشود. - برای استقرارهای عمومی غیر-loopback رابط کاربری کنترل،
gateway.controlUi.allowedOriginsرا صریحاً تنظیم کنید (originهای کامل). بارگذاریهای خصوصی same-origin در LAN/Tailnet برای loopback، RFC1918/link-local،.local،.ts.net، و میزبانهای Tailscale CGNAT پذیرفته میشوند. gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=trueحالت fallback origin بر پایه Host-header را فعال میکند، اما یک کاهش امنیتی خطرناک است.- با Serve، headerهای هویت Tailscale میتوانند احراز هویت رابط کاربری کنترل/WebSocket را وقتی
gateway.auth.allowTailscaleبرابرtrueباشد برآورده کنند (بدون نیاز به توکن/گذرواژه). endpointهای HTTP API از آن headerهای هویت Tailscale استفاده نمیکنند؛ در عوض از حالت احراز هویت HTTP معمول gateway پیروی میکنند. برای الزام به credentialهای صریح،gateway.auth.allowTailscale: falseرا تنظیم کنید. Tailscale و امنیت را ببینید. این جریان بدون توکن فرض میکند میزبان gateway قابل اعتماد است. gateway.tailscale.mode: "funnel"بهgateway.auth.mode: "password"نیاز دارد (گذرواژه مشترک).
ساخت رابط کاربری
Gateway فایلهای static را از dist/control-ui ارائه میکند. آنها را با دستور زیر بسازید:
pnpm ui:build