Web interfaces

الويب

يقدّم Gateway واجهة تحكم عبر المتصفح صغيرة (Vite + Lit) من المنفذ نفسه الذي يستخدمه WebSocket الخاص بـ Gateway:

  • الافتراضي: http://<host>:18789/
  • مع gateway.tls.enabled: true: ‏https://<host>:18789/
  • بادئة اختيارية: اضبط gateway.controlUi.basePath (مثلًا /openclaw)

توجد الإمكانات في واجهة التحكم. تتناول هذه الصفحة أوضاع الربط والأمان والأسطح الأخرى المتاحة عبر الويب.

الإعداد (مفعّل افتراضيًا)

تكون واجهة التحكم مفعّلة افتراضيًا عند توفر الأصول (dist/control-ui):

json5
{  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 يعمل وسيطًا له:

json5
{  gateway: {    bind: "loopback",    tailscale: { mode: "serve" },  },}

شغّل Gateway:

bash
openclaw gateway

افتح https://<magicdns>/ (أو gateway.controlUi.basePath الذي أعددته).

ربط Tailnet + الرمز المميّز

json5
{  gateway: {    bind: "tailnet",    controlUi: { enabled: true },    auth: { mode: "token", token: "your-token" },  },}

شغّل Gateway (يستخدم هذا المثال الذي لا يعتمد local loopback مصادقة برمز مميّز سري مشترك):

bash
openclaw gateway

افتح http://<tailscale-ip>:18789/ (أو gateway.controlUi.basePath الذي أعددته).

الإنترنت العام (Funnel)

json5
{  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:

bash
pnpm ui:build
Was this useful?
On this page

On this page