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 للاطلاع على المصادقة والحمولات.
استدعاء إجراءات HTTP عن بُعد للإدارة
يكشف POST /api/v1/admin/rpc أساليب مختارة من مستوى تحكم Gateway عبر HTTP. يكون معطّلًا افتراضيًا، ولا يُسجّل إلا عند تمكين Plugin admin-http-rpc. راجع استدعاء إجراءات HTTP عن بُعد للإدارة للاطلاع على نموذج المصادقة والأساليب المسموح بها والمقارنة مع واجهة WebSocket البرمجية.
الوصول عبر Tailscale
التقديم المتكامل (موصى به)
أبقِ Gateway على local 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 (يستخدم هذا المثال الذي لا يعتمد local loopback مصادقة برمز مميّز سري مشترك):
openclaw gatewayافتح http://<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 عند تمكينها.
- تظل عمليات الربط التي لا تستخدم local loopback تتطلب مصادقة Gateway: مصادقة برمز مميّز/كلمة مرور، أو وكيل عكسي مدرك للهوية مع
gateway.auth.mode: "trusted-proxy". - ينشئ معالج الإعداد الأولي مصادقة بسر مشترك افتراضيًا، وعادةً ما ينشئ رمزًا مميّزًا لـ Gateway، حتى على local loopback.
- في وضع السر المشترك، ترسل الواجهة
connect.params.auth.tokenأوconnect.params.auth.passwordأثناء مصافحة WebSocket. - مع
gateway.tls.enabled: true، تعرض أدوات لوحة المعلومات/الحالة المحلية عناوين URL باستخدامhttps://وعناوين WebSocket باستخدامwss://. - في الأوضاع الحاملة للهوية (Tailscale Serve و
trusted-proxy)، يُستوفى فحص مصادقة WebSocket من ترويسات الطلب بدلًا من سر مشترك. - لعمليات نشر واجهة التحكم العامة التي لا تستخدم local loopback، اضبط
gateway.controlUi.allowedOriginsصراحةً (أصول كاملة). تُقبل عمليات التحميل الخاصة من الأصل نفسه من دونه لمضيفي local loopback وRFC1918/الرابط المحلي و.localو.ts.netوTailscale CGNAT. - يفعّل
gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback: trueالرجوع الاحتياطي إلى أصل ترويسة Host؛ وهذا تخفيض خطير لمستوى الأمان. - مع Serve، تستوفي ترويسات هوية Tailscale مصادقة واجهة التحكم/WebSocket عندما تكون
gateway.auth.allowTailscale: true(لا يلزم رمز مميّز/كلمة مرور). لا تستخدم نقاط نهاية واجهة HTTP البرمجية ترويسات هوية Tailscale؛ بل تتبع دائمًا وضع مصادقة HTTP المعتاد لـ Gateway. اضبطgateway.auth.allowTailscale: falseلطلب بيانات اعتماد صريحة حتى عبر Serve. يفترض هذا التدفق الخالي من الرموز المميّزة أن مضيف Gateway نفسه موثوق. راجع Tailscale والأمان.
بناء الواجهة
يقدّم Gateway الملفات الثابتة من dist/control-ui:
pnpm ui:build