لماذا تستضيف Jan ذاتيًا على خادم VPS
يعمل Jan بمحرك استدلال محلي (Cortex/llama.cpp) يحمّل نماذج GGUF مباشرةً على الجهاز. على محطة عمل شخصية، يكون أحادي المستخدم؛ وعلى خادم VPS، تكشف خادم استدلال Jan عبر واجهته المتوافقة مع OpenAI على المنفذ 1337، ما يسمح لتطبيقاتك ونصوصك البرمجية وزملائك باستهلاك النموذج الخاص نفسه. لا تنتقل أي بيانات إلى مزوّد خارجي: تبقى المطالبات والإكمالات في ذاكرة خادم VPS. إنه الخيار المثالي عندما تكون السرّية غير قابلة للتفاوض أو عندما تريد إلغاء أي فاتورة API عبر استغلال نماذج مفتوحة الأوزان.
الفوائد الملموسة للاستضافة الذاتية
- استدلال محلي بنسبة 100%: لا تُرسَل أي مطالبة إلى خدمة خارجية
- واجهة برمجة تطبيقات متوافقة مع OpenAI على المنفذ 1337، قابلة للربط من أي عميل موجود
- تكلفة API معدومة: تهمّ موارد خادم VPS فقط، وليس حصة رموز
- تمركز نماذج GGUF على خادم مشترك بدلاً من تنزيل واحد لكل محطة عمل
- التحكم في إصدارات النماذج وقابلية إعادة إنتاج الإجابات لاختباراتك
- إمكانية تقديم عدة تطبيقات داخلية خلف نسخة واحدة
المتطلبات العتادية والبرمجية
يشغّل Jan النماذج على المعالج افتراضيًا، وذاكرة RAM هي العامل الحاسم. يتطلّب نموذج 7B مكمّم بصيغة Q4 نحو 6 إلى 8 GB من RAM للعمل بشكل مريح؛ لذا استهدف خادم VPS بذاكرة 8 GB من RAM و4 vCPU لأوقات استجابة مقبولة، إضافةً إلى 20 إلى 40 GB من القرص حسب عدد نماذج GGUF المخزّنة. للنماذج 13B أو أكبر، ارتفع إلى 16 GB. على الجانب البرمجي: Docker وDocker Compose، ونطاق يشير إلى خادم VPS، ووكيل عكسي مع مصادقة، لأن واجهة Jan لا تفرض مفتاحًا افتراضيًا.
نشر Jan في وضع headless
تجهيز خادم VPS
اختر عرضًا بذاكرة RAM كافية لنماذجك. ثبّت Docker، وأنشئ /opt/jan/models الذي سيكون بمثابة وحدة تخزين دائمة لملفات GGUF حتى لا يُعاد تنزيلها عند كل تحديث.
تشغيل خادم Jan في حاوية
شغّل صورة خادم Jan بتركيب وحدة تخزين النماذج وكشف المنفذ 1337 على الواجهة المحلية فقط: docker run -d -p 127.0.0.1:1337:1337 -v /opt/jan/models:/root/jan/models --name jan menloltd/cortex. يتجنّب التقييد على 127.0.0.1 أي كشف مباشر.
تنزيل نموذج
عبر واجهة برمجة التطبيقات أو واجهة سطر أوامر Cortex، احصل على نموذج، على سبيل المثال cortex pull llama3.1:8b-gguf. تحقّق من تحميله بشكل صحيح بطلب اختبار على http://127.0.0.1:1337/v1/models.
اختبار واجهة برمجة التطبيقات المتوافقة مع OpenAI
أرسل إكمالاً تجريبيًا: curl http://127.0.0.1:1337/v1/chat/completions -H 'Content-Type: application/json' -d '{"model":"llama3.1:8b","messages":[{"role":"user","content":"Bonjour"}]}' وأكّد الإجابة.
التأمين بوكيل عكسي ومفتاح
ضع Caddy أو Nginx أمام المنفذ 1337، وفعّل HTTPS عبر Let's Encrypt وأضف طبقة مصادقة (مصادقة أساسية أو ترويسة Authorization مُتحقَّق منها) لمنع أي وصول مجهول إلى خادم الاستدلال الخاص بك.
كشف النطاق
انشر https://ia.yourdomain.com/v1 وأعد تهيئة عملائك بتوجيه base_url الخاص بهم إلى هذا العنوان. تستهلك تطبيقاتك الآن Jan كما لو كان OpenAI.
بدون وحدة معالجة رسومات، يعتمد معدّل النقل بالرموز/الثانية بشكل كبير على عدد خيوط المعالج. عيّن --n-threads صراحةً إلى عدد vCPU الحقيقية لخادم VPS وفضّل تكميمات Q4_K_M: يكون التوازن بين الجودة والسرعة مثاليًا لخادم يعمل بالمعالج ويقسم البصمة الذاكرية إلى النصف مقارنةً بنموذج غير مكمّم.