إصدارAPI / منتج · جاهز للعملHabr AI→ المصدر

مطوّر ينقل مصادقة Claude Code إلى خادم VDS مع إبقاء المشاريع على جهاز Mac

بعد حظر اشتراك Claude Max، نقل الكاتب المصادقة إلى خادم VDS وأبقى المشاريع على جهاز Mac. يتصل Claude Code المحلي ببوابة API المسماة CLIProxyAPI على الخادم عبر نفق SSH، بينما تمر بقية حركة البيانات عبر Tinyproxy. لا تجري مزامنة الملفات؛ إذ لا تُرسل إلى النموذج سوى المقاطع التي يختارها الوكيل. لكن المنظومة هشة ومثيرة للجدل من زاوية قواعد Anthropic.

معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
مطوّر ينقل مصادقة Claude Code إلى خادم VDS مع إبقاء المشاريع على جهاز Mac
المصدر: Habr AI. كولاج: Hamidun News.
استمع للمقال
بطاقة الحقائق والأرقام
المعيارالتفاصيل
المصدر الأصليHabr AI ↗
رئيس التحرير
حقيقة رئيسية #1لا تستمع البوابة والخادم الوكيل على خادم VDS إلا عبر 127.0.0.1
حقيقة رئيسية #2إعداد NO_PROXY لاتصالات loopback إلزامي، وإلا تداخلت القنوات بعضها مع بعض
حقيقة رئيسية #3يجب تثبيت إصدارات أدوات CLI؛ فقد أدى نموذج مساعد جديد إلى تعطيل البوابة

في أكتوبر، بدأت حسابات كثير من مستخدمي Claude في روسيا والدول المجاورة تتساقط مجددا. وفقد كاتب التحليل المنشور على Habr اشتراك Max قبل يوم واحد من تحصيل الرسوم، بينما لم يكن الدعم، كما افترض محقا، ليحل شيئا. اشترى اشتراكا جديدا وأنشأ إعدادا تبقى فيه المشاريع على جهاز Mac الخاص به، فيما توجد مصادقة Anthropic ونقطة الخروج إلى الشبكة على خادم Linux. هذه تجربة شخصية، ويؤكد الكاتب نفسه أنه لا يمكن اعتبارها دليلا عاما يصلح للجميع.

لماذا لم يكن Remote SSH والخادم الوكيل البسيط كافيين

كانت الفكرة الأولى هي الأكثر وضوحا: تثبيت Claude Code على خادم VDS والاتصال به عبر VS Code Remote SSH. ينجح ذلك، لكن المشاريع الموجودة على جهاز Mac لا تظهر تلقائيا على الخادم. يمكن استنساخ المستودعات وإعداد المزامنة، إلا أن الكاتب لم يرغب في الاحتفاظ ببعض الملفات على جهاز لا يملكه. وهكذا أصبح المطلوب كالتالي: يقرأ Claude Code الملفات ويعدلها على جهاز Mac، وتخرج طلبات النموذج عبر Linux، بينما تبقى المصادقة على Linux.

أما الفكرة الثانية، وهي تشغيل خادم وكيل HTTP على الخادم، فلم تنجح هي الأخرى. فالخادم الوكيل يغيّر مسار حركة البيانات، لكنه لا ينقل إلى العميل على جهاز Mac بيانات مصادقة موجودة على جهاز آخر. لذلك لزم استخدام مكوّنين مختلفين. تعمل CLIProxyAPI بوصفها بوابة تستقبل طلب Claude Code المحلي وتتصل بـ Anthropic باستخدام بيانات الاعتماد الموجودة على الخادم. أما Tinyproxy فيعيد توجيه بقية حركة بيانات العميل، بما فيها البحث على الويب وMCP والطلبات الأخرى التي كانت ستخرج لولا ذلك من عنوان الشبكة المنزلية.

كيف تعمل المنظومة

على جهاز Mac، يحدد ملف settings.json قيمة ANTHROPIC_BASE_URL إلى منفذ محلي، ويضبط HTTP_PROXY وHTTPS_PROXY على منفذ ثان، فيما توفر apiKeyHelper مفتاح البوابة. يُمرر المنفذان عبر نفق SSH واحد إلى الخادم، حيث لا تستمع البوابة والخادم الوكيل إلا على 127.0.0.1. ويتولى LaunchAgent إنشاء النفق وإعادة تشغيله. أما النموذج نفسه، بطبيعة الحال، فيحسب الإجابة داخل سحابة Anthropic. تبقى البوابة والرمز المميز ونقطة الخروج إلى الشبكة على الخادم، بينما تبقى الملفات والوكيل وتنفيذ الأدوات المحلية على جهاز Mac. ولا تُرسل إلى النموذج سوى مقاطع الملفات التي يختارها الوكيل ونتائج الأوامر المحلية.

أجرى الكاتب اختبارات كثيرة لأن المشكلات ظهرت في كل خطوة. تحقق من عنوان IP الخارجي عبر الخادم الوكيل، وفحص الملف التنفيذي لإضافة VS Code، وتأكد من تنفيذ عمليات الملفات على جهاز Mac. كما شغّل العميل بصورة منفصلة مع تعطيل البوابة والخادم الوكيل؛ فلم تصل أي إجابة عبر مسار بديل، بل ظهر خطأ اتصال فقط.

أين تعطّل كل شيء

كانت المشكلة الأولى في systemd. لم تتمكن عملية استيراد المصادقة داخل ExecStartPre من رؤية متغير البيئة المطلوب، ولذلك كانت الخدمة تتوقف قبل بدء تشغيل البوابة. نفّذ الكاتب الاستيراد بصورة منفصلة، ثم جعل الخدمة تقرأ ملف auth جاهزا. ويتعين تحديث الرمز المميز يدويا.

أما المشكلة الثانية فكانت NO_PROXY. من دون استثناء لاتصالات loopback، كان الطلب الموجّه إلى البوابة المحلية يذهب أولا إلى Tinyproxy، فلا يعمل أي شيء.

وكانت المشكلة الثالثة والأكثر فائدة تتعلق بدليل النماذج. طلب العميل النموذج المساعد claude-haiku-5-5، الذي لم يكن موجودا في دليل CLIProxyAPI 8.0.20، فتلقى الخطأ unknown provider for model. وكان الحل إضافة سجل خاص بالنموذج إلى الدليل. ويستنتج الكاتب ضرورة تثبيت إصدارات العميل والبوابة وإجراء التحديثات بصورة مدروسة.

وثمة قيد آخر: بعد خروج الجهاز من وضع السكون أو انقطاع الشبكة، يعيد النفق الاتصال، لكن طلب النموذج الذي انقطع بالفعل لا يُستأنف.

ما الذي يمكن استخلاصه وما الذي يجب تذكره

هذا النمط مفيد حتى خارج سياق عمليات الحظر. فإذا كان المطلوب إبقاء بيانات الاعتماد ونقطة الخروج إلى الشبكة على جهاز، والملفات والأدوات على جهاز آخر، فإن بنية «وكيل محلي، وبوابة خلف نفق SSH، وخادم وكيل منفصل» تعمل. كما توضح أن بوابة API والخادم الوكيل للشبكة يحلان مهمتين مختلفتين ولا يحل أحدهما محل الآخر.

لكن هذا النهج ينطوي على تحفظات جدية. فالكاتب نفسه يقر بأن وجود خادم VDS لا يلغي متطلبات Anthropic المتعلقة بالموقع الفعلي للمستخدم، وأن تطابق بلدان البطاقة المصرفية وشريحة SIM والخادم لا يضمن شيئا. كما أنه يتشارك الاشتراك مع صديق، وهذه منطقة مخاطر منفصلة: خدمات ومنافذ مشتركة على خادم VDS واحد، وعدة مستخدمين يتمتعون بصلاحيات root. ويُخزن setup-token على الخادم، ما يجعل الخادم نقطة حرجة. وقد يتعارض تجاوز القيود الإقليمية ومشاركة الاشتراك مع شروط الخدمة، ولذلك يمكن فقدان الحساب مجددا. من الأفضل للفرق استخدام هذه البنية عندما يكون لديها وصول مشروع وتحتاج إلى نقطة خروج مركزية، لا باعتبارها وسيلة للتحايل على قواعد مزود الخدمة.

تنقطع نهاية المقال المنشور على Habr أثناء تحليل تفاصيل العمل المشترك، ولذلك لا نرى الصورة الكاملة لآلية الوصول المشترك.

القصة

أسئلة وأجوبة حول الخبر

ما أبرز التفاصيل حول لماذا لم يكن Remote SSH والخادم الوكيل البسيط كافيين؟

كانت الفكرة الأولى هي الأكثر وضوحا: تثبيت Claude Code على خادم VDS والاتصال به عبر VS Code Remote SSH. ينجح ذلك، لكن المشاريع الموجودة على جهاز Mac لا تظهر تلقائيا على الخادم. يمكن استنساخ المستودعات وإعداد المزامنة، إلا أن الكاتب لم يرغب في الاحتفاظ ببعض الملفات على جهاز لا يملكه. وهكذا أصبح المطلوب كالتالي: يقرأ Claude Code الملفات ويعدلها على جهاز Mac، وتخرج طلبات النموذج عبر Linux، بينما تبقى المصادقة على Linux. أما الفكرة الثانية، وهي تشغيل خادم وكيل HTTP على الخادم، فلم تنجح هي الأخرى.

ما أبرز التفاصيل حول كيف تعمل المنظومة؟

على جهاز Mac، يحدد ملف settings.json قيمة ANTHROPIC_BASE_URL إلى منفذ محلي، ويضبط HTTP_PROXY وHTTPS_PROXY على منفذ ثان، فيما توفر apiKeyHelper مفتاح البوابة. يُمرر المنفذان عبر نفق SSH واحد إلى الخادم، حيث لا تستمع البوابة والخادم الوكيل إلا على 127.0.0.1. ويتولى LaunchAgent إنشاء النفق وإعادة تشغيله. أما النموذج نفسه، بطبيعة الحال، فيحسب الإجابة داخل سحابة Anthropic. تبقى البوابة والرمز المميز ونقطة الخروج إلى الشبكة على الخادم، بينما تبقى الملفات والوكيل وتنفيذ الأدوات المحلية على جهاز Mac.

ما أبرز التفاصيل حول أين تعطّل كل شيء؟

كانت المشكلة الأولى في systemd. لم تتمكن عملية استيراد المصادقة داخل ExecStartPre من رؤية متغير البيئة المطلوب، ولذلك كانت الخدمة تتوقف قبل بدء تشغيل البوابة. نفّذ الكاتب الاستيراد بصورة منفصلة، ثم جعل الخدمة تقرأ ملف auth جاهزا. ويتعين تحديث الرمز المميز يدويا. أما المشكلة الثانية فكانت NO_PROXY. من دون استثناء لاتصالات loopback، كان الطلب الموجّه إلى البوابة المحلية يذهب أولا إلى Tinyproxy، فلا يعمل أي شيء. وكانت المشكلة الثالثة والأكثر فائدة تتعلق بدليل النماذج.

ZK
جمال حميدون — مدير المنتجات في Alpina Digital ومدير منتج AlpinaGPT. يبني منتجات الذكاء الاصطناعي منذ 2019. بدأ Hamidun News كمشروع شخصي ثم أصبح مُجمِّعًا إنتاجيًا بأكثر من 6000 قارئ.
✦ Hands-On AI Engineering · Hamidun Academy

Build & Ship Production AI Agents Without Boilerplate Code

Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.

Start 72h Free Trial →Vibe-Coding Intensive
ما رأيك؟
جارٍ تحميل التعليقات…