الويب (Gateway)¶
يقدّم Gateway واجهة تحكم في المتصفح صغيرة (Vite + Lit) من نفس المنفذ الذي يستخدمه WebSocket الخاص بـ Gateway:
- الافتراضي:
http://<host>:18789/ - بادئة اختيارية: عيّن
gateway.controlUi.basePath(مثلًا/openclaw)
توجد القدرات في واجهة التحكم. تركّز هذه الصفحة على أوضاع الربط، والأمان، والأسطح الموجّهة للويب.
خطافات الويب¶
عند hooks.enabled=true، يوفّر Gateway أيضًا نقطة نهاية webhook صغيرة على نفس خادم HTTP.
راجع تهيئة Gateway → hooks للمصادقة والحمولات.
التهيئة (مفعّلة افتراضيًا)¶
تكون واجهة التحكم مفعّلة افتراضيًا عند توفّر الأصول (dist/control-ui).
يمكنك التحكم بها عبر التهيئة:
{
gateway: {
controlUi: { enabled: true, basePath: "/openclaw" }, // basePath optional
},
}
الوصول عبر Tailscale¶
Serve المتكامل (موصى به)¶
أبقِ 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 (الرمز المميّز مطلوب لعمليات الربط غير المحلية):
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).
- عمليات الربط غير المحلية تتطلّب رمزًا/كلمة مرور مشتركة (
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. ابنِها باستخدام:
pnpm ui:build # auto-installs UI deps on first run