[{"data":1,"prerenderedAt":191},["ShallowReactive",2],{"seo-verification":3,"blog-استضافة-forgejo-على-خادم-vps-الخاص-بك-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":24,"featuredImage":26,"bgImage":27,"posterImage":28,"relatedSolution":26,"intro":29,"sections":30,"ctaTitle":136,"ctaBody":137,"ctaButton":138,"ctaUrl":139,"relatedPosts":140},75,"استضافة-forgejo-على-خادم-vps-الخاص-بك",{"fr":10,"en":11,"ar":8},"heberger-forgejo","host-forgejo-on-your-own-vps","استضافة ‎Forgejo‎ على خادم VPS: دليل شامل 2025","انشر ‎Forgejo‎ على خادم ‎VPS‎ باستخدام ‎Docker‎ و‎SSL‎ و‎Actions runners‎ مع تأمين متقدم. دليل خطوة بخطوة لإقامة مخزن ‎Git‎ مستقل.",10,1,false,"2026-04-06T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},7,"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[25],{"id":19,"name":20,"slug":21,"color":22,"icon":23},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-forgejo-poster.svg","‎Forgejo‎ هي منصة استضافة ‎Git‎ خفيفة ومجتمعية نشأت كبديل لـ‎Gitea‎. متوافقة مع ‎GitHub Actions‎، وسهلة الترحيل، وتحترم خصوصية بياناتك. يمكن تشغيلها على خادم ‎VPS‎ في أقل من ساعة. يغطي هذا الدليل كل شيء: تحديد موارد الخادم، والنشر عبر ‎Docker‎، وإعداد ‎SSL‎، وتشغيل مهام ‎CI\u002FCD‎، وتشديد الأمان بعد التثبيت، والتحديث دون انقطاع.",[31,35,47,50,72,75,78,81,85,88,91],{"type":32,"title":33,"body":34},"h2","لماذا تختار ‎Forgejo‎ لمخزن ‎Git‎ المستضاف ذاتياً","وُلدت ‎Forgejo‎ عام 2022 كنسخة مجتمعية من ‎Gitea‎، دافعها مخاوف حول حوكمة المشروع الأصلي. تطويرها مجتمعي بالكامل، مرخصة بـ‎MIT‎، ولا تعتمد على أي شركة تجارية. للفرق التي تريد السيطرة الكاملة على شيفراتها ومسارات ‎CI\u002FCD‎ والحزم دون الاعتماد على ‎GitHub‎ أو ‎GitLab‎ أو ‎Bitbucket‎، تمثل ‎Forgejo‎ الخيار الأخف والأكثر اكتفاءً. واجهتها مألوفة لكل مطور استخدم ‎GitHub‎، والترحيل من ‎Gitea‎ سلس، والتوافق مع ‎GitHub Actions‎ يُخفض عتبة الانتقال.",{"type":36,"title":37,"items":38},"ul","فوائد ملموسة لـ‎Forgejo‎ المستضافة ذاتياً",[39,40,41,42,43,44,45,46],"سيادة كاملة: شيفرتك لا تغادر بنيتك التحتية أبداً","متوافقة مع ‎GitHub Actions‎ عبر ‎Forgejo Actions‎ — أعد استخدام سيناريوهاتك الحالية","بصمة ذاكرة منخفضة جداً (~256 ميغابايت لفريق صغير)","سجل حزم مدمج: ‎npm‎، ‎PyPI‎، ‎Maven‎، ‎Helm‎، حاويات ‎OCI‎","لا حدود على عدد المستودعات الخاصة أو المتعاونين","اتحاد ‎ActivityPub‎ قيد التطوير — تشغيل بيني مستقبلي مع منصات أخرى","مفتوحة المصدر، قابلة للتدقيق، بلا مفاجآت في التسعير","تحديثات تحت سيطرتك: أنت من يقرر وقت الترقية",{"type":32,"title":48,"body":49},"المتطلبات المادية والبرمجية بأرقام حقيقية","حدد موارد خادم ‎VPS‎ وفق حجم فريقك الفعلي قبل نشر ‎Forgejo‎. لـ1–5 مطورين مع عشرات المستودعات، يكفي 1 نواة و1 غيغابايت ذاكرة؛ ‎Forgejo‎ في وضع الخمول تستهلك ~80 ميغابايت. لـ5–20 مطوراً مع ‎CI\u002FCD‎ نشطة، خطط بـ2 نواة و2 غيغابايت. لما يزيد على 20 مطوراً أو لمستودعات ضخمة، 4 نوى و4 غيغابايت تضمن أداءً سلساً. للتخزين، احسب حجم مستودعاتك مضافاً إليه 20% هامش للحزم والنسخ الاحتياطية.\n\nعلى صعيد الشبكة، يجب فتح ثلاثة منافذ في جدار الحماية: المنفذ 80 لـ‎HTTP‎ (التحقق من ‎Let's Encrypt‎)، المنفذ 443 لـ‎HTTPS‎ (حركة الويب)، والمنفذ 2222 لـ‎SSH Git‎ (تفادياً للتعارض مع ‎SSH‎ الإداري على المنفذ 22). برمجياً تحتاج ‎Docker Engine‎ إصدار ≥ 24، و‎Docker Compose‎ الإصدار 2، واسم نطاق يشير إلى خادمك.",{"type":51,"title":52,"steps":53},"steps","نشر ‎Forgejo‎ باستخدام ‎Docker‎ و‎SSL‎",[54,57,60,63,66,69],{"title":55,"body":56},"تحضير البيئة","أنشئ المجلدات التي ستحتفظ بالبيانات خارج الحاوية:\n\n```bash\nmkdir -p \u002Fopt\u002Fforgejo\u002F{data,config,db}\nchown -R 1000:1000 \u002Fopt\u002Fforgejo\n```\n\nأنشئ ملف `\u002Fopt\u002Fforgejo\u002F.env` بقيمك الخاصة:\n\n```env\nFORGEJO_DOMAIN=git.نطاقك.com\nFORGEJO_SSH_PORT=2222\nPOSTGRES_PASSWORD=غيّر_هذه_الكلمة\n```",{"title":58,"body":59},"إنشاء ملف ‎docker-compose.yml‎","```yaml\nservices:\n  forgejo:\n    image: codeberg.org\u002Fforgejo\u002Fforgejo:latest\n    restart: unless-stopped\n    environment:\n      - USER_UID=1000\n      - USER_GID=1000\n      - FORGEJO__database__DB_TYPE=postgres\n      - FORGEJO__database__HOST=db:5432\n      - FORGEJO__database__NAME=forgejo\n      - FORGEJO__database__USER=forgejo\n      - FORGEJO__database__PASSWD=${POSTGRES_PASSWORD}\n    volumes:\n      - \u002Fopt\u002Fforgejo\u002Fdata:\u002Fdata\n    ports:\n      - \"3000:3000\"\n      - \"${FORGEJO_SSH_PORT:-2222}:22\"\n    depends_on:\n      - db\n\n  db:\n    image: postgres:16-alpine\n    restart: unless-stopped\n    environment:\n      - POSTGRES_DB=forgejo\n      - POSTGRES_USER=forgejo\n      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}\n    volumes:\n      - \u002Fopt\u002Fforgejo\u002Fdb:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n```",{"title":61,"body":62},"تشغيل الخدمات","```bash\ncd \u002Fopt\u002Fforgejo\ndocker compose up -d\ndocker compose logs -f forgejo\n```\n\nانتظر حتى يظهر السطر `Listen on :3000`. تُنفذ ‎Forgejo‎ عمليات ترحيل قاعدة البيانات تلقائياً عند الإطلاق الأول.",{"title":64,"body":65},"إعداد البروكسي العكسي و‎SSL‎ مع ‎Caddy‎","‎Caddy‎ هو الخيار الأبسط للحصول على شهادة ‎Let's Encrypt‎ تلقائية. ثبّته ثم أنشئ ملف `\u002Fetc\u002Fcaddy\u002FCaddyfile`:\n\n```\ngit.نطاقك.com {\n  reverse_proxy localhost:3000\n}\n```\n\nشغّل ‎Caddy‎: `systemctl enable --now caddy`. تُصدر شهادة ‎TLS‎ وتُجدَّد تلقائياً. إذا فضّلت ‎nginx‎، استخدم كتلة `proxy_pass http:\u002F\u002F127.0.0.1:3000;` مع ‎Certbot‎.",{"title":67,"body":68},"إتمام إعداد المنصة","افتح `https:\u002F\u002Fgit.نطاقك.com` في متصفحك. يظهر معالج الإعداد مرة واحدة فقط. أدخل النطاق وعنوان ‎SSH‎ (`ssh:\u002F\u002Fgit.نطاقك.com:2222`) وبريد المدير، وأوقف التسجيل العام من هذه الشاشة إذا كانت منصتك خاصة. بعد إرسال المعالج، يُقفل الإعداد في ملف `\u002Fopt\u002Fforgejo\u002Fdata\u002Fgitea\u002Fconf\u002Fapp.ini`.",{"title":70,"body":71},"تثبيت ‎runner‎ لـ‎Forgejo Actions‎","على الخادم ذاته أو جهاز مخصص، احصل على الرمز من *إدارة الموقع → Runners*. انشر الـ‎runner‎ عبر ‎Docker‎:\n\n```yaml\nservices:\n  runner:\n    image: code.forgejo.org\u002Fforgejo\u002Fact_runner:latest\n    restart: unless-stopped\n    environment:\n      - FORGEJO_INSTANCE_URL=https:\u002F\u002Fgit.نطاقك.com\n      - FORGEJO_RUNNER_TOKEN=رمزك_هنا\n      - FORGEJO_RUNNER_NAME=runner-رئيسي\n      - FORGEJO_RUNNER_LABELS=ubuntu-latest:docker:\u002F\u002Fnode:20,docker:docker:\u002F\u002Fdocker:dind\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n```\n\nيظهر الـ‎runner‎ في الواجهة خلال دقيقة. يدعم وضع ‎Docker‎ (عزل كامل، موصى به)، ووضع ‎Process‎ (بدون ‎Docker‎)، ووضع ‎Auto‎ (يكتشف تلقائياً).",{"type":32,"title":73,"body":74},"كتابة أول سيناريوهات ‎Forgejo Actions‎","التوافق مع صياغة ‎GitHub Actions‎ واسع. أنشئ ملف `.forgejo\u002Fworkflows\u002Fci.yml` في جذر مستودعك:\n\n```yaml\non:\n  push:\n    branches: [main]\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - name: تشغيل الاختبارات\n        run: |\n          npm ci\n          npm test\n```\n\nتتوافق بطاقات `runs-on` مع البطاقات المعلنة عند تسجيل الـ‎runner‎. يمكنك تعريف عدة ‎runners‎ بمختلف البطاقات (مثل `arm64`، `gpu`، `high-memory`) واستهداف البيئة المناسبة لكل مهمة. تعمل الحزم والذاكرة المؤقتة مع الـ‎actions‎ الرسمية ذاتها المستخدمة على ‎GitHub‎.",{"type":32,"title":76,"body":77},"أمان ما بعد التثبيت: الإعدادات الأساسية","منصة ‎Forgejo‎ الحديثة التثبيت تعمل لكنها غير مُصلَّبة. إليك الست نقاط الواجبة المعالجة قبل فتحها لفريقك.\n\n**تعطيل التسجيل العام.** في *إدارة الموقع → الإعدادات → المستخدمون*، أزل تحديد «السماح بتسجيل المستخدمين». لا ينبغي لأحد إنشاء حساب بدون دعوة على منصة داخلية.\n\n**تفعيل المصادقة الثنائية ‎2FA‎ للمديرين.** يجب على كل حساب مدير تفعيل ‎2FA‎ من *الإعدادات → الأمان*. أجبر ‎2FA‎ على جميع المستخدمين عبر إعداد `REQUIRE_SIGNIN_VIEW`.\n\n**‎SSH‎ بالمفاتيح فقط.** عطّل المصادقة بكلمة المرور في `\u002Fetc\u002Fssh\u002Fsshd_config` على الخادم المضيف (`PasswordAuthentication no`). لـ‎SSH Git‎ على المنفذ 2222، تقبل ‎Forgejo‎ المفاتيح العامة المسجلة في ملفات تعريف المستخدمين فقط — وهذا سلوكها الافتراضي.\n\n**أسرار ‎webhooks‎.** عند إنشاء كل ‎webhook‎، امْلأ دائماً حقل *السر*. توقّع ‎Forgejo‎ الحمولة بـ‎HMAC-SHA256‎؛ على متلقيك التحقق من هذا التوقيع قبل معالجة الحدث.\n\n**الحزم الخاصة.** إذا استخدمت السجل المدمج للحزم، عيّن رؤية افتراضية *خاصة* في إعدادات المؤسسة. يجب أن تمتلك الرموز المستخدمة للنشر نطاقاً أدنى (`packages:write` فقط).\n\n**جدار الحماية.** أغلق كل المنافذ عدا 80 و443 و2222. يجب ألا يُكشف المنفذ 3000 (‎Forgejo‎ الداخلي) مباشرة؛ يستهلكه البروكسي العكسي عبر الحلقة المحلية فقط.",{"type":32,"title":79,"body":80},"تحديث ‎Forgejo‎ دون انقطاع","إجراء تحديث ‎Docker‎ بسيط ولا يتطلب سوى ثوانٍ من الانقطاع.\n\n```bash\ncd \u002Fopt\u002Fforgejo\n# 1. سحب الصورة الجديدة\ndocker compose pull forgejo\n\n# 2. نسخ احتياطي لقاعدة البيانات قبل أي ترحيل\ndocker compose exec db pg_dump -U forgejo forgejo > backup-$(date +%Y%m%d).sql\n\n# 3. إعادة تشغيل الخدمة\ndocker compose up -d forgejo\n\n# 4. التحقق من عمليات ترحيل المخطط\ndocker compose logs forgejo | grep -i migrat\n```\n\nتُنفذ ‎Forgejo‎ عمليات الترحيل تلقائياً عند الإطلاق. تحقق من ظهور السطر `Finished successfully` في السجلات. عند حدوث خطأ في الترحيل، استعد النسخة الاحتياطية وأبلغ عن المشكلة على متتبع ‎Forgejo‎. اقرأ ملاحظات الإصدار دائماً قبل القفز بين الإصدارات الرئيسية.",{"type":82,"title":83,"body":84},"tip","الترحيل من ‎Gitea‎ في خمس دقائق","‎Forgejo‎ نسخة مباشرة من ‎Gitea‎: مخطط قاعدة بياناتها متوافق حتى الإصدار 1.21. للترحيل، أوقف ‎Gitea‎، انسخ مجلد بياناتها إلى `\u002Fopt\u002Fforgejo\u002Fdata`، استبدل الصورة في ملف ‎docker-compose‎ وأعد التشغيل. تكتشف ‎Forgejo‎ مخطط ‎Gitea‎ تلقائياً وتُطبق عمليات الترحيل الخاصة بها. تُحفظ مستودعاتك ومستخدموك ومفاتيح ‎SSH‎ والـ‎webhooks‎ والإشكاليات بالكامل. للإصدارات الأحدث من ‎Gitea‎، راجع مصفوفة التوافق على ويكي ‎Forgejo‎ قبل الترحيل.",{"type":32,"title":86,"body":87},"استكشاف الأخطاء: المشكلات الأكثر شيوعاً","**رفض اتصال ‎SSH‎ على المنفذ 2222.** تحقق أولاً من أن ‎Docker‎ ينشر المنفذ (`docker compose ps` → عمود Ports). ثم اختبر من العميل: `ssh -p 2222 git@git.نطاقك.com`. إذا كانت الإجابة `PTY allocation request failed`، الاتصال يعمل — ‎Forgejo‎ ترد بـ`Hi \u003Cuser>! You've successfully authenticated`. إذا حصلت على `Connection refused`، جدار الحماية يحجب المنفذ: `ufw allow 2222\u002Ftcp`.\n\n**‎Runner‎ يظهر غير متصل في الواجهة.** يتصل الـ‎runner‎ بـ‎Forgejo‎ عبر ‎HTTPS‎ صادر. تحقق من أن حاوية الـ‎runner‎ تستطيع الوصول إلى `git.نطاقك.com`. شهادة موقّعة ذاتياً تستلزم تثبيت مرجع مصادقتك في الحاوية. أعد تشغيل الـ‎runner‎ بعد إصلاح الاتصال: `docker compose restart runner`.\n\n**رفض ‎push‎ بواسطة ‎hook‎.** قد ترفض ‎Forgejo‎ دفعة إذا كانت قاعدة حماية فرع نشطة (مراجعة مطلوبة، اختبارات ‎CI‎ إلزامية) أو تجاوز ملف حد الحجم. تحتوي رسالة خطأ ‎git‎ على التفاصيل. للملفات الكبيرة (> 100 ميغابايت)، استخدم ‎Git LFS‎: تدعم ‎Forgejo‎ بروتوكول ‎LFS‎ أصلاً.\n\n**واجهة بطيئة بعد أشهر.** شغّل جامع مهملات ‎Git‎ من لوحة الإدارة: *الإدارة → المستودعات → تشغيل Git GC*. للأتمتة، هيئ المهمة المجدولة في `app.ini` تحت `[cron.run_task]`.",{"type":82,"title":89,"body":90},"اتحاد ‎ActivityPub‎: ما تبنيه ‎Forgejo‎","‎Forgejo‎ هي أول منصة استضافة ‎Git‎ تُطبق الاتحاد عبر بروتوكول ‎ActivityPub‎ (البروتوكول ذاته الذي يستخدمه ‎Mastodon‎). منذ الإصدار 1.20 يمكنك متابعة مستودع بعيد مستضاف على نسخة ‎Forgejo‎ أخرى متحدة واستقبال إشعارات الإشكاليات وطلبات السحب في جدولك الزمني المحلي. الاتحاد الكامل — التفريع عبر النسخ وطلبات السحب بين المنصات — قيد التقييس ضمن مجموعة عمل ‎ForgeFed‎. ستتيح هذه التطورات مستقبلاً المساهمة دون إنشاء حساب على كل نسخة.",{"type":92,"title":93,"headers":94,"rows":99},"comparison","‎Forgejo‎ مقابل ‎Gitea‎ مقابل ‎GitLab CE‎: اختر منصتك",[95,96,97,98],"المعيار","‎Forgejo‎","‎Gitea‎","‎GitLab CE‎",[100,105,109,114,118,122,125,129,133],[101,102,103,104],"الحوكمة","مجتمعية (‎Codeberg e.V.‎)","تجارية (‎Gitea Ltd‎)","تجارية (‎GitLab Inc‎)",[106,107,107,108],"الحد الأدنى من الذاكرة","~80 ميغابايت","~4 غيغابايت",[110,111,112,113],"توافق ‎GitHub Actions‎","نعم (‎Forgejo Actions‎)","نعم (‎Gitea Act‎)","لا (‎CI‎ خاصة)",[115,116,117,117],"سجل الحزم","نعم (متعدد الأشكال)","نعم",[119,120,121,121],"اتحاد ‎ActivityPub‎","قيد التطوير (‎ForgeFed‎)","لا",[123,124,117,117],"الترحيل من ‎GitHub‎","نعم (مرايا + استيراد)",[126,127,127,128],"واجهة الإدارة","بسيطة ومدمجة","كاملة لكن ثقيلة",[130,131,131,132],"الرخصة","‎MIT‎","‎MIT‎ (CE) \u002F ‎EE‎ (مدفوع)",[134,135,135,135],"وتيرة الإصدارات","شهرية","خادم VPS جاهز لـ‎Forgejo‎ في دقائق","تمنحك مجموعة ‎VPS Cloud‎ لدينا خادماً نظيفاً بنظام ‎Debian‎ أو ‎Ubuntu‎، وتخزيناً على ‎SSD‎، وعنوان ‎IP‎ مخصصاً. أمر `docker compose up` واحد وتصبح منصتك حية.","اكتشف خطط ‎VPS Cloud‎","\u002Fvps-cloud",[141,156,174],{"id":142,"slug":143,"slugs":144,"title":147,"excerpt":148,"readTime":149,"views":150,"isPinned":16,"publishedAt":151,"category":152,"categories":153,"featuredImage":26,"bgImage":27,"posterImage":155,"relatedSolution":26},261,"ارتفاع-تكاليف-saas-46-متى-تستضيف-بنفسك",{"fr":145,"en":146,"ar":143},"migrer-saas-self-hosting-bundling-ia","when-saas-vendors-bundle-ai-migrating-to-self-hosting","ارتفاع تكاليف ‎SaaS‎ 46 %: متى تستضيف بنفسك؟","‌PricePulse النصف الأول 2026: ارتفاع 46% في تكاليف ‌SaaS لفرق من 50 شخصاً. ‌Mattermost و‌Nextcloud و‌Plane و‌Forgejo على خادم ‌VPS. دليل الهجرة.",9,0,"2026-08-14T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[154],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fmigrer-saas-self-hosting-bundling-ia-poster.svg",{"id":157,"slug":158,"slugs":159,"title":162,"excerpt":163,"readTime":164,"views":150,"isPinned":16,"publishedAt":165,"category":166,"categories":171,"featuredImage":26,"bgImage":27,"posterImage":173,"relatedSolution":26},229,"docker-compose-في-الإنتاج-قائمة-التحقق-من-10-نقاط",{"fr":160,"en":161,"ar":158},"docker-compose-production-checklist","docker-compose-in-production-10-point-checklist","Docker Compose في الإنتاج: قائمة التحقق من 10 نقاط","‎10 إعدادات Docker Compose يجب التحقق منها قبل أي نشر إنتاجي: إعادة التشغيل والفحوص الصحية والحدود والأسرار والسجلات.",14,"2026-08-06T00:00:00+00:00",{"id":167,"name":168,"slug":169,"color":170,"icon":169},3,"النشر","deploiement","bg-success\u002F10 text-success",[172],{"id":167,"name":168,"slug":169,"color":170,"icon":169},"\u002Fblog\u002Fcovers\u002Fdocker-compose-production-checklist-poster.svg",{"id":175,"slug":176,"slugs":177,"title":180,"excerpt":181,"readTime":14,"views":150,"isPinned":16,"publishedAt":165,"category":182,"categories":188,"featuredImage":26,"bgImage":27,"posterImage":190,"relatedSolution":26},228,"تصليب-الخادم-linux-الأولي",{"fr":178,"en":179,"ar":176},"durcissement-serveur-linux-initial","initial-linux-server-hardening","تصليب الخادم ‎Linux‎ الأولي","أنشئ مستخدم ‎sudo‎، وكوّن ‎SSH‎ بالمفاتيح، وفعّل ‎UFW‎ و‎fail2ban‎ على ‎Ubuntu 22.04‎ أو ‎Debian 12‎ في أقل من ساعة.",{"id":183,"name":184,"slug":185,"color":186,"icon":187},8,"الأمان والمراقبة","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[189],{"id":183,"name":184,"slug":185,"color":186,"icon":187},"\u002Fblog\u002Fcovers\u002Fdurcissement-serveur-linux-initial-poster.svg",1787580937609]