بحث

النشر الآلي لـ LibreChat على AWS EC2 : حل DevOps مبتكر

النشر الآلي لـ LibreChat على AWS EC2 : حل DevOps مبتكر

يسعدني أن أقدّم مشروعي الأخير: النشر الآلي بالكامل لـ LibreChat على AWS EC2، حل مفتوح المصدر متاح على GitLab. يبرز هذا المشروع خبرتي في DevOps ومهندسة السحابة، مع الاعتماد على Terraform كـ Infrastructure as Code (IaC)، سكربت User-Data بلغة Bash، خط أنابيب GitLab CI/CD، وإدارة مركزية عبر AWS Systems Manager (SSM). النتيجة: مثيل LibreChat جاهز للعمل في أقل من 6 دقائق، مع تكاليف محسّنة، أمان معزّز وإمكانية وصول عالية.

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

1. بنية سحابة محسّنة وقابلة للتكرار

تعتمد البنية التحتية على Terraform، ملتزمة بمبادئ Infrastructure as Code لضمان قابلية التكرار والقابلية للتوسع بسلاسة. المكونات الرئيسية تشمل:

  • AWS VPC: شبكة افتراضية معزولة لتأمين البنية التحتية.
  • شبكات فرعية عامة: ثلاث شبكات فرعية لضمان توافر عالٍ.
  • مثيل EC2 (t3a.small): يستضيف LibreChat، مع خيار بين Spot Instances أو On-Demand.
  • Internet Gateway: يتيح اتصالاً آمناً عبر HTTPS.
  • AWS SSM: مركز لإدارة مفاتيح الـ API ومتابعة عملية النشر.

يتم أتمتة النشر على EC2 بواسطة سكربت User-Data بلغة Bash الذي يقوم بـ:

  • تثبيت الاعتماديات (Docker، Git، Node.js) وتحديث النظام.
  • استنساخ LibreChat (الإصدار 0.7.7) وتكوين الملفات .env و librechat.yaml.
  • استرجاع مفاتيح الـ API من SSM بطريقة آمنة.
  • تكوين Nginx مع شهادة SSL موقّعة ذاتيًا لـ HTTPS.

هذا السكربت، المدمج عبر Terraform، يتضمّن معالجة للأخطاء (set -e, trap 'error_handler' ERR) وتسجيلًا في /var/log/user-data.log، مما يضمن عملية موثوقة وقابلة للتتبع.

2. الأمان والإدارة المركزية لمفاتيح الـ API

الأمان أولوية. مفاتيح الـ API (OpenAI، Mistral AI، Anthropic، Google) مخزّنة في AWS SSM Parameter Store، تُسترجع ديناميكيًا، ولا تُشفّر داخل الشيفرة. الإجراءات تشمل:

  • HTTPS إجباري: شهادة موقّعة ذاتيًا مع تحويل من 80 إلى 443.
  • إدارة الأخطاء: إيقاف السكربت عند حدوث مشكلة، مع تحديث الحالة في SSM.
  • AWS Session Manager: الوصول إلى المثيل دون SSH لرفع مستوى الأمان.

تضمن هذه المقاربة إدارة آمنة وإشرافًا في الوقت الحقيقي.

3. تحسين التكاليف باستخدام Spot Instances

لتقليل التكاليف، قمت بدمج Spot Instances من AWS، مستغلاً الموارد غير المستخدمة. متغير Terraform spot_enabled يسمح بالاختيار بين Spot وOn-Demand، مما يجعل المشروع في متناول الجميع. سكربت Python، check_spot.py، يضبط الأسعار تلقائيًا في variables.tf لتحقيق تحسين مستمر.

4. خط أنابيب CI/CD كامل مع GitLab

خط أنابيب GitLab CI/CD (المعرّف في gitlab-ci.yml) ينظم عملية النشر:

  • Terraform: يخطط ويطبق تغييرات البنية التحتية.
  • إدارة المثيلات: بدء، إيقاف والتحقق من الحالة عبر SSM.
  • مفاتيح الـ API: إضافة أو حذف المفاتيح بأمان.
  • التسجيلات: التحكم في وصول المستخدمين إلى LibreChat.

يسهّل السكربت export.sh الأوامر سواء محليًا أو عبر CI/CD، موفّرًا تجربة سلسة واحترافية.

5. الوصول العالمي بفضل التدويل

للوصول إلى جمهور عالمي، تم ترجمة README إلى ست لغات (الإنجليزية، الألمانية، الإسبانية، اليابانية، الكورية، الصينية) باستخدام برنامج الترجمة بواسطة الذكاء الاصطناعي. هذا يجعل المشروع شاملًا ومناسبًا لجميع المستخدمين.

6. التحديات التقنية التي تم تجاوزها بنجاح

تطلب تكييف LibreChat 0.7.6 تعديلات دقيقة:

  • دعم Mistral: تحديث librechat.yaml لـ mistral-large-latest.
  • Nginx: تصحيح توجيهات SSL من أجل HTTP/2.
  • Spot/On-Demand: إدارة مرنة عبر Terraform.

تمت معالجة هذه التحديات من خلال اختبارات دقيقة وتوثيق مفصل.

7. لماذا يبرز هذا المشروع

يتميّز هذا المشروع بـ:

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

يعكس ذلك مهاراتي في هندسة AWS، DevOps، السحابة والـ scripting، وكذلك شغفي بالمصدر المفتوح.

اكتشف وشارك!

استكشف هذا المشروع على GitLab، جرّبه، وشارك ملاحظاتك. سواء كنت خبيرًا أو مبتدئًا، هذا المشروع موجّه لك. ساهم لتطويره!

الاتصال : contact@jls42.org

نبذة عني : أنا Julien LS، شغوف بهندسة بنى السحابة على AWS، DevOps، الذكاء الاصطناعي والأتمتة. هذا المشروع يندرج ضمن سلسلة أعمالي مثل BabelFish AI. تابعني على GitLab.

تمت ترجمة هذا المستند من النسخة fr إلى اللغة ar باستخدام نموذج gpt-5-mini. لمزيد من المعلومات حول عملية الترجمة، راجع https://gitlab.com/jls42/ai-powered-markdown-translator