مواد پر جائیں

ریموٹ سرور سے جڑیں

ہر کلائنٹ ایک ایسے cc_server کے اوپر رینڈرر ہے جو ڈیٹا کا مالک ہوتا ہے۔ ڈیسک ٹاپ اپنے اندر ہی ایک چلا سکتا ہے؛ app.usectrl.dev پر موجود ویب ایپ نہیں چلا سکتی، کیونکہ ایک براؤزر ٹیب کوئی سرور میزبانی نہیں کر سکتا۔ دونوں صورتوں میں یہ گائیڈ ایک کلائنٹ کو کہیں اور چل رہے سرور کی طرف لگاتی ہے — کوئی چھوٹا باکس، کلاؤڈ VM، یا بلڈ سرور۔

  • ایک چل رہا cc_server۔ اگر آپ کے پاس نہیں ہے تو ہیڈلیس سرور چلائیں دیکھیں۔
  • یا تو وہ تین پیئرنگ ویلیوز جو سرور نے بنائیں — سرور URL (ws://…/rpc یا wss://…/rpc)، ایک ڈیوائس id اور ایک پیئرنگ کلید — یا کسی ورک اسپیس ایڈمن کی طرف سے ایک بار استعمال ہونے والا انوائٹ کوڈ۔ کوئی دعوت نامہ چھڑانے پر آپ کا صارف فراہم کیا جاتا ہے، آپ کی رکنیت درج ہوتی ہے اور اِس کلائنٹ کی اسناد آپ کے لیے بنائی جاتی ہیں، چنانچہ آپ کو کبھی کوئی ڈیوائس id یا کلید خود نہیں سنبھالنی پڑتی۔

مقامی سرور کو کسی چیز کی ضرورت نہیں: ws://localhost:9030/rpc ڈیسک ٹاپ اور براؤزر دونوں سے کام کرتا ہے، کیونکہ براؤزر لوپ بیک کو ایک قابلِ اعتماد اوریجن سمجھتے ہیں۔

کسی دوسری مشین پر موجود سرور مختلف ہے۔ app.usectrl.dev HTTPS پر پیش کیا جاتا ہے، چنانچہ براؤزر صرف ایسے سرٹیفکیٹ کے ساتھ wss:// سوکٹ کھولے گا جس پر وہ پہلے سے بھروسا کرتا ہو — اور cc_server تو TLS کے بغیر غیر لوپ بیک ایڈریس بائنڈ کرنے سے شروع ہی میں انکار کر دیتا ہے۔ اِسے اِن میں سے کوئی ایک دیں:

  • براہِ راست ایک سرٹیفکیٹ، --tls-cert اور --tls-key کے ساتھ
  • سامنے TLS ختم کرنے والا ریورس پراکسی، جبکہ سرور --insecure کے ساتھ شروع کیا گیا ہو (پراکسی کے پیچھے پلین ٹیکسٹ، صرف قابلِ اعتماد نیٹ ورک پر)
  • کوئی ٹنل یا VPN جو سرٹیفکیٹ مہیا کرے — Tailscale، cloudflared یا اِسی طرح کا کوئی اور۔ ترتیبات → سرور → کنکشن اور اسٹیٹس میں بلٹ اِن ٹنل کی رضامندی یہ سرور شیئر کریں کے تحت موجود ہے۔

سرور کی طرف کی دو سیٹنگز آسانی سے نظر سے رہ جاتی ہیں۔ پراکسی، NAT یا ٹنل کے پیچھے --public-url کو اُس ایڈریس پر سیٹ کریں جس پر کلائنٹس کو واقعی ڈائل کرنا چاہیے — یہ بطور ڈیفالٹ مقامی بائنڈ ہوتا ہے، چنانچہ اِس کے بغیر کلائنٹس غلط ہوسٹ آزماتے ہیں۔ اور اگر آپ ویب بلڈ کی اپنی کاپی کی میزبانی کرتے ہیں تو اُس کا اوریجن --allowed-origins میں شامل کریں، جس کا ڈیفالٹ صرف https://app.usectrl.dev ہے؛ لوپ بیک اور نیٹو کلائنٹس کو ہمیشہ اجازت ہوتی ہے۔

تازہ انسٹال پر:

  1. Control Center لانچ کریں۔ پہلی بار چلنے والی اسکرین پوچھتی ہے Control Center کیسے چلے؟
  2. اس ایپ میں چلائیں کے بجائے کنیکٹ فیلڈز بھریں: سرور URL، نیز انوائٹ کوڈ یا ڈیوائس id اور پیئرنگ کلید۔
  3. منسلک ہوں پر کلک کریں۔ Control Center سرور کو ڈائل کرتا ہے اور ورک اسپیس کے ان باکس پر پہنچتا ہے۔

اُس ڈیسک ٹاپ پر جو پہلے سے اپنا سرور چلاتا ہے:

  1. ترتیبات → سرور → کنکشن اور اسٹیٹس کھولیں۔
  2. سرور شامل کریں پر کلک کریں۔ سرور URL (wss://host:9030/rpc) اور انوائٹ کوڈ یا ڈیوائس id اور پیئرنگ کلید درج کریں۔ URL فیلڈ کا سوفکس بٹن آپ کے LAN یا ٹیل نیٹ پر cc_server انسٹینسز دریافت کرتا ہے۔
  3. منسلک ہوں پر کلک کریں، پھر نئے سرور کی قطار پر تبدیل کریں۔

تبدیلی لائیو ہوتی ہے: ایپ جگہ کے اندر ہی نئے سیشن کے گرد دوبارہ بن جاتی ہے، بغیر کسی ری اسٹارٹ کے۔ اگر کنکٹ ناکام ہو تو آپ موجودہ سرور پر ہی رہتے ہیں اور خرابی دیکھتے ہیں۔ جس سرور پر آپ ہیں اُس کی قطار میں تبدیل کریں کا کوئی ایکشن نہیں ہوتا؛ مقامی سرور پہلی قطار ہے، جس کا لیبل اس ایپ میں چلائیں ہے۔

تبدیل کرنے کے بعد ڈیسک ٹاپ کسی ڈیٹا بیس کا مالک نہیں رہتا۔ ہر اسکرین WebSocket کے ذریعے ریموٹ سرور سے پڑھتی اور لکھتی ہے۔

ویب بلڈ ہمیشہ ریموٹ ہوتا ہے۔

  1. app.usectrl.dev کھولیں، یا ویب بلڈ کی اپنی کاپی۔
  2. سرور URL کے ساتھ انوائٹ کوڈ یا ڈیوائس id اور پیئرنگ کلید درج کریں۔
  3. کلائنٹ سرور کو ڈائل کرتا ہے اور وہی انٹرفیس رینڈر کرتا ہے جو ڈیسک ٹاپ کرتا ہے۔

اگر URL میں کوئی پیئرنگ ڈیپ لنک موجود ہو تو فیلڈز پہلے سے بھری ہوتی ہیں۔ پیئرنگ کلید URL کے فریگمنٹ میں سوار ہوتی ہے، جسے براؤزر صفحے کی میزبانی کرنے والے سرور کو کبھی نہیں بھیجتا، لہٰذا اسٹیٹک ہوسٹ اُسے کبھی نہیں دیکھتا۔

ویب کلائنٹ اُسی سرور سے پڑھتا اور لکھتا ہے جس سے ڈیسک ٹاپ، مگر چند سطحوں کو ایک نیٹو ونڈو یا مشین کے اپنے ڈیوائسز درکار ہوتے ہیں:

  • کوئی OS اطلاعاتی ٹوسٹ، اطلاع کی آواز یا محیطی بینر نہیں (ایپ کے اندر اطلاعات کا مرکز پھر بھی کام کرتا ہے)
  • سرور شامل کریں ڈائلاگ میں کوئی LAN یا ٹیل نیٹ سرور کی دریافت نہیں
  • ایپ کے اندر مضمون پڑھنے والا کوئی ریڈر نہیں — نیوز فیڈ کے مضامین ایک نئے ٹیب میں کھلتے ہیں
  • نہ کسی میٹنگ کے خلاصے کو دوبارہ چلانا، نہ پروسیس ہو رہے خلاصے کو منسوخ کرنا

دو چیزیں غائب ہونے کے بجائے مختلف طور پر برتاؤ کرتی ہیں۔ میٹنگ کی ریکارڈنگ براؤزر میں کام کرتی ہے، جو آپ کا مائیکروفون نیز ایک ایسا اسکرین شیئر کیپچر کرتی ہے جس میں آڈیو ٹریک شامل ہو۔ IDE میں کھولیں بھی کام کرتا ہے، مگر سرور سے کہتا ہے کہ ایڈیٹر کو سرور کے ڈسپلے پر لانچ کرے، چنانچہ ایسے ہیڈلیس ہوسٹ پر جہاں کوئی ایڈیٹر انسٹال نہ ہو، بٹن خود کو چھپا لیتا ہے۔

  • کنکشن ٹائم آؤٹ ہو جاتا ہے: سرور کلائنٹ سے قابلِ رسائی ہونا چاہیے۔ بائنڈ (--bind any) چیک کریں، کہ پورٹ کھلا ہے اور کہ --public-url وہ ایڈریس بتاتا ہے جس پر کلائنٹ واقعی ڈائل کر سکے۔ کھلے انٹرنیٹ پر TLS لازمی ہے — پلین ٹیکسٹ غیر لوپ بیک بائنڈ اسٹارٹ اپ پر مسترد کر دیا جاتا ہے، الا یہ کہ سرور کسی پراکسی کے پیچھے --insecure کے ساتھ شروع کیا گیا ہو۔
  • براؤزر جڑنے سے انکار کرتا ہے مگر نیٹو کلائنٹ کام کرتا ہے: براؤزر کا اوریجن سرور کی --allowed-origins فہرست میں نہیں ہے۔ ڈیفالٹ صرف https://app.usectrl.dev (نیز لوپ بیک) کو اجازت دیتا ہے۔
  • پیئرنگ کلید مسترد ہوئی: سرور پر cc_server pair دوبارہ چلائیں تاکہ اُس ڈیوائس کی کلید بدل جائے، پھر نئی کلید درج کریں۔ منسوخ شدہ ڈیوائس اپنی اسناد غائب پاتی ہے اور بند حالت میں ناکام ہو جاتی ہے؛ منسوخی کسی زندہ سیشن کو سیکنڈوں میں گرا دیتی ہے۔
  • غلط ورک اسپیس: ورک اسپیس URL کا حصہ ہے (/workspaces/:workspaceId/…) اور ہر کال کے ساتھ سفر کرتی ہے، چنانچہ ایک کلائنٹ میں ورک اسپیس بدلنے سے صرف آپ کا اپنا ویو بدلتا ہے۔ آپ صرف اُن ورک اسپیسز تک پہنچ سکتے ہیں جن کے آپ رکن ہیں — باقی سب “Not a member of this workspace” کے ساتھ مسترد کر دیا جاتا ہے۔ ورک اسپیسز اور تنہائی دیکھیں۔