كلاود
development

سيرفر Git خاص بشركتك: Gitea على VPS سعودي في ساعة

كلاود|٢٥ سبتمبر ٢٠٢٦|6 دقائق قراءة|١٥١ مشاهدة
سيرفر Git خاص بشركتك: Gitea على VPS سعودي في ساعة

كودك الحساس يستحق سيرفر Git داخل المملكة تملكه كاملاً. Gitea خفيف يعمل على باقة أساس، نثبّته بـDocker خطوة بخطوة، ننسخه احتياطياً، ونشغّل CI بسيطاً بGitea Actions، بلا رسوم مقاعد شهرية.

الجواب المباشر: Gitea على خادم سعودي يعطيك سيادة كاملة على كودك

لو كان كود شركتك حساساً، أو تحتاج سيادة بيانات داخل المملكة، أو أرهقتك رسوم المقاعد الشهرية لكل مطور على المنصات السحابية، فالحل هو استضافة سيرفر Git خاص بك. Gitea منصة Git مفتوحة المصدر، مكتوبة بلغة Go، خفيفة جداً لدرجة أنها تعمل بسلاسة على أصغر خادم، وتعطيك مستودعات ومراجعة كود (pull requests) وتتبع مشاكل (issues) وويكي وحتى CI مدمج، كل ذلك على بنيتك أنت. تثبيتها بـDocker لا يتجاوز الساعة، وتكفيها باقة أساس (1vCPU و2GB رام و20GB تخزين) لفريق صغير إلى متوسط.

الفارق الجوهري عن المنصات السحابية: كودك يبقى على خادم داخل المملكة تتحكم فيه كلياً، لا على خوادم أجنبية، وتدفع ثمن الخادم مرة واحدة سنوياً بدل رسوم متصاعدة لكل مطور تضيفه. فريق من عشرة مطورين قد يكلّفك على منصة سحابية مئات الريالات شهرياً كرسوم مقاعد، بينما باقة أساس بـ3,450 ريالاً سنوياً تستضيف عدداً غير محدود من المستخدمين والمستودعات الخاصة. في هذا المقال نحدّد متى تستحق الاستضافة الذاتية، نثبّت Gitea بـDocker خطوة بخطوة، نضبط النسخ الاحتياطي للمستودعات، ونشغّل CI بسيطاً بGitea Actions، ونحسب متطلبات الموارد الفعلية.

متى تستحق الاستضافة الذاتية

الاستضافة الذاتية ليست للجميع، لكنها تصبح القرار الصحيح في حالات واضحة:

  • كود حساس أو ملكية فكرية: أنظمة مخصصة أو خوارزميات لا تريد أن تغادر بنيتك أبداً.
  • سيادة بيانات وامتثال: جهات حكومية أو شركات تتعامل مع بيانات تشترط بقاءها داخل المملكة.
  • تكلفة المقاعد: فريق كبير تتضاعف كلفة مقاعده الشهرية مع كل توظيف.
  • تكامل داخلي: حاجة لربط Git ببنيتك الداخلية وأنظمتك الخاصة بحرية كاملة.

في المقابل، لو كان فريقك صغيراً جداً ومشاريعك مفتوحة المصدر ولا تريد أي عبء صيانة، فقد تكفيك المنصات السحابية المجانية. القرار موازنة بين السيادة والتحكم من جهة، ومسؤولية الصيانة والنسخ الاحتياطي من جهة أخرى.

تثبيت Gitea بـDocker خطوة بخطوة

على خادم سحابي جديد بنظام لينكس، والخطوات مختصرة واضحة:

1. ثبّت Docker وDocker Compose

Docker هو الطريقة الأنظف، لأنه يعزل Gitea وقاعدة بياناتها في حاويات، ويسهّل الترقية والنسخ. ثبّت Docker وإضافة Compose من المستودعات الرسمية للتوزيعة.

2. اكتب ملف docker-compose

أنشئ مجلداً للمشروع وبداخله ملف compose يعرّف خدمتين: خدمة gitea نفسها، وخدمة قاعدة بيانات (PostgreSQL موصى بها للإنتاج بدل SQLite للفرق الأكبر). النقاط المهمة في الملف:

الإعدادوظيفته
volumes: ./gitea-data:/dataيحفظ المستودعات والإعدادات خارج الحاوية فلا تضيع عند الترقية
ports: 3000:3000منفذ واجهة الويب
ports: 222:22منفذ SSH للدفع والسحب
environment DB_TYPEنوع قاعدة البيانات وبيانات الاتصال
restart: alwaysيعيد تشغيل الحاوية بعد أي انهيار أو إقلاع

3. شغّل وأكمل الإعداد

نفّذ docker compose up -d فترتفع الحاويات. افتح المتصفح على IP خادمك والمنفذ 3000، فتظهر شاشة الضبط الأولي: اضبط نوع قاعدة البيانات، ورابط الموقع، وأنشئ أول حساب مدير. القاعدة المهمة: أول حساب تسجّله يصبح المدير، فأنشئه فوراً قبل أن يصل أحد غيرك.

4. أمّن الوصول

لا تترك واجهتك مكشوفة بلا حماية: ضع Gitea خلف بروكسي عكسي (Nginx أو Caddy) مع شهادة TLS مجانية من Let's Encrypt لتشفير الاتصال، فعّل جدار حماية يفتح منافذ الويب وSSH فقط، وأوقف التسجيل الذاتي إن أردت مستودعاً داخلياً مغلقاً على فريقك.

النسخ الاحتياطي للمستودعات

كل بياناتك في مجلد data المربوط بالحاوية، وهذا ما تنسخه. Gitea يوفّر أمر نسخ مدمجاً gitea dump يجمع المستودعات وقاعدة البيانات والإعدادات في ملف واحد مضغوط. الاستراتيجية العملية: مهمة مجدولة (cron) تشغّل الأمر يومياً، ثم تنقل الناتج إلى تخزين معزول. تذكّر القاعدة الذهبية: النسخة على نفس الخادم ليست حماية كافية، فالنسخة الحقيقية معزولة خارجه. فعّل نسخاً احتياطياً يومياً بمدة احتفاظ 7 أيام بـ800 ريال سنوياً كإضافة للخادم، فيصبح لديك خط دفاع مؤتمت ضد فقد كودك حتى لو تعطّل الخادم كلياً.

CI بسيط بـGitea Actions

ميزة قوية أن Gitea يدعم Actions بصيغة متوافقة إلى حد كبير مع سير عمل GitHub، فتكتب ملف سير عمل YAML داخل مستودعك ويعمل تلقائياً عند كل دفعة. تحتاج تشغيل runner (منفّذ المهام) وربطه بمثيل Gitea. أمثلة عملية لفريق صغير:

  • فحص جودة عند كل دفعة: تشغيل الاختبارات وفاحص الأسلوب (linter) تلقائياً، فلا يُدمج كود مكسور.
  • بناء ونشر: بناء الأصول (assets) ثم نشرها على خادم الإنتاج عند الدمج في الفرع الرئيسي.
  • بناء صور Docker: توليد صورة الحاوية ورفعها لسجل داخلي.

لأن runner يعمل على خادمك، تبقى دورة CI كلها داخل بنيتك، بلا تسريب كود لخدمات خارجية، وبلا حدود دقائق شهرية مدفوعة. لو أرهقت مهام CI الثقيلة باقة أساس، ترقّي بإضافة موارد بسيطة: +1 vCPU بـ500 ريال أو +2GB رام بـ600 ريال سنوياً، بلا انتقال لخادم جديد.

النقل من GitHub أو GitLab

لست مضطراً للبدء من الصفر. Gitea يوفّر أداة استيراد مدمجة تنقل مستودعاً كاملاً من منصة أخرى بمساره التاريخي: كل الفروع (branches) والوسوم (tags) والإصدارات، ومعها المشاكل (issues) وطلبات الدمج إن أردت. تعطيها رابط المستودع الأصلي ورمز وصول، فتسحب كل شيء دفعة واحدة. للفرق التي تنقل عشرات المستودعات، يمكن أتمتة النقل عبر واجهة Gitea البرمجية (API) في سكربت واحد بدل النقل اليدوي مستودعاً مستودعاً.

المرآة (mirroring) كخطوة انتقال آمنة

لو لم تكن جاهزاً للقطع الكامل عن منصتك الحالية، فعّل المرآة: يبقى المستودع الأصلي على المنصة القديمة، وينسخه Gitea تلقائياً كل فترة تحددها. هذا يعطيك نسخة سيادية داخل المملكة تُحدَّث وحدها، بينما يستمر فريقك على المنصة القديمة حتى تكتمل ثقتك بالانتقال. يمكن عكس الاتجاه أيضاً: تجعل Gitea الأصل، ويدفع مرآةً لمنصة خارجية كنسخة إضافية. المرونة كاملة لأنك تملك الطرفين.

إدارة الفريق والصلاحيات

ميزة عملية في Gitea أنه ينظّم فريقك بمنطق واضح عبر المنظمات (organizations) والفرق (teams). تنشئ منظمة لشركتك، وتحتها فرقاً حسب المسؤولية: فريق بصلاحية قراءة فقط للمراجعين، وفريق بصلاحية كتابة للمطورين، وفريق بصلاحية إدارة للقادة. كل فريق يُمنح وصولاً لمستودعات محددة، فتضبط من يرى ماذا ومن يدفع أين بدقة. أهم إعداد أمني هو حماية الفروع (branch protection) على الفرع الرئيسي: تمنع الدفع المباشر إليه، وتشترط مراجعة معتمدة (approved review) ونجاح فحوص CI قبل أي دمج. هذا يحوّل مستودعك من مجرد تخزين كود إلى عملية جودة منضبطة، فلا يصل الفرع الرئيسي كود لم يُراجَع أو يكسر الاختبارات. أضف إليها المصادقة الثنائية (2FA) لكل الحسابات، ومفاتيح SSH للدفع بدل كلمات المرور، فتحصل على بيئة كود آمنة تملكها بالكامل داخل المملكة، بمعايير لا تقل عن المنصات السحابية الكبرى.

متطلبات الموارد الفعلية

Gitea خفيف بشكل استثنائي مقارنة ببدائل ثقيلة، فهو ثنائي Go واحد بلا اعتماديات متضخمة:

الحملالموارد الكافيةالباقة
فريق صغير، Gitea فقط1vCPU، 2GB رامأساس (3,450 ريال/سنة)
فريق متوسط + CI خفيف2vCPU، 4GB رامنمو (6,900 ريال/سنة)
فريق أكبر + CI ثقيل4vCPU، 8GB رامأعمال (11,500 ريال/سنة)

الخلاصة: Gitea نفسه يعمل مرتاحاً على باقة أساس لفريق يصل لعشرات المطورين ما دام CI خفيفاً. العبء الأكبر يأتي من مهام CI الثقيلة (بناء متكرر، اختبارات طويلة)، وحينها ترقّي بإضافة موارد فقط. التفعيل تلقائي خلال ثوانٍ بعد الدفع على سيرفرات الرياض بزمن استجابة نحو 8ms، وهذا يعني دفعاً وسحباً سريعاً لفريقك داخل المملكة.

خاتمة عملية

لبناء سيرفر Git خاص بشركتك:

  • احسم الحاجة: كود حساس أو سيادة بيانات أو توفير رسوم المقاعد = الاستضافة الذاتية تستحق.
  • ثبّت Gitea بـDocker Compose على باقة أساس، وأمّنه خلف بروكسي عكسي بشهادة TLS.
  • فعّل gitea dump يومياً عبر cron، مع نسخ احتياطي معزول يومي بـ800 ريال.
  • شغّل CI بـGitea Actions داخل بنيتك، ورقّ الموارد فقط عند اشتداد الحمل.

لتشغيل Gitea بموارد مخصصة وصلاحية root كاملة داخل المملكة، راجع الأسعار والباقات وابدأ بباقة أساس، فهي تكفي معظم الفرق وتترقّى بإضافة موارد وقت الحاجة. القرار في جوهره بسيط: لو كان كودك يستحق الحماية، فهو يستحق أن يعيش على بنية تملكها داخل المملكة، لا على خوادم لا تتحكم فيها ولا تعرف أين تُخزَّن بياناتك بالضبط. Gitea يعطيك ذلك في ساعة واحدة وبتكلفة سنوية ثابتة، فتجمع بين سيادة البيانات وحرية التكامل واقتصاد لا يتضاعف مع كل مطور جديد تضمّه لفريقك.

مشاركة