الويب (Gateway)
يقدّم Gateway واجهة تحكم في المتصفح صغيرة (Vite + Lit) من نفس المنفذ الذي يستخدمه WebSocket الخاص بـ Gateway:- الافتراضي:
http://<host>:18789/ - بادئة اختيارية: عيّن
gateway.controlUi.basePath(مثلًا/openclaw)
خطافات الويب
عندhooks.enabled=true، يوفّر Gateway أيضًا نقطة نهاية webhook صغيرة على نفس خادم HTTP.
راجع تهيئة Gateway → hooks للمصادقة والحمولات.
التهيئة (مفعّلة افتراضيًا)
تكون واجهة التحكم مفعّلة افتراضيًا عند توفّر الأصول (dist/control-ui).
يمكنك التحكم بها عبر التهيئة:
الوصول عبر Tailscale
Serve المتكامل (موصى به)
أبقِ Gateway على local loopback ودع Tailscale Serve يعمل كوكيل:https://<magicdns>/(أوgateway.controlUi.basePathالذي قمت بتهيئته)
الربط على Tailnet + رمز مميّز
http://<tailscale-ip>:18789/(أوgateway.controlUi.basePathالذي قمت بتهيئته)
الإنترنت العام (Funnel)
ملاحظات الأمان
- المصادقة على Gateway مطلوبة افتراضيًا (رمز مميّز/كلمة مرور أو رؤوس هوية Tailscale).
- عمليات الربط غير المحلية تتطلّب رمزًا/كلمة مرور مشتركة (
gateway.authأو متغيرات البيئة). - يقوم معالج الإعداد بإنشاء رمز Gateway افتراضيًا (حتى على local loopback).
- ترسل الواجهة
connect.params.auth.tokenأوconnect.params.auth.password. - ترسل واجهة التحكم رؤوسًا مضادّة للنقر الاحتيالي (anti-clickjacking) ولا تقبل
اتصالات WebSocket من المتصفح إلا من نفس الأصل، ما لم يتم تعيين
gateway.controlUi.allowedOrigins. - مع Serve، يمكن لرؤوس هوية Tailscale تلبية متطلبات المصادقة عندما يكون
gateway.auth.allowTailscaleهوtrue(لا يلزم رمز/كلمة مرور). عيّنgateway.auth.allowTailscale: falseلطلب بيانات اعتماد صريحة. راجع Tailscale والأمان. - يتطلّب
gateway.tailscale.mode: "funnel"وجودgateway.auth.mode: "password"(كلمة مرور مشتركة).
بناء الواجهة
يقدّم Gateway الملفات الثابتة منdist/control-ui. ابنِها باستخدام: