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