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