تخطَّ إلى المحتوى

الاتصال بخادم بعيد

كل عميل عارض فوق cc_server، وهو الذي يملك البيانات. يستطيع الحاسوب أن يشغّل واحدًا داخله، أما تطبيق الويب على app.usectrl.dev فلا يستطيع، لأن لسان المتصفح لا يستضيف خادمًا. في الحالتين يوجّه هذا الدليل عميلًا إلى خادم يعمل في مكان آخر — جهاز صغير، أو آلة افتراضية سحابية، أو خادم بناء.

  • cc_server يعمل. إن لم يكن لديك واحد، انظر تشغيل خادم بلا واجهة.
  • إما قيم الاقتران الثلاث التي صكّها الخادم — عنوان URL للخادم (ws://…/rpc أو wss://…/rpc)، ومعرّف الجهاز، ومفتاح الاقتران — أو رمز الدعوة لمرة واحدة من مسؤول مساحة العمل. صرف الدعوة يوفّر مستخدمك، ويسجّل عضويتك، ويصك بيانات اعتماد هذا العميل لك، فلا تتعامل مع معرّف جهاز أو مفتاح.

الخادم المحلي لا يحتاج شيئًا: يعمل ws://localhost:9030/rpc من الحاسوب ومن المتصفح، لأن المتصفحات تعد loopback من الأصول الموثوقة.

الخادم على جهاز آخر شأن مختلف. يُقدَّم app.usectrl.dev عبر HTTPS، فلن يفتح المتصفح مقبس wss:// إلا بشهادة يثق بها أصلًا — ويرفض cc_server من الأساس ربط عنوان غير loopback من غير TLS. أعطه واحدًا من هذه:

  • شهادة مباشرة، عبر --tls-cert و--tls-key
  • بروكسي عكسي ينهي TLS أمامه، مع تشغيل الخادم بـ --insecure (بلا تشفير خلف البروكسي، وعلى شبكة موثوقة فقط)
  • نفق أو VPN يوفّر الشهادة — Tailscale أو cloudflared أو ما شابه. في الإعدادات ← الخادم ← الاتصال والحالة خيار تفعيل النفق المضمّن، تحت مشاركة هذا الخادم.

إعدادان على الخادم يسهل تفويتهما. خلف بروكسي أو NAT أو نفق، اضبط --public-url على العنوان الذي ينبغي أن يتصل به العملاء فعلًا — افتراضه الربط المحلي، فمن دونه يحاول العملاء المضيف الخطأ. وإن استضفت نسختك من حزمة الويب، أضف أصلها إلى --allowed-origins، وافتراضها https://app.usectrl.dev وحده، ويُسمح دائمًا بـ loopback وبالعملاء الأصيلين.

على تثبيت جديد:

  1. شغّل Control Center. تسأل شاشة أول تشغيل كيف ينبغي أن يعمل Control Center؟
  2. بدلًا من التشغيل داخل هذا التطبيق، املأ حقول الاتصال: عنوان URL للخادم، ومعه إما رمز الدعوة أو معرّف الجهاز ومفتاح الاقتران.
  3. انقر اتصال. يتصل Control Center بالخادم ويصل إلى وارد مساحة العمل.

على حاسوب يشغّل خادمه بنفسه أصلًا:

  1. افتح الإعدادات ← الخادم ← الاتصال والحالة.
  2. انقر إضافة خادم. أدخل عنوان URL للخادم (wss://host:9030/rpc) ومعه إما رمز الدعوة أو معرّف الجهاز ومفتاح الاقتران. يكتشف زر لاحقة حقل العنوان مثيلات cc_server على LAN أو tailnet لديك.
  3. انقر اتصال، ثم تبديل في صف الخادم الجديد.

التبديل يجري في المكان: يعيد التطبيق بناء نفسه حول الجلسة الجديدة، من غير إعادة تشغيل. إن فشل الاتصال تبقى على الخادم الحالي وترى الخطأ. صف الخادم الذي أنت عليه ليس فيه إجراء تبديل، والخادم المحلي هو الصف الأول، واسمه التشغيل داخل هذا التطبيق.

بعد التبديل لا يملك الحاسوب قاعدة. كل شاشة تقرأ وتكتب عبر الخادم البعيد، على WebSocket.

حزمة الويب بعيدة دائمًا.

  1. افتح app.usectrl.dev، أو نسختك من حزمة الويب.
  2. أدخل عنوان URL للخادم ومعه إما رمز الدعوة أو معرّف الجهاز ومفتاح الاقتران.
  3. يتصل العميل بالخادم ويرسم الواجهة نفسها التي يرسمها الحاسوب.

إن حوى العنوان رابط اقتران عميق، تُملأ الحقول مسبقًا. يركب مفتاح الاقتران جزء الرابط، والمتصفح لا يرسله أبدًا إلى الخادم الذي يستضيف الصفحة، فلا يراه المضيف الثابت.

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

  • لا إشعارات نظام منبثقة، ولا أصوات للإشعارات، ولا شريط لافتات محيطي (يبقى مركز الإشعارات داخل التطبيق يعمل)
  • لا اكتشاف لخوادم LAN أو tailnet في حوار إضافة خادم
  • لا قارئ مقالات داخل التطبيق — مقالات موجز الأخبار تفتح في لسان جديد
  • لا إعادة تشغيل لملخص اجتماع، ولا إلغاء لملخص قيد المعالجة

اثنان يتصرفان على نحو مختلف. يعمل تسجيل الاجتماع في المتصفح، فيلتقط ميكروفونك ومشاركة شاشة تضم مسار صوت. يعمل فتح في IDE أيضًا، لكنه يطلب من الخادم إطلاق المحرر على شاشة الخادم، فيُخفي الزر نفسه إذا كان المضيف بلا واجهة ولم يُثبَّت عليه أي محرّر.

  • تنتهي مهلة الاتصال: لا بد أن يستطيع العميل بلوغ الخادم. تحقق من الربط (--bind any)، وأن المنفذ مفتوح، وأن --public-url يسمّي العنوان الذي يستطيع العميل الاتصال به فعلًا. على الإنترنت المفتوح يكون TLS إلزاميًا — يُرفض عند الإقلاع ربط غير loopback بلا تشفير، ما لم يُشغَّل الخادم بـ --insecure خلف بروكسي.
  • يرفض المتصفح الاتصال ويظل عميل أصيل يعمل: أصل المتصفح ليس في قائمة --allowed-origins على الخادم. الافتراض لا يسمح إلا بـ https://app.usectrl.dev (مع loopback).
  • رُفض مفتاح الاقتران: أعد تشغيل cc_server pair على الخادم لتدوير مفتاح ذلك الجهاز، ثم أدخل المفتاح الجديد. الجهاز المُبطَل يجد بيانات اعتماده قد زالت فيفشل مغلقًا، ويُسقط الإبطال الجلسة الحية خلال ثوانٍ.
  • مساحة عمل خاطئة: مساحة العمل جزء من العنوان (/workspaces/:workspaceId/…) وتُحمَل مع كل استدعاء، فتبديل مساحة العمل في عميل واحد لا يغيّر إلا عرضك أنت. لا تبلغ إلا مساحات العمل التي أنت عضو فيها — وما عداها يُرفض بـ«لست عضوًا في مساحة العمل هذه». انظر مساحات العمل والعزل.