لماذا تختار Forgejo لمنصتك ذاتية الاستضافة
وُلدت Forgejo عام 2022 إثر خلاف حول حوكمة Gitea التي انتقلت إلى سيطرة شركة. يُصان المشروع الآن من قِبل جمعية غير ربحية ويتقدّم نحو منصة لامركزية قادرة على الاتحاد عبر ActivityPub — والهدف أن يتمكّن مستودع على منصة ما من التفاعل مع مسألة (issue) فُتحت من منصة أخرى. ولمن يقدّر ديمومة أدواته واستقلاليتها، تقدّم Forgejo الخصائص التقنية نفسها التي تقدّمها Gitea (الخفّة والسرعة والاستهلاك المنخفض) مع ضمان ترخيص وحوكمة مجتمعيَّين بالكامل. وهي المنصة المرجعية لـCodeberg، ما يثبت قدرتها على تحمّل الحِمل في بيئة الإنتاج.
فوائد ملموسة لـForgejo ذاتية الاستضافة
- حوكمة جمعوية غير ربحية: لا خطر من تحوّل تجاري للمشروع.
- Forgejo Actions، متوافق مع صيغة مسارات عمل GitHub Actions، دون خدمة طرف ثالث.
- ترحيل بلا عناء من Gitea: صيغة قاعدة البيانات ووحدة تخزين البيانات نفسها.
- اتحاد ActivityPub قيد النشر لربط المنصات ببعضها.
- بصمة خفيفة مطابقة لـGitea: مثالية على خادم VPS متواضع.
- برمجية حرّة بنسبة 100%، دون نسخة مؤسسية مدفوعة ولا ميزة مقيَّدة.
المتطلبات العتادية والبرمجية
مثل Gitea، Forgejo مقتصدة للغاية. يتحمّل خادم VPS بمعالجَين افتراضيَّين (2 vCPU) و2 غيغابايت من الذاكرة (RAM) فريقًا من 10 إلى 20 مطوّرًا بلا عناء؛ انتقل إلى 4 غيغابايت إذا شغّلت Forgejo Actions مع runners تصرّف الشيفرة محليًا. احجز من 20 إلى 40 غيغابايت من SSD للمستودعات والتاريخ. تحتاج إلى Docker وDocker Compose، ونطاق فرعي git.yourdomain.com مع سجل A يشير إلى عنوان IP الخاص بخادم VPS، ومنفذ مختلف عن المنفذ 22 الخاص بالنظام لـSSH المستودعات (مثلًا 2222).
نشر Forgejo مع Docker وSSL
تهيئة البيئة
عبر SSH على خادم VPS، ثبّت Docker وإضافة Compose، ثم أنشئ /opt/forgejo. خصّص مجلدًا فرعيًا data يحتوي على المستودعات والإعداد والصور الرمزية، مركَّبًا كوحدة تخزين لمقاومة التحديثات.
كتابة ملف docker-compose.yml
استخدم الصورة الرسمية codeberg.org/forgejo/forgejo:latest. أضِف خدمة postgres:16 لقاعدة البيانات. ركّب ./data:/data، واضبط USER_UID/USER_GID على 1000 وانشُر SSH الخاص بـForgejo على المضيف عبر "2222:22"، مع إبقاء المنفذ 3000 داخليًا.
بدء الحزمة (stack)
نفّذ docker compose up -d، ثم راقِب docker compose logs -f forgejo حتى ترى خادم HTTP يستمع على المنفذ 3000 وقاعدة البيانات تستجيب.
إعداد reverse proxy وSSL
مع Caddy: git.yourdomain.com { reverse_proxy localhost:3000 }، تُدار شهادة Let's Encrypt تلقائيًا. مع Traefik أو Nginx، مرّر الطلبات إلى 127.0.0.1:3000 وفعّل HTTP/2 وكذلك إعادة التوجيه من HTTP إلى HTTPS.
إعداد المنصة
ادخل إلى https://git.yourdomain.com، وأدخِل مضيف PostgreSQL (db:5432)، وعنوان URL الأساسي بصيغة HTTPS، ومنفذ SSH الخارجي 2222. أنشئ حساب المدير وعطّل التسجيل الذاتي لمنصة خاصة.
ربط runner خاص بـForgejo Actions
احصل على رمز التسجيل من لوحة الإدارة، ثم شغّل حاوية forgejo-runner تشير إلى منصتك. تحقّق عبر مسار عمل بسيط .forgejo/workflows/ci.yml ينفّذ echo ok.
إذا كنت تُرحّل من منصة Gitea قائمة، تقرأ Forgejo وحدة تخزين البيانات نفسها وقاعدة البيانات نفسها مباشرةً: أوقِف Gitea، وخذ نسخة احتياطية، واستبدل الصورة بصورة Forgejo في ملف docker-compose.yml، ثم أعِد التشغيل. يجب أن يكون إصدار Forgejo متوافقًا مع إصدار Gitea المستخدَم — تحقّق من جدول تطابق الإصدارات قبل التبديل لتفادي ترحيل مخطط قاعدة البيانات في اتجاه واحد. خذ دائمًا لقطة (snapshot) لخادم VPS قبل العملية.
Forgejo مقابل Gitea
| المعيار | Forgejo | Gitea |
|---|---|---|
| الحوكمة | جمعية غير ربحية (Codeberg e.V.) | شركة تجارية |
| الترخيص / النموذج | حرّ بنسبة 100%، دون نسخة مؤسسية | مفتوح المصدر مع نسخة Gitea Cloud تجارية |
| CI/CD مدمج | Forgejo Actions (متوافق مع GitHub Actions) | Gitea Actions (متوافق مع GitHub Actions) |
| الاتحاد | ActivityPub قيد التطوير النشط | غير ذي أولوية |
| استهلاك الذاكرة (RAM) | منخفض جدًا (~200-300 ميغابايت) | منخفض جدًا (~200-300 ميغابايت) |
| الترحيل المتبادل | يقرأ وحدة تخزين Gitea وقاعدة بياناتها | أصل التفريعة |
| صورة Docker | codeberg.org/forgejo/forgejo | gitea/gitea |
| حالة الاستخدام النموذجية | السيادة والديمومة المجتمعية | منصة عامة مع خدمات مُدارة ممكنة |