الاستضافة الذاتية10 دقيقة قراءة

استضافة ‎Forgejo‎ على خادم VPS: دليل شامل 2025

‎Forgejo‎ هي منصة استضافة ‎Git‎ خفيفة ومجتمعية نشأت كبديل لـ‎Gitea‎. متوافقة مع ‎GitHub Actions‎، وسهلة الترحيل، وتحترم خصوصية بياناتك. يمكن تشغيلها على خادم ‎VPS‎ في أقل من ساعة. يغطي هذا الدليل كل شيء: تحديد موارد الخادم، والنشر عبر ‎Docker‎، وإعداد ‎SSL‎، وتشغيل مهام ‎CI/CD‎، وتشديد الأمان بعد التثبيت، والتحديث دون انقطاع.

لماذا تختار ‎Forgejo‎ لمخزن ‎Git‎ المستضاف ذاتياً

وُلدت ‎Forgejo‎ عام 2022 كنسخة مجتمعية من ‎Gitea‎، دافعها مخاوف حول حوكمة المشروع الأصلي. تطويرها مجتمعي بالكامل، مرخصة بـ‎MIT‎، ولا تعتمد على أي شركة تجارية. للفرق التي تريد السيطرة الكاملة على شيفراتها ومسارات ‎CI/CD‎ والحزم دون الاعتماد على ‎GitHub‎ أو ‎GitLab‎ أو ‎Bitbucket‎، تمثل ‎Forgejo‎ الخيار الأخف والأكثر اكتفاءً. واجهتها مألوفة لكل مطور استخدم ‎GitHub‎، والترحيل من ‎Gitea‎ سلس، والتوافق مع ‎GitHub Actions‎ يُخفض عتبة الانتقال.

فوائد ملموسة لـ‎Forgejo‎ المستضافة ذاتياً

  • سيادة كاملة: شيفرتك لا تغادر بنيتك التحتية أبداً
  • متوافقة مع ‎GitHub Actions‎ عبر ‎Forgejo Actions‎ — أعد استخدام سيناريوهاتك الحالية
  • بصمة ذاكرة منخفضة جداً (~256 ميغابايت لفريق صغير)
  • سجل حزم مدمج: ‎npm‎، ‎PyPI‎، ‎Maven‎، ‎Helm‎، حاويات ‎OCI‎
  • لا حدود على عدد المستودعات الخاصة أو المتعاونين
  • اتحاد ‎ActivityPub‎ قيد التطوير — تشغيل بيني مستقبلي مع منصات أخرى
  • مفتوحة المصدر، قابلة للتدقيق، بلا مفاجآت في التسعير
  • تحديثات تحت سيطرتك: أنت من يقرر وقت الترقية

المتطلبات المادية والبرمجية بأرقام حقيقية

حدد موارد خادم ‎VPS‎ وفق حجم فريقك الفعلي قبل نشر ‎Forgejo‎. لـ1–5 مطورين مع عشرات المستودعات، يكفي 1 نواة و1 غيغابايت ذاكرة؛ ‎Forgejo‎ في وضع الخمول تستهلك ~80 ميغابايت. لـ5–20 مطوراً مع ‎CI/CD‎ نشطة، خطط بـ2 نواة و2 غيغابايت. لما يزيد على 20 مطوراً أو لمستودعات ضخمة، 4 نوى و4 غيغابايت تضمن أداءً سلساً. للتخزين، احسب حجم مستودعاتك مضافاً إليه 20% هامش للحزم والنسخ الاحتياطية.

على صعيد الشبكة، يجب فتح ثلاثة منافذ في جدار الحماية: المنفذ 80 لـ‎HTTP‎ (التحقق من ‎Let's Encrypt‎)، المنفذ 443 لـ‎HTTPS‎ (حركة الويب)، والمنفذ 2222 لـ‎SSH Git‎ (تفادياً للتعارض مع ‎SSH‎ الإداري على المنفذ 22). برمجياً تحتاج ‎Docker Engine‎ إصدار ≥ 24، و‎Docker Compose‎ الإصدار 2، واسم نطاق يشير إلى خادمك.

نشر ‎Forgejo‎ باستخدام ‎Docker‎ و‎SSL‎

01

تحضير البيئة

أنشئ المجلدات التي ستحتفظ بالبيانات خارج الحاوية:

mkdir -p /opt/forgejo/{data,config,db}
chown -R 1000:1000 /opt/forgejo

أنشئ ملف /opt/forgejo/.env بقيمك الخاصة:

FORGEJO_DOMAIN=git.نطاقك.com
FORGEJO_SSH_PORT=2222
POSTGRES_PASSWORD=غيّر_هذه_الكلمة
02

إنشاء ملف ‎docker-compose.yml‎

services:
  forgejo:
    image: codeberg.org/forgejo/forgejo:latest
    restart: unless-stopped
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - FORGEJO__database__DB_TYPE=postgres
      - FORGEJO__database__HOST=db:5432
      - FORGEJO__database__NAME=forgejo
      - FORGEJO__database__USER=forgejo
      - FORGEJO__database__PASSWD=${POSTGRES_PASSWORD}
    volumes:
      - /opt/forgejo/data:/data
    ports:
      - "3000:3000"
      - "${FORGEJO_SSH_PORT:-2222}:22"
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      - POSTGRES_DB=forgejo
      - POSTGRES_USER=forgejo
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - /opt/forgejo/db:/var/lib/postgresql/data
03

تشغيل الخدمات

cd /opt/forgejo
docker compose up -d
docker compose logs -f forgejo

انتظر حتى يظهر السطر Listen on :3000. تُنفذ ‎Forgejo‎ عمليات ترحيل قاعدة البيانات تلقائياً عند الإطلاق الأول.

04

إعداد البروكسي العكسي و‎SSL‎ مع ‎Caddy‎

‎Caddy‎ هو الخيار الأبسط للحصول على شهادة ‎Let's Encrypt‎ تلقائية. ثبّته ثم أنشئ ملف /etc/caddy/Caddyfile:

git.نطاقك.com {
  reverse_proxy localhost:3000
}

شغّل ‎Caddy‎: systemctl enable --now caddy. تُصدر شهادة ‎TLS‎ وتُجدَّد تلقائياً. إذا فضّلت ‎nginx‎، استخدم كتلة proxy_pass http://127.0.0.1:3000; مع ‎Certbot‎.

05

إتمام إعداد المنصة

افتح https://git.نطاقك.com في متصفحك. يظهر معالج الإعداد مرة واحدة فقط. أدخل النطاق وعنوان ‎SSH‎ (ssh://git.نطاقك.com:2222) وبريد المدير، وأوقف التسجيل العام من هذه الشاشة إذا كانت منصتك خاصة. بعد إرسال المعالج، يُقفل الإعداد في ملف /opt/forgejo/data/gitea/conf/app.ini.

06

تثبيت ‎runner‎ لـ‎Forgejo Actions‎

على الخادم ذاته أو جهاز مخصص، احصل على الرمز من *إدارة الموقع → Runners*. انشر الـ‎runner‎ عبر ‎Docker‎:

services:
  runner:
    image: code.forgejo.org/forgejo/act_runner:latest
    restart: unless-stopped
    environment:
      - FORGEJO_INSTANCE_URL=https://git.نطاقك.com
      - FORGEJO_RUNNER_TOKEN=رمزك_هنا
      - FORGEJO_RUNNER_NAME=runner-رئيسي
      - FORGEJO_RUNNER_LABELS=ubuntu-latest:docker://node:20,docker:docker://docker:dind
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

يظهر الـ‎runner‎ في الواجهة خلال دقيقة. يدعم وضع ‎Docker‎ (عزل كامل، موصى به)، ووضع ‎Process‎ (بدون ‎Docker‎)، ووضع ‎Auto‎ (يكتشف تلقائياً).

كتابة أول سيناريوهات ‎Forgejo Actions‎

التوافق مع صياغة ‎GitHub Actions‎ واسع. أنشئ ملف .forgejo/workflows/ci.yml في جذر مستودعك:

on:
  push:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: تشغيل الاختبارات
        run: |
          npm ci
          npm test

تتوافق بطاقات runs-on مع البطاقات المعلنة عند تسجيل الـ‎runner‎. يمكنك تعريف عدة ‎runners‎ بمختلف البطاقات (مثل arm64، gpu، high-memory) واستهداف البيئة المناسبة لكل مهمة. تعمل الحزم والذاكرة المؤقتة مع الـ‎actions‎ الرسمية ذاتها المستخدمة على ‎GitHub‎.

أمان ما بعد التثبيت: الإعدادات الأساسية

منصة ‎Forgejo‎ الحديثة التثبيت تعمل لكنها غير مُصلَّبة. إليك الست نقاط الواجبة المعالجة قبل فتحها لفريقك.

تعطيل التسجيل العام. في *إدارة الموقع → الإعدادات → المستخدمون*، أزل تحديد «السماح بتسجيل المستخدمين». لا ينبغي لأحد إنشاء حساب بدون دعوة على منصة داخلية.

تفعيل المصادقة الثنائية ‎2FA‎ للمديرين. يجب على كل حساب مدير تفعيل ‎2FA‎ من *الإعدادات → الأمان*. أجبر ‎2FA‎ على جميع المستخدمين عبر إعداد REQUIRE_SIGNIN_VIEW.

‎SSH‎ بالمفاتيح فقط. عطّل المصادقة بكلمة المرور في /etc/ssh/sshd_config على الخادم المضيف (PasswordAuthentication no). لـ‎SSH Git‎ على المنفذ 2222، تقبل ‎Forgejo‎ المفاتيح العامة المسجلة في ملفات تعريف المستخدمين فقط — وهذا سلوكها الافتراضي.

أسرار ‎webhooks‎. عند إنشاء كل ‎webhook‎، امْلأ دائماً حقل *السر*. توقّع ‎Forgejo‎ الحمولة بـ‎HMAC-SHA256‎؛ على متلقيك التحقق من هذا التوقيع قبل معالجة الحدث.

الحزم الخاصة. إذا استخدمت السجل المدمج للحزم، عيّن رؤية افتراضية *خاصة* في إعدادات المؤسسة. يجب أن تمتلك الرموز المستخدمة للنشر نطاقاً أدنى (packages:write فقط).

جدار الحماية. أغلق كل المنافذ عدا 80 و443 و2222. يجب ألا يُكشف المنفذ 3000 (‎Forgejo‎ الداخلي) مباشرة؛ يستهلكه البروكسي العكسي عبر الحلقة المحلية فقط.

تحديث ‎Forgejo‎ دون انقطاع

إجراء تحديث ‎Docker‎ بسيط ولا يتطلب سوى ثوانٍ من الانقطاع.

cd /opt/forgejo
# 1. سحب الصورة الجديدة
docker compose pull forgejo

# 2. نسخ احتياطي لقاعدة البيانات قبل أي ترحيل
docker compose exec db pg_dump -U forgejo forgejo > backup-$(date +%Y%m%d).sql

# 3. إعادة تشغيل الخدمة
docker compose up -d forgejo

# 4. التحقق من عمليات ترحيل المخطط
docker compose logs forgejo | grep -i migrat

تُنفذ ‎Forgejo‎ عمليات الترحيل تلقائياً عند الإطلاق. تحقق من ظهور السطر Finished successfully في السجلات. عند حدوث خطأ في الترحيل، استعد النسخة الاحتياطية وأبلغ عن المشكلة على متتبع ‎Forgejo‎. اقرأ ملاحظات الإصدار دائماً قبل القفز بين الإصدارات الرئيسية.

الترحيل من ‎Gitea‎ في خمس دقائق

‎Forgejo‎ نسخة مباشرة من ‎Gitea‎: مخطط قاعدة بياناتها متوافق حتى الإصدار 1.21. للترحيل، أوقف ‎Gitea‎، انسخ مجلد بياناتها إلى /opt/forgejo/data، استبدل الصورة في ملف ‎docker-compose‎ وأعد التشغيل. تكتشف ‎Forgejo‎ مخطط ‎Gitea‎ تلقائياً وتُطبق عمليات الترحيل الخاصة بها. تُحفظ مستودعاتك ومستخدموك ومفاتيح ‎SSH‎ والـ‎webhooks‎ والإشكاليات بالكامل. للإصدارات الأحدث من ‎Gitea‎، راجع مصفوفة التوافق على ويكي ‎Forgejo‎ قبل الترحيل.

استكشاف الأخطاء: المشكلات الأكثر شيوعاً

رفض اتصال ‎SSH‎ على المنفذ 2222. تحقق أولاً من أن ‎Docker‎ ينشر المنفذ (docker compose ps → عمود Ports). ثم اختبر من العميل: ssh -p 2222 git@git.نطاقك.com. إذا كانت الإجابة PTY allocation request failed، الاتصال يعمل — ‎Forgejo‎ ترد بـHi <user>! You've successfully authenticated. إذا حصلت على Connection refused، جدار الحماية يحجب المنفذ: ufw allow 2222/tcp.

‎Runner‎ يظهر غير متصل في الواجهة. يتصل الـ‎runner‎ بـ‎Forgejo‎ عبر ‎HTTPS‎ صادر. تحقق من أن حاوية الـ‎runner‎ تستطيع الوصول إلى git.نطاقك.com. شهادة موقّعة ذاتياً تستلزم تثبيت مرجع مصادقتك في الحاوية. أعد تشغيل الـ‎runner‎ بعد إصلاح الاتصال: docker compose restart runner.

رفض ‎push‎ بواسطة ‎hook‎. قد ترفض ‎Forgejo‎ دفعة إذا كانت قاعدة حماية فرع نشطة (مراجعة مطلوبة، اختبارات ‎CI‎ إلزامية) أو تجاوز ملف حد الحجم. تحتوي رسالة خطأ ‎git‎ على التفاصيل. للملفات الكبيرة (> 100 ميغابايت)، استخدم ‎Git LFS‎: تدعم ‎Forgejo‎ بروتوكول ‎LFS‎ أصلاً.

واجهة بطيئة بعد أشهر. شغّل جامع مهملات ‎Git‎ من لوحة الإدارة: *الإدارة → المستودعات → تشغيل Git GC*. للأتمتة، هيئ المهمة المجدولة في app.ini تحت [cron.run_task].

اتحاد ‎ActivityPub‎: ما تبنيه ‎Forgejo‎

‎Forgejo‎ هي أول منصة استضافة ‎Git‎ تُطبق الاتحاد عبر بروتوكول ‎ActivityPub‎ (البروتوكول ذاته الذي يستخدمه ‎Mastodon‎). منذ الإصدار 1.20 يمكنك متابعة مستودع بعيد مستضاف على نسخة ‎Forgejo‎ أخرى متحدة واستقبال إشعارات الإشكاليات وطلبات السحب في جدولك الزمني المحلي. الاتحاد الكامل — التفريع عبر النسخ وطلبات السحب بين المنصات — قيد التقييس ضمن مجموعة عمل ‎ForgeFed‎. ستتيح هذه التطورات مستقبلاً المساهمة دون إنشاء حساب على كل نسخة.

‎Forgejo‎ مقابل ‎Gitea‎ مقابل ‎GitLab CE‎: اختر منصتك

المعيار‎Forgejo‎‎Gitea‎‎GitLab CE‎
الحوكمةمجتمعية (‎Codeberg e.V.‎)تجارية (‎Gitea Ltd‎)تجارية (‎GitLab Inc‎)
الحد الأدنى من الذاكرة~80 ميغابايت~80 ميغابايت~4 غيغابايت
توافق ‎GitHub Actions‎نعم (‎Forgejo Actions‎)نعم (‎Gitea Act‎)لا (‎CI‎ خاصة)
سجل الحزمنعم (متعدد الأشكال)نعمنعم
اتحاد ‎ActivityPub‎قيد التطوير (‎ForgeFed‎)لالا
الترحيل من ‎GitHub‎نعم (مرايا + استيراد)نعمنعم
واجهة الإدارةبسيطة ومدمجةبسيطة ومدمجةكاملة لكن ثقيلة
الرخصة‎MIT‎‎MIT‎‎MIT‎ (CE) / ‎EE‎ (مدفوع)
وتيرة الإصداراتشهريةشهريةشهرية

خادم VPS جاهز لـ‎Forgejo‎ في دقائق

تمنحك مجموعة ‎VPS Cloud‎ لدينا خادماً نظيفاً بنظام ‎Debian‎ أو ‎Ubuntu‎، وتخزيناً على ‎SSD‎، وعنوان ‎IP‎ مخصصاً. أمر `docker compose up` واحد وتصبح منصتك حية.

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

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