دليل النشر

Gitea مقابل GitLab: أي منصة Git مستضافة ذاتيًا على VPS؟

انشر على VPS Cloud →

مقارنات8 دقيقة قراءة

Gitea مقابل GitLab: أي منصة Git مستضافة ذاتيًا على VPS؟

استضافة منصة Git خاصة بك تعني استعادة السيطرة على شيفرتك وتكاملك المستمر (CI) وأسرارك. يراهن Gitea على الخفّة، وGitLab على المنصة المتكاملة. إليك كيفية الحسم ونشر منصتك على VPS.

لماذا تستضيف منصة Git ذاتيًا على VPS

منصة Git المستضافة ذاتيًا تُبقي ملكيتك الفكرية بعيدًا عن المنصات العامة وتزيل أي حد تعسّفي على عدد المستودعات الخاصة أو المتعاونين أو دقائق CI. على VPS، تتحكّم في موقع البيانات والنسخ الاحتياطي والتكامل مع خط الإنتاج الداخلي الخاص بك. Gitea (وفرعه Forgejo) مكتوب بلغة Go: ثنائي (binary) واحد، إقلاع فوري، بصمة ذاكرة ضئيلة، مثالي لـ VPS متواضع. أما GitLab CE فهو حزمة متكاملة (المشكلات وCI/CD وسجل Docker وسجل الحزم وويكي والبيئات) لكنه يستهلك ذاكرة (RAM) أكبر بكثير. يعتمد الخيار على حاجتك: Git نظيف وسريع، أو منصة DevOps متكاملة في منتج واحد.

فوائد منصة مستضافة ذاتيًا

  • مستودعات خاصة غير محدودة من دون اشتراك لكل مقعد
  • CI/CD تحت سيطرتك، مع مُشغِّلاتك الخاصة على VPS
  • الأسرار والرموز (tokens) مخزَّنة لديك، خارج أي منصة طرف ثالث
  • سجل صور Docker والحزم مدمج، قريب من عمليات نشرك
  • الامتثال وتوطين البيانات في المغرب تحت السيطرة
  • مع Gitea: ثنائي واحد، ونسخ احتياطي بنسخ مجلد وقاعدة بيانات

المتطلبات حسب المنصة المختارة

Gitea اقتصادي: يكفي 1 vCPU و1 غيغابايت من الذاكرة لفريق صغير، و2 غيغابايت مع قاعدة البيانات وبضعة مُشغِّلات. أما GitLab CE فأكثر نهمًا بكثير: استهدف 4 غيغابايت من الذاكرة كحد أدنى (يُوصى بـ 8 غيغابايت في الاستخدام الفعلي مع CI)، و4 vCPU وقرصًا سريعًا، لأن الحزمة تتضمّن PostgreSQL وRedis وSidekiq وGitaly. في كلتا الحالتين تحتاج إلى Docker وCompose، ونطاق فرعي (git.yourdomain.com)، وبروكسي عكسي لأجل TLS، ويُفضَّل نطاق فرعي ثانٍ إذا فعّلت سجل Docker. خصّص وحدة تخزين مخصصة للمستودعات واستراتيجية للنسخ الاحتياطي.

نشر Gitea (أو GitLab) على VPS باستخدام Docker

01

إنشاء وحدات التخزين والشبكة

جهّز mkdir -p /srv/gitea/{data,db} وشبكة Docker مخصصة docker network create forge. يسهّل الفصل بين data وdb النسخ الاحتياطي المستقل للشيفرة ولقاعدة البيانات.

02

تعريف ملف docker-compose.yml

بالنسبة إلى Gitea، عرِّف خدمة gitea/gitea إضافةً إلى postgres، وركِّب وحدات التخزين، واكشف منفذ HTTP 3000 ومنفذ SSH الخاص بـ Git 2222 محليًا. أما بالنسبة إلى GitLab، فاستخدم gitlab/gitlab-ce مع المتغير GITLAB_OMNIBUS_CONFIG لتعيين external_url.

03

التشغيل وإنهاء التثبيت

نفِّذ docker compose up -d. يعرض Gitea معالج تثبيت عند أول اتصال (أدخِل نوع قاعدة البيانات والنطاق)؛ أما GitLab فيستغرق عدة دقائق للتهيئة، فاحصل على كلمة مرور root المُولَّدة من السجلات (logs).

04

ضبط البروكسي العكسي وSSL

وجِّه git.yourdomain.com إلى منفذ HTTP الخاص بالمنصة باستخدام Caddy أو Nginx للحصول على شهادة Let's Encrypt. احرص على تمرير X-Forwarded-Proto الصحيح كي تكون روابط الاستنساخ عبر HTTPS صحيحة.

05

تفعيل SSH الخاص بـ Git

اربط منفذ SSH الخاص بالحاوية بمنفذ على الـ VPS (مثل 2222) واضبط مفاتيحك. عيِّن SSH_DOMAIN كي تكون أوامر git clone التي تقترحها الواجهة دقيقة.

06

توصيل CI/CD

سجِّل مُشغِّلًا (runner): إما Gitea Actions (متوافق مع صياغة GitHub Actions) أو GitLab Runner عبر Docker. حُدّ من موارده واعزله في حاويته الخاصة كي لا تُسقط مهمة ثقيلة المنصة.

المعيارGiteaGitLab CE
الحد الأدنى المُوصى به من الذاكرة1 إلى 2 غيغابايت4 إلى 8 غيغابايت
البنيةثنائي Go واحدحزمة متعددة الخدمات (omnibus)
زمن الإقلاعشبه فوريعدة دقائق
CI/CD مدمجGitea Actions (بأسلوب GitHub)GitLab CI/CD، متكامل جدًا
سجل Docker / الحزممُضمَّن وخفيفمُضمَّن وغني
إدارة المشاريع (المشكلات، اللوحات)أساسيةمتقدمة (epics حسب الإصدار)
سهولة النسخ الاحتياطيمجلد + تفريغ SQLإجراء omnibus مخصص
مثالي لـVPS متواضع، فريق صغير/متوسطمنصة DevOps متكاملة

في GitLab، تجنّب الـ OOM-kill على VPS صغير بتقليل التزامن: اضبط puma['worker_processes'] على 2 وsidekiq['max_concurrency'] على 10 في إعدادات omnibus. وإذا ظلّت الذاكرة مشكلة، فانظر إلى Forgejo (فرع مجتمعي من Gitea) الذي يحافظ على الخفّة مع تغطية 90% من احتياجات الفريق، بما في ذلك السجل وActions.

منصة Git الخاصة بك جاهزة للاستنساخ

يتيح لك VPS Cloud من ServOrbit مع قالب Docker نشر Gitea أو GitLab مع بروكسي عكسي وSSL ومُشغِّل CI في بضع خطوات، من مساحة العميل الخاصة بك.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو راسل فريقنا — الدعم بـ العربية والفرنسية والإنجليزية.