[{"data":1,"prerenderedAt":183},["ShallowReactive",2],{"seo-verification":3,"blog-comparatif-forge-git-self-hosted-2026-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"title":9,"excerpt":10,"readTime":11,"views":12,"isPinned":13,"publishedAt":14,"category":15,"categories":21,"featuredImage":23,"bgImage":24,"posterImage":25,"relatedSolution":23,"intro":26,"sections":27,"ctaTitle":133,"ctaBody":134,"ctaButton":135,"ctaUrl":136,"relatedPosts":137},241,"comparatif-forge-git-self-hosted-2026","‏Gitea أم Forgejo أم GitLab CE: أيّ منصة Git في 2026؟","‏Gitea أم Forgejo أم GitLab CE لاستضافة منصة Git الخاصة بك في 2026؟ الموارد، CI\u002FCD، الحوكمة والهجرة بعد CVE-2026-59774.",10,0,false,"2026-08-09T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},4,"التطوير","developpement","bg-warning\u002F10 text-warning","dev",[22],{"id":16,"name":17,"slug":18,"color":19,"icon":20},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fcomparatif-forge-git-self-hosted-2026-poster.svg","‏في عام 2026، لم تعد استضافة منصة ‏Git‏ ذاتياً ممارسةً محدودة. غير أنّ ‏CVE-2026-59774‏ كشفت عن ثغرة خطيرة في نسخ ‏Gitea‏ غير المُرقَّعة تتيح قراءة ملفات تعسفية وتنفيذ تعليمات برمجية عن بُعد، مما دفع كثيراً من الفِرق إلى حسم سؤال كانت تؤجّله: ‏Gitea‏ أم ‏Forgejo‏ أم ‏GitLab CE‏؟ تقارن هذه المقالة الأدوات الثلاثة وفق المعايير التي تهمّ في بيئة الإنتاج — الموارد، ‏CI\u002FCD‏، الحوكمة، والهجرة.",[28,32,42,45,85,88,116,119,122,130],{"type":29,"title":30,"body":31},"h2","‏لماذا هذا السؤال ملحّ في 2026؟","‏نُشرت ‏CVE-2026-59774‏ في الرابع من أغسطس 2026. تطال نسخ ‏Gitea‏ من ‏1.22.1‏ إلى ‏1.27.0‏ — درجة ‏CVSS‏ تبلغ ‏9.9‏ (حرجة). يتمثّل الناقل في توجيه ‏`#+INCLUDE`‏ ضمن محرّك عرض ‏Org-mode‏، إذ يتيح لمهاجم غير مصادَق قراءة ملفات اعتباطية يصل إليها حساب خدمة ‏Gitea‏، بما فيها ‏`app.ini`‏ والرموز الداخلية. ويُفضي كشف ‏`INTERNAL_TOKEN`‏ إلى حقن ‏Git hook‏ وتنفيذ تعليمات برمجية عن بُعد. الإصلاح متوفر في النسخة ‏1.27.1‏. إن كانت نسختك أقدم ولا تُعزَل عن الشبكة العامة، فالترقيع هو الخطوة الأولى. الثانية هي تحديد ما إذا كنت ستبقى على ‏Gitea‏ أم تُسرِّع هجرةً كنت تؤجّلها.",{"type":33,"title":34,"items":35},"ul","‏ما الذي تغيّر منذ 2024 وما أثره على هذا الاختيار",[36,37,38,39,40,41],"‏**‏Forgejo‏ فرعٌ صارم منذ مطلع 2024** — انفصلت قاعدة الكود عن ‏Gitea‏؛ لا يزال المشروعان يتشاركان معظم أساسياتهما، لكنّ مسارَي التطوير باتا يتباعدان بوضوح","‏**حوكمة مجتمعية في ‏Forgejo** — تُدار بواسطة جمعية غير ربحية دون اتفاقيات مساهمة مع شركة أم؛ إصلاحات الأمان تصدر باستقلالية","‏**‏Forgejo Actions‏ في الإنتاج** — نفس صياغة ‏Gitea Actions‏ (متوافقة مع ‏GitHub Actions‏)، تدعم ‏Woodpecker CI‏ ومشغّلات ‏Docker‏، منشورة في ‏Codeberg‏ منذ 2024","‏**‏Forgejo v16.0‏ في يوليو 2026** — تعليقات مراجعة متعددة الأسطر، مصادقة ‏JWT‏ خارجية للـ ‏API‏، تصليب ‏SSRF‏، تقليص استهلاك النطاق الترددي للصور الرمزية","‏**‏GitLab CE‏ شاملة لكن ثقيلة** — تتضمّن النسخة المجتمعية ‏CI\u002FCD‏ ومسجّل الحاويات وفحص الأمان والصفحات؛ الثمن: ‏4‏ جيجابايت كحد أدنى للذاكرة، ‏8‏ جيجابايت موصى به","‏**خمسة مقارنات مستقلة نُشرت في 2026** تتقارب نحو الترتيب ذاته: ‏Forgejo‏ للتثبيت الجديد، ‏Gitea‏ إن كنت تستخدمها بنسخة مُرقَّعة، ‏GitLab CE‏ إن احتجت إلى منصة ‏DevOps‏ متكاملة في تثبيت واحد",{"type":29,"title":43,"body":44},"‏المتطلبات الأساسية حسب خيارك","‏مكتوبان بلغة ‏Go‏ ويُشحنان كملف ثنائي منفرد. تعمل نسخة متواضعة (حتى عشرين مستودعاً ومشغّلات ‏CI‏ قليلة) بسهولة على ‏1 vCPU‏ و‏1 GB‏ من الذاكرة؛ أما نسخة الفريق (مشغّلات ‏CI‏ نشطة، ‏LFS‏، سجلّ الحزم) فتفضّل ‏2 vCPU‏ و‏2‏ إلى ‏4 GB‏. ‏GitLab CE‏ في فئة مختلفة: ‏4 GB‏ حدٌّ أدنى مطلق للبدء، ‏8 GB‏ للاستخدام المريح، مع تشغيل ‏Postgres‏ و‏Redis‏ و‏Gitaly‏ و‏Sidekiq‏ في الوقت ذاته. خصّص على الأقل ‏4 vCPU‏ و‏50 GB‏ من التخزين ‏SSD‏. للأدوات الثلاثة تحتاج نطاقاً مُوجَّهاً إلى ‏IP‏ الخادم، مع فتح المنافذ ‏22‏ (‏SSH Git‏) و‏80‏ و‏443‏، وخادم وكيل عكسي (‏Nginx‏ أو ‏Caddy‏) للـ ‏HTTPS‏.",{"type":46,"title":47,"headers":48,"rows":52},"comparison","‏Forgejo مقابل Gitea مقابل GitLab CE — جدول المقارنة 2026",[49,50,51],"‏المعيار","‏Forgejo \u002F Gitea","‏GitLab CE",[53,57,61,65,69,73,77,81],[54,55,56],"‏الحد الأدنى للذاكرة","‏512 MB – 1 GB","‏4 GB (8 GB موصى به)",[58,59,60],"‏صيغة التوزيع","‏ملف ثنائي منفرد أو صورة Docker","‏Omnibus (متعدد العمليات) أو Helm chart",[62,63,64],"‏CI\u002FCD الأصلي","‏Forgejo Actions \u002F Gitea Actions (صياغة GitHub Actions)","‏GitLab CI\u002FCD، مشغّلات مشتركة أو مخصصة",[66,67,68],"‏الحوكمة","‏Forgejo: جمعية غير ربحية (Codeberg) · Gitea: Gitea Ltd.","‏GitLab Inc. (open-core، CE مجاني)",[70,71,72],"‏سجلّ الحاويات","‏نعم (حزم + container registry)","‏نعم، أكثر اكتمالاً",[74,75,76],"‏الاتحاد \u002F ActivityPub","‏Forgejo: beta اختياري · Gitea: غير مُخطَّط","‏لا",[78,79,80],"‏الهجرة من Gitea","‏Forgejo: نفس مخطط قاعدة البيانات، أمر واحد · GitLab: أداة استيراد عبر API","‏استيراد جزئي (مستودعات، issues، PRs)",[82,83,84],"‏الأنسب لـ","‏فِرق من 1 إلى 50 مطوراً، VPS متواضع، CI خفيفة","‏مؤسسة تريد كل شيء في تثبيت واحد، ميزانية بنية تحتية متاحة",{"type":29,"title":86,"body":87},"‏الهجرة من Gitea إلى Forgejo: ما يعنيه ذلك فعلاً","‏كثيراً ما توصف هجرة ‏Gitea → Forgejo‏ بأنها «أمر واحد» — وهذا صحيح في الحالة البسيطة. كلا المشروعين تشاركا مخطط قاعدة البيانات ذاته منذ البداية، ويحافظ ‏Forgejo‏ على التوافق العكسي. تتلخّص العملية في إيقاف حاوية ‏Gitea‏، وتوجيه حجم البيانات ذاته نحو حاوية ‏Forgejo‏، ثم التشغيل. يكتشف ‏Forgejo‏ المخطط الموجود ويطبّق هجراته الخاصة. بعض ما يجب التحقق منه أولاً: نسِّخ احتياطياً ملف ‏`app.ini`‏ وقاعدة البيانات، لاحظ نسخة ‏Gitea‏ الحالية (الهجرة مُختبَرة من النسخ الحديثة — قد تتطلّب نسخة قديمة جداً تحديثاً وسيطاً)، وتأكّد من أن مشغّلات ‏CI‏ تستخدم الصياغة ذاتها (‏Forgejo Actions‏ و‏Gitea Actions‏ متوافقتان). الهجرة في الاتجاه المعاكس — نحو ‏GitLab CE‏ — أطول: تتيح ‏GitLab‏ أداة استيراد عبر ‏API‏ (المستودعات، issues، merge requests، labels)، لكن خطوط أنابيب ‏CI‏ تحتاج إعادة كتابة بصياغة ‏GitLab CI‏.",{"type":89,"title":90,"steps":91},"steps","‏نشر Forgejo على VPS باستخدام Docker وNginx",[92,95,98,101,104,107,110,113],{"title":93,"body":94},"‏تجهيز الـ VPS","‏حدِّث النظام وثبِّت ‏Docker‏ و‏Docker Compose‏: `apt update && apt install -y docker.io docker-compose-plugin`. افتح المنافذ اللازمة: `ufw allow 22\u002Ftcp && ufw allow 80\u002Ftcp && ufw allow 443\u002Ftcp && ufw allow 2222\u002Ftcp` (‏2222‏ لـ ‏SSH Git‏ إن لم ترغب في إظهار المنفذ ‏22‏ للنظام).",{"title":96,"body":97},"‏إنشاء الأدلة وملف Compose","‏أنشئ دليلاً مخصصاً: `mkdir -p \u002Fopt\u002Fforgejo && cd \u002Fopt\u002Fforgejo`. ثم أنشئ ملف ‏`compose.yml`‏ يتضمن خدمة ‏`forgejo`‏ تشير إلى الصورة ‏`codeberg.org\u002Fforgejo\u002Fforgejo:latest`‏، وحجماً دائماً لـ ‏`\u002Fdata`‏، والمنافذ ‏`3000:3000`‏ (HTTP‏) و‏`2222:22`‏ (SSH‏)، ومتغيرات بيئة أساسية (`FORGEJO__server__DOMAIN=git.your-domain.com`‏، `FORGEJO__server__SSH_PORT=2222`‏).",{"title":99,"body":100},"‏تشغيل Forgejo","‏أطلق الخدمة: `docker compose up -d`. تحقق من أن الحاوية تعمل بـ `docker compose ps`‏ وراقب السجلات بـ `docker compose logs -f forgejo`‏. واجهة التثبيت متاحة على ‏`http:\u002F\u002F\u003Cip-vps>:3000`‏.",{"title":102,"body":103},"‏إعداد Nginx كوكيل عكسي HTTPS","‏ثبِّت ‏Nginx‏ و‏Certbot‏: `apt install -y nginx python3-certbot-nginx`. أنشئ مضيفاً افتراضياً لـ ‏`git.your-domain.com`‏ يوجّه الطلبات إلى ‏`http:\u002F\u002Flocalhost:3000`‏ مع رؤوس الوكيل القياسية (`proxy_set_header Host $host`‏، `proxy_set_header X-Real-IP $remote_addr`‏، `proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for`‏، `proxy_set_header X-Forwarded-Proto $scheme`‏).",{"title":105,"body":106},"‏الحصول على شهادة TLS","‏نفِّذ `certbot --nginx -d git.your-domain.com`‏. يُعدّ ‏Certbot‏ إعادة التوجيه من ‏HTTP‏ إلى ‏HTTPS‏ ويُجدوِل التجديد التلقائي. تحقق بـ `curl -I https:\u002F\u002Fgit.your-domain.com`‏ من أن رمز الاستجابة ‏`200`‏.",{"title":108,"body":109},"‏إتمام التثبيت عبر واجهة الويب","‏افتح ‏`https:\u002F\u002Fgit.your-domain.com`‏ في المتصفح. يطلب معالج التثبيت نوع قاعدة البيانات (‏SQLite‏ للبداية، ‏PostgreSQL‏ للإنتاج)، وعنوان النسخة، وإعدادات ‏SSH‏. أنشئ حساب المسؤول، ثم عطِّل التسجيل العام إن كانت النسخة خاصة (`FORGEJO__service__DISABLE_REGISTRATION=true`‏ في ‏`compose.yml`‏).",{"title":111,"body":112},"‏تفعيل مشغّل CI (اختياري)","‏قدّمت ‏Forgejo v15.0‏ (أبريل 2026) سير عمل تسجيل مبسّطاً للمشغّلات عبر واجهة الويب. انتقل إلى **إدارة الموقع ← Actions ← Runners**، انقر **إنشاء مشغّل** وانسخ أمر التسجيل. أطلق المشغّل في حاوية ثانية: `docker run -d --name forgejo-runner -v \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock codeberg.org\u002Fforgejo\u002Frunner:latest daemon --config config.yml`‏.",{"title":114,"body":115},"‏التحقق من الأمان الأساسي","‏تأكّد من أن ‏`FORGEJO__server__LOCAL_ROOT_URL`‏ لا يشير إلى ‏IP‏ داخلي مكشوف (ناقل ‏SSRF‏). منذ ‏Forgejo v16.0‏، تصليب ‏SSRF‏ مفعَّل افتراضياً لمزامنة ‏Git‏ — راجع ‏`FORGEJO__migrations__ALLOW_LOCALNETWORKS`‏ في إعداداتك إن احتجت إلى مزامنة مستودعات داخلية.",{"type":117,"body":118},"tip","‏لنسخة ‏Gitea‏ متأثرة بـ ‏CVE-2026-59774‏ (النسخ ‏1.22.1‏ إلى ‏1.27.0‏): الهجرة إلى ‏Forgejo‏ والترقية إلى ‏Gitea 1.27.1‏ كلتاهما تُصلحان الثغرة. إن قرّرت البقاء على ‏Gitea‏، طبِّق الرقعة فوراً. وإن كنت تفكّر في ‏Forgejo‏ منذ فترة، تحلّ الهجرة المشكلتين معاً: رقِّع بالهجرة بدلاً من الترقية ثم الهجرة لاحقاً. في كل الأحوال، ألغِ صلاحية ‏`INTERNAL_TOKEN`‏ و‏`SECRET_KEY`‏ في ‏`app.ini`‏ عند أي اشتباه بتسريب، ودوِّر رموز الوصول الشخصية لمستخدميك.",{"type":29,"title":120,"body":121},"‏استكشاف الأخطاء: أبرز أخطاء التثبيت","‏تغطّي الأخطاء أدناه أكثر الحالات شيوعاً خلال التثبيت الأول أو الهجرة.",{"type":33,"title":123,"items":124},"‏الأخطاء الشائعة وحلولها",[125,126,127,128,129],"‏**`level=fatal msg=\"Failed to initialize ORM engine\" error=\"Error 1071: Specified key was too long\"` (‏MySQL\u002FMariaDB‏)** — ترميز قاعدة البيانات ليس ‏`utf8mb4`‏: أنشئ القاعدة بـ `CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci`‏ وأعد التشغيل","‏**`Failed to initialize SSH: ssh: no key found`** — يبحث ‏Forgejo‏ عن مفاتيح ‏SSH‏ في ‏`\u002Fdata\u002Fgitea\u002F.ssh`‏؛ إن لم يكن الحجم مُركَّباً أو كانت الصلاحيات خاطئة، نفِّذ `docker compose exec forgejo forgejo admin regenerate keys`‏ لإعادة توليدها","‏**`x509: certificate signed by unknown authority`‏ في الـ webhooks الصادرة** — نسختك تستدعي خدمة داخلية بشهادة موقَّعة ذاتياً؛ أضف `FORGEJO__webhook__SKIP_TLS_VERIFY=true`‏ في بيئة التطوير فقط، أو ثبِّت شهادة ‏CA‏ في الحاوية عبر ‏`SSL_CERT_FILE`‏","‏**`Error response from daemon: conflict: unable to delete image`‏ عند التحديث** — أوقف الحاوية أولاً (`docker compose down`‏)، احذف الصورة (`docker image rm codeberg.org\u002Fforgejo\u002Fforgejo`‏)، ثم أعد السحب (`docker compose pull`‏) قبل إعادة التشغيل","‏**مشغّلات CI‏ عالقة على ‏`waiting for available runner`‏ بعد التسجيل** — تحقق من قدرة المشغّل على الوصول إلى نسخة ‏Forgejo‏: يجب أن يُعيد `curl -s https:\u002F\u002Fgit.your-domain.com\u002Fapi\u002Fv1\u002Fversion`‏ من داخل حاوية المشغّل كائن ‏JSON‏ يتضمن رقم النسخة؛ إن لم يتحل اسم النطاق من داخل الحاوية، أضف ‏`extra_hosts`‏ في ‏Compose‏ أو استخدم ‏IP‏ الـ ‏VPS‏ مباشرة",{"type":29,"title":131,"body":132},"‏أيّ أداة تختار حسب وضعك","‏للتثبيت الجديد في 2026: ‏Forgejo‏ هو الاختيار الافتراضي في جميع المقارنات المستقلة تقريباً المنشورة هذا العام. تجمع الحوكمة المجتمعية، وإصلاحات الأمان المستقلة عن ‏Gitea Ltd.‏، والتوافق مع الأدوات الموجودة (مشغّلات، webhooks‏، رموز)، والبصمة الذاكرية المماثلة لـ ‏Gitea‏ — جميعها الحجج دون مقايضات تُذكر لمشروع جديد. إن كنت تشغّل نسخة ‏Gitea‏ محدَّثة (‏1.27.1+‏) وتفي باحتياجاتك، فالهجرة ليست ملحّة — لكن المرة القادمة التي تُفكّر فيها بترقية رئيسية، قيِّم ‏Forgejo‏ آنذاك. ‏GitLab CE‏ هو الخيار الصحيح حين تحتاج فريقُك إلى سلسلة ‏DevOps‏ كاملة في تثبيت واحد — فحص الأمان، الصفحات، بيئات النشر، مقاييس ‏DORA‏ — وتتوفر البنية التحتية اللازمة. على ‏VPS‏ متواضع، ليست الأداة المناسبة. للتعمق أكثر: دليلنا المفصّل لتثبيت ‏Forgejo‏، وإعداد خط أنابيب ‏CI‏ مع ‏Woodpecker‏، ومقالة تصليب خادم ‏Linux‏ الأولي تُكمل هذه المقارنة.","منصتك تعمل على بنية تحتية تتحكم فيها أنت","‏بمجرد اختيار منصتك، تعمل على ‏VPS‏ من ‏ServOrbit‏: وصول ‏root‏، عنوان ‏IPv4‏ مخصص، اختيار نظام التشغيل، بدون قيود تعسفية — بنية تحتية لا تعترض مسيرتك.","‏استعرض VPS Cloud","\u002Fsolutions\u002Fdeveloppeurs",[138,154,168],{"id":139,"slug":140,"title":141,"excerpt":142,"readTime":16,"views":143,"isPinned":13,"publishedAt":144,"category":145,"categories":151,"featuredImage":23,"bgImage":24,"posterImage":153,"relatedSolution":23},75,"heberger-forgejo","استضافة Forgejo على خادم VPS الخاص بك","ثبّت Forgejo، التفريعة المجتمعية لـGitea، على خادم VPS الخاص بك مع Docker وSSL. منصة Git سيادية وحرّة بنسبة 100%.",575,"2026-04-06T00:00:00+00:00",{"id":146,"name":147,"slug":148,"color":149,"icon":150},7,"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[152],{"id":146,"name":147,"slug":148,"color":149,"icon":150},"\u002Fblog\u002Fcovers\u002Fheberger-forgejo-poster.svg",{"id":155,"slug":156,"title":157,"excerpt":158,"readTime":16,"views":12,"isPinned":13,"publishedAt":159,"category":160,"categories":165,"featuredImage":23,"bgImage":24,"posterImage":167,"relatedSolution":23},212,"woodpecker-ci-pipeline-vps-forgejo","Woodpecker CI وForgejo: خط أنابيب CI\u002FCD على خادم VPS","انشر Woodpecker CI مع Forgejo على خادم VPS لخط أنابيب CI\u002FCD مفتوح المصدر، مستضاف ذاتيًا وخفيف وسيادي. دليل Docker خطوة بخطوة.","2026-08-02T00:00:00+00:00",{"id":161,"name":162,"slug":163,"color":164,"icon":163},2,"الأتمتة","automatisation","bg-brand-action\u002F10 text-brand-action",[166],{"id":161,"name":162,"slug":163,"color":164,"icon":163},"\u002Fblog\u002Fcovers\u002Fwoodpecker-ci-pipeline-vps-forgejo-poster.svg",{"id":169,"slug":170,"title":171,"excerpt":172,"readTime":11,"views":12,"isPinned":13,"publishedAt":173,"category":174,"categories":180,"featuredImage":23,"bgImage":24,"posterImage":182,"relatedSolution":23},228,"durcissement-serveur-linux-initial","تصليب الخادم ‎Linux‎ الأولي","أنشئ مستخدم ‎sudo‎، وكوّن ‎SSH‎ بالمفاتيح، وفعّل ‎UFW‎ و‎fail2ban‎ على ‎Ubuntu 22.04‎ أو ‎Debian 12‎ في أقل من ساعة.","2026-08-06T00:00:00+00:00",{"id":175,"name":176,"slug":177,"color":178,"icon":179},8,"الأمان والمراقبة","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[181],{"id":175,"name":176,"slug":177,"color":178,"icon":179},"\u002Fblog\u002Fcovers\u002Fdurcissement-serveur-linux-initial-poster.svg",1786296197648]