الوصول البعيد

الوصول البعيد

تدعم هذه المستودعات "الوصول البعيد عبر SSH" من خلال الحفاظ على تشغيل بوابة واحدة (الرئيسية) على مضيف مخصص (سطح مكتب/خادم) وتوصيل العملاء بها.

  • بالنسبة للمشغلين (أنت / تطبيق macOS): يعد النفق SSH هو الحل الاحتياطي العالمي.
  • بالنسبة للعقد (أجهزة iOS/Android والأجهزة المستقبلية): تتصل بمقبس الويب WebSocket الخاص بالبوابة (شبكة LAN أو tailnet أو نفق SSH حسب الحاجة).

الفكرة الأساسية

  • يرتبط مقبس الويب WebSocket الخاص بالبوابة بـ الحلقة المحلية loopback على المنفذ الذي قمت بتكوينه (الافتراضي هو 18789).
  • للاستخدام البعيد، تقوم بتوجيه منفذ الحلقة المحلية هذا عبر SSH (أو تستخدم شبكة tailnet/VPN وتقلل من استخدام الأنفاق).

إعدادات VPN/tailnet الشائعة (حيث يعيش الوكيل)

فكر في مضيف البوابة على أنه "المكان الذي يعيش فيه الوكيل". فهو يمتلك الجلسات، وملفات تعريف المصادقة، والقنوات، والحالة. يتصل حاسوبك المحمول/سطح المكتب (والعقد) بهذا المضيف.

1) بوابة دائمة التشغيل في شبكة tailnet الخاصة بك (خادم VPS أو خادم منزلي)

شغل البوابة على مضيف دائم ويمكن الوصول إليها عبر Tailscale أو SSH.

  • أفضل تجربة مستخدم: احتفظ بـ gateway.bind: "loopback" واستخدم Tailscale Serve لواجهة التحكم Control UI.
  • البديل الاحتياطي: احتفظ بالحلقة المحلية + نفق SSH من أي جهاز يحتاج إلى الوصول.
  • أمثلة: exe.dev (آلة افتراضية سهلة) أو Hetzner (خادم VPS للإنتاج).

هذا مثالي عندما ينام حاسوبك المحمول كثيرًا ولكنك تريد أن يكون الوكيل دائم التشغيل.

2) تشغيل البوابة على سطح المكتب المنزلي، والحاسوب المحمول للتحكم عن بعد

لا يشغل الحاسوب المحمول الوكيل. فهو يتصل عن بُعد:

  • استخدم وضع الوصول البعيد عبر SSH في تطبيق macOS (الإعدادات → عام → "يعمل OpenClaw").
  • يفتح التطبيق ويدير النفق، بحيث يعمل WebChat + فحوصات الصحة "بشكل طبيعي".

دليل التشغيل: الوصول البعيد لنظام macOS.

3) تشغيل البوابة على الحاسوب المحمول، والوصول البعيد من أجهزة أخرى

احتفظ بالبوابة محليًا ولكن اعرضها بأمان:

  • نفق SSH إلى الحاسوب المحمول من أجهزة أخرى، أو
  • استخدم Tailscale Serve لعرض واجهة التحكم Control UI واحتفظ بالبوابة مقصورة على الحلقة المحلية فقط.

الدليل: Tailscale و نظرة عامة على الويب.

تدفق الأوامر (ما الذي يعمل وأين)

تمتلك خدمة بوابة واحدة الحالة + القنوات. العقد هي أجهزة طرفية. مثال على التدفق (Telegram → عقدة):

  • تصل رسالة Telegram إلى البوابة.
  • تشغل البوابة الوكيل وتقرر ما إذا كانت ستستدعي أداة عقدة.
  • تستدعي البوابة العقدة عبر مقبس الويب WebSocket الخاص بالبوابة (node.* RPC).
  • تُرجع العقدة النتيجة؛ ترد البوابة مرة أخرى إلى Telegram.

ملاحظات:

  • لا تشغل العقد خدمة البوابة. يجب تشغيل بوابة واحدة فقط لكل مضيف ما لم تقم عمدًا بتشغيل ملفات تعريف معزولة (انظر بوابات متعددة).
  • وضع "العقدة node mode" في تطبيق macOS هو مجرد عميل عقدة عبر مقبس الويب WebSocket الخاص بالبوابة.

نفق SSH (CLI + أدوات)

أنشئ نفقًا محليًا إلى مقبس الويب WebSocket الخاص بالبوابة البعيدة:

ssh -N -L 18789:127.0.0.1:18789 user@host

مع تشغيل النفق:

  • الآن تصل أوامر openclaw health و openclaw status --deep إلى البوابة البعيدة عبر ws://127.0.0.1:18789.
  • يمكن أيضًا لأوامر openclaw gateway {status,health,send,agent,call} استهداف عنوان URL المُحوَّل عبر --url عند الحاجة.

ملاحظة: استبدل 18789 بـ gateway.port الذي قمت بتكوينه (أو --port/OPENCLAW_GATEWAY_PORT). ملاحظة: عند تمرير --url، لا يتراجع CLI إلى بيانات اعتماد التكوين أو البيئة. قم بتضمين --token أو --password صراحةً. يُعد عدم وجود بيانات اعتماد صريحة خطأ.

الإعدادات الافتراضية البعيدة لـ CLI

يمكنك الإبقاء على هدف بعيد بحيث تستخدمه أوامر CLI افتراضيًا:

{
  gateway: {
    mode: "remote",
    remote: {
      url: "ws://127.0.0.1:18789",
      token: "your-token",
    },
  },
}

عندما تكون البوابة مقصورة على الحلقة المحلية فقط، احتفظ بعنوان URL عند ws://127.0.0.1:18789 وافتح نفق SSH أولاً.

أولوية بيانات الاعتماد

يتبع قرار بيانات اعتماد استدعاء/فحص البوابة الآن عقدًا مشتركًا واحدًا:

  • تفوز بيانات الاعتماد الصريحة (--token، --password، أو أداة gatewayToken) دائمًا.
  • الإعدادات الافتراضية للوضع المحلي:
    • الرمز المميز token: OPENCLAW_GATEWAY_TOKEN -> gateway.auth.token -> gateway.remote.token
    • كلمة المرور password: OPENCLAW_GATEWAY_PASSWORD -> gateway.auth.password -> gateway.remote.password
  • الإعدادات الافتراضية للوضع البعيد:
    • الرمز المميز token: gateway.remote.token -> OPENCLAW_GATEWAY_TOKEN -> gateway.auth.token
    • كلمة المرور password: OPENCLAW_GATEWAY_PASSWORD -> gateway.remote.password -> gateway.auth.password
  • فحوصات الرمز المميز للفحص/الحالة البعيدة تكون صارمة افتراضيًا: تستخدم gateway.remote.token فقط (لا تراجع للرمز المميز المحلي) عند استهداف الوضع البعيد.
  • تُستخدم متغيرات البيئة القديمة CLAWDBOT_GATEWAY_* فقط بواسطة مسارات الاستدعاء المتوافقة؛ يستخدم قرار الفحص/الحالة/المصادقة OPENCLAW_GATEWAY_* فقط.

واجهة الدردشة عبر SSH

لم يعد WebChat يستخدم منفذ HTTP منفصل. تتصل واجهة الدردشة SwiftUI مباشرة بمقبس الويب WebSocket الخاص بالبوابة.

  • وجِّه المنفذ 18789 عبر SSH (انظر أعلاه)، ثم قم بتوصيل العملاء بـ ws://127.0.0.1:18789.
  • على نظام macOS، يُفضل استخدام وضع "الوصول البعيد عبر SSH" في التطبيق، والذي يدير النفق تلقائيًا.

تطبيق macOS "الوصول البعيد عبر SSH"

يمكن لتطبيق شريط القوائم في نظام macOS تشغيل نفس الإعداد من البداية إلى النهاية (فحوصات الحالة البعيدة، وWebChat، وتوجيه Voice Wake). دليل التشغيل: الوصول البعيد لنظام macOS.

قواعد الأمان (بعيد/VPN)

النسخة المختصرة: احتفظ بالبوابة مقصورة على الحلقة المحلية فقط ما لم تكن متأكدًا من أنك بحاجة إلى ربط.

  • الحلقة المحلية + SSH/Tailscale Serve هو الإعداد الافتراضي الأكثر أمانًا (لا يوجد تعرض عام).
  • النص العادي ws:// مقصور على الحلقة المحلية افتراضيًا. للشبكات الخاصة الموثوقة، عيّن OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 على عملية العميل كإجراء طارئ.
  • يجب أن تستخدم عمليات الربط غير الحلقة المحلية (lan/tailnet/custom، أو auto عندما لا تكون الحلقة المحلية متاحة) رموزًا مميزة/كلمات مرور للمصادقة.
  • gateway.remote.token / .password هي مصادر بيانات اعتماد العميل. لا تقوم بتكوين مصادقة الخادم بمفردها.
  • يمكن لمسارات الاستدعاء المحلية استخدام gateway.remote.* كبديل احتياطي عندما يكون gateway.auth.* غير معيّن.
  • gateway.remote.tlsFingerprint يثبِّت شهادة TLS البعيدة عند استخدام wss://.
  • يمكن لـ Tailscale Serve مصادقة حركة مرور واجهة التحكم Control UI/مقبس الويب WebSocket عبر رؤوس الهوية عندما يكون gateway.auth.allowTailscale: true؛ لا تزال نقاط نهاية واجهة برمجة التطبيقات HTTP تتطلب مصادقة بالرمز المميز/كلمة المرور. يفترض هذا التدفق الخالي من الرموز المميزة أن مضيف البوابة موثوق به. عيّنه على false إذا كنت تريد رموزًا مميزة/كلمات مرور في كل مكان.
  • عالج التحكم في المتصفح مثل وصول المشغل: tailnet فقط + إقران عقدة متعمد.

الغوص العميق: الأمان.

اكتشاف Bonjourإعداد البوابة البعيدة