[{"data":1,"prerenderedAt":216},["ShallowReactive",2],{"seo-verification":3,"blog-gitea-وforgejo-بديل-github-actions-المدفوع-على-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":23,"featuredImage":25,"bgImage":26,"posterImage":27,"relatedSolution":28,"intro":31,"sections":32,"ctaTitle":163,"ctaBody":164,"ctaButton":165,"ctaUrl":166,"relatedPosts":167},273,"gitea-وforgejo-بديل-github-actions-المدفوع-على-vps",{"fr":10,"en":11,"ar":8},"github-actions-payant-migrer-ci-cd-gitea-forgejo-vps","migrate-cicd-to-gitea-or-forgejo-leave-github-actions","‏Gitea وForgejo: بديل ‏GitHub Actions المدفوع على ‏VPS","‏منذ مارس 2026، بات ‏GitHub يفوتر دقائق ‏CI على المستودعات الخاصة. نقل ‏runner إلى ‏VPS مع ‏Gitea أو ‏Forgejo Actions يُلغي هذه التكلفة دون إعادة كتابة ملفات ‏YAML.",11,0,false,"2026-08-16T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":21},2,"الأتمتة","automatisation","bg-brand-action\u002F10 text-brand-action",[24],{"id":19,"name":20,"slug":21,"color":22,"icon":21},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fgithub-actions-payant-migrer-ci-cd-gitea-forgejo-vps-poster.svg",{"categorySlug":29,"appSlug":30},"التطوير","gitea","‏منذ 1 مارس 2026، باتت دقائق ‏CI على المستودعات الخاصة في ‏GitHub تُفوتر بالاستهلاك. للفرق التي تُشغّل ‏pipelines متتالية — اختبارات، ‏lint، بناء ‏Docker، نشر — قد تتجاوز الفاتورة الشهرية ميزانية الاستضافة ذاتها. يتيح لك ‏Gitea و‏Forgejo استعادة السيطرة: نفس صياغة ‏YAML، نفس منطق ‏runner، بدون تكلفة إضافية للدقيقة. يقارن هذا الدليل الخيارين ويشرح التثبيت خطوة بخطوة على ‏VPS.",[33,37,49,52,98,101,123,126,141,144,153,157,160],{"type":34,"title":35,"body":36},"h2","ما الذي تغيّر في تسعير ‏GitHub Actions","‏حتى مطلع عام 2026، كانت المستودعات الخاصة على ‏GitHub تستفيد من حصة شهرية من الدقائق المدرجة حسب الخطة المشتركة. تطوّر هذا النموذج: منذ 1 مارس 2026، خفّض ‏GitHub الحصص المدرجة وعمّم الفوترة بالدقيقة على ‏runners لينكس المستضافة على خطط دون ‏GitHub Team و‏GitHub Enterprise.\n\n‏أما ‏runners المستضافة ذاتياً (‏self-hosted)، فلم تكن تُفوتَر من قِبل ‏GitHub قط — فهي تستهلك مواردك الخاصة. وهذا بالضبط ما تستغله ‏Gitea Actions و‏Forgejo Actions: باستضافة ‏forge الخاص بك على ‏VPS، تُشغّل ‏pipelines على ‏runner تتحكم فيه، دون عداد ‏GitHub.\n\n‏الحجة لا تقتصر على التكلفة. بيانات مستودعاتك الخاصة لا تعود تمر عبر بنية ‏GitHub التحتية. تعمل ‏pipelines في بيئة الشبكة التي تختارها — مفيد إذا كان نشرك يستهدف شبكة خاصة أو ‏cluster داخلي. وتبقى ‏forge متاحة حتى في حالة انقطاع خارجي أو تغيير في السياسة.",{"type":38,"title":39,"items":40},"ul","لماذا تنقل ‏CI\u002FCD إلى ‏forge مستضافة ذاتياً",[41,42,43,44,45,46,47,48],"‏**التكلفة المتغيرة تُلغى** — يعمل ‏runner على ‏VPS الخاص بك؛ كل دقيقة ‏CI هي مورد مدفوع مسبقاً، لا سطر فوترة إضافي.","‏**سرية ‏pipelines** — الكود المصدري وأسرار البيئة ونتائج البناء لا تغادر بنيتك التحتية.","‏**توافق ‏YAML** — يتبع `.gitea\u002Fworkflows\u002Fci.yml` نفس صياغة `.github\u002Fworkflows\u002Fci.yml`؛ نقل ‏pipeline موجود لا يتطلب في أغلب الأحيان سوى نقل ملف.","‏**تحكم كامل في صور ‏runner** — اختر إصدارات ‏PHP و‏Node و‏Python و‏Docker بدون الاعتماد على كتالوج ‏GitHub.","‏**‏forge خفيفة** — يعمل ‏Gitea بـ 200 إلى 300 ميغابايت من الذاكرة العشوائية للمستودعات؛ يستهلك `act_runner` نحو 50 ميغابايت لكل مهمة؛ ‏VPS بجيغابايت واحد كافٍ لفريق صغير.","‏**استقلالية الخدمة** — تستمر ‏pipelines في العمل بغض النظر عن توافر المنصة الأصلية أو سياستها التسعيرية.","‏**إدارة موحدة للوصول** — الصلاحيات والفِرق و‏webhooks تعيش على نسختك الخاصة دون تفويض الوصول لطرف ثالث.","‏**نتائج البناء تحت سيطرتك** — التنفيذات وصور ‏Docker وتقارير التغطية مخزّنة حيث تقرر.",{"type":34,"title":50,"body":51},"المتطلبات المسبقة","‏قبل تثبيت ‏Gitea أو ‏Forgejo، تحقق من استيفاء ‏VPS الخاص بك للمتطلبات التالية.\n\n‏**الذاكرة العشوائية**: 1 جيغابايت كحد أدنى لـ ‏forge صغيرة (حتى 5 مطورين، ‏pipelines بسيطة). خطط لـ 2 جيغابايت إذا فعّلت عدة ‏runners بالتوازي أو إذا كانت مهامك تبني صور ‏Docker.\n\n‏**المعالج**: ‏vCPU واحد كافٍ لـ ‏forge ذاتها؛ مهام ‏CI تستهلك ما تخصصه لها عبر إعداد ‏runner.\n\n‏**التخزين**: 20 جيغابايت للبدء — تنمو مستودعات ‏Git ونتائج ‏pipeline بسرعة حسب نشاطك.\n\n‏**المنفذ العام**: المنفذ 22 (‏Git SSH) أو منفذ بديل، والمنفذ 443 (‏HTTPS). يُستخدم المنفذ 3000 داخلياً من قِبل ‏Gitea\u002F‏Forgejo ولا يجب كشفه مباشرة.\n\n‏**اسم النطاق**: يُنصح بشدة بنطاق فرعي مخصص (`git.your-domain.com`) — تعتمد ‏webhooks و‏SSH keys وعناوين ‏clone على اسم ثابت.\n\n‏**Docker**: يُنشر ‏Gitea و‏Forgejo بسهولة عبر ‏Docker Compose، مما يبسط التحديثات وعزل العمليات.",{"type":53,"title":54,"headers":55,"rows":60},"comparison","‏Gitea Actions مقابل ‏Forgejo Actions مقابل ‏Woodpecker CI",[56,57,58,59],"المعيار","‏Gitea Actions","‏Forgejo Actions","‏Woodpecker CI",[61,66,71,75,79,84,88,93],[62,63,64,65],"الأصل","‏fork من ‏Gogs، ~47,000 نجمة على ‏GitHub، رخصة ‏MIT","‏hard-fork من ‏Gitea منذ ديسمبر 2022، تديره ‏Codeberg، رخصة ‏AGPL-3.0","‏CI خارجية، مفتوحة المصدر، تعمل مع ‏Gitea\u002F‏Forgejo\u002F‏GitHub",[67,68,69,70],"‏Runner","‏act_runner (نفس الثنائي)","‏act_runner (نفس الثنائي، نسخة ‏Forgejo)","‏Woodpecker agent مخصص (‏woodpecker-agent)",[72,73,73,74],"صياغة ‏workflow","متوافق مع `.github\u002Fworkflows\u002F*.yml`","صياغة ‏YAML خاصة، غير متوافقة مع ‏GitHub Actions",[76,77,77,78],"جهد الهجرة","نقل ملف ‏YAML إلى `.gitea\u002Fworkflows\u002F`","إعادة كتابة ‏workflows بصياغة ‏Woodpecker",[80,81,82,83],"الحوكمة","شركة تجارية (‏Gitea Ltd)","مجموعة مساهمين مستقلين (‏Codeberg e.V.)","مجتمع، بدون كيان تجاري",[85,86,86,87],"استهلاك ذاكرة ‏forge","‏~200-300 ميغابايت للمستودعات","يتطلب أيضاً ‏forge (‏Gitea\u002F‏Forgejo) بالإضافة إليه",[89,90,91,92],"التحديثات","إصدارات متكررة، قناة مستقرة متاحة","إصدارات متوافقة مع ‏Gitea + تصحيحات خاصة","دورة إصدار مستقلة",[94,95,96,97],"حالة الاستخدام الرئيسية","‏forge خفيفة مع ‏CI متكاملة، هجرة من ‏GitHub","‏forge خفيفة، ‏CI متكاملة، تفضيل للحوكمة المستقلة","‏CI مستقلة متقدمة، ‏pipelines متعددة المراحل المعقدة",{"type":34,"title":99,"body":100},"‏الخيار الأول: Gitea مع act_runner","‏Gitea هو ‏fork من ‏Gogs يتلقى صيانة نشطة منذ عام 2016، ويبلغ حالياً نحو 47,000 نجمة على ‏GitHub تحت رخصة ‏MIT. يدمج منذ الإصدار 1.19 محرك ‏Actions متوافق مع صياغة ‏GitHub Actions، يُشغَّل بواسطة `act_runner`.",{"type":102,"title":103,"steps":104},"steps","تثبيت ‏Gitea و‏runner",[105,108,111,114,117,120],{"title":106,"body":107},"إنشاء ملف ‏Docker Compose","‏أنشئ دليل عمل وملف `docker-compose.yml`:\n\n```yaml\nservices:\n  gitea:\n    image: gitea\u002Fgitea:latest\n    container_name: gitea\n    environment:\n      - USER_UID=1000\n      - USER_GID=1000\n      - GITEA__actions__ENABLED=true\n    volumes:\n      - .\u002Fgitea-data:\u002Fdata\n      - \u002Fetc\u002Ftimezone:\u002Fetc\u002Ftimezone:ro\n      - \u002Fetc\u002Flocaltime:\u002Fetc\u002Flocaltime:ro\n    ports:\n      - \"3000:3000\"\n      - \"222:22\"\n    restart: unless-stopped\n```\n\n‏فعّل `GITEA__actions__ENABLED=true` منذ البداية — بدون هذا المتغير، لن تظهر علامة تبويب ‏Actions في الواجهة.",{"title":109,"body":110},"تشغيل ‏Gitea وإكمال الإعداد الأولي","‏شغّل الحاوية ثم افتح `http:\u002F\u002F\u003Cyour-ip>:3000` في متصفح. يطلب منك معالج التثبيت نوع قاعدة البيانات (‏SQLite كافٍ لـ ‏forge صغيرة) واسم الخادم والرابط الخارجي. أدخل رابط ‏HTTPS الذي ستضبطه (`https:\u002F\u002Fgit.your-domain.com`) — يُكتب في الإعداد ويُستخدم كأساس لروابط ‏clone و‏webhooks.\n\n‏أنشئ حساب المسؤول من هذا المعالج.",{"title":112,"body":113},"ضبط ‏reverse proxy و‏TLS","‏ضع ‏Gitea خلف ‏nginx مع شهادة ‏Let's Encrypt. مثال على كتلة `server`:\n\n```nginx\nserver {\n    listen 443 ssl;\n    server_name git.your-domain.com;\n    ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fgit.your-domain.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fgit.your-domain.com\u002Fprivkey.pem;\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:3000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n    }\n}\n```\n\n‏احصل على الشهادة باستخدام `certbot certonly --nginx -d git.your-domain.com` ثم أعد تحميل ‏nginx.",{"title":115,"body":116},"إنشاء رمز ‏runner في ‏Gitea","‏سجّل الدخول إلى نسخة ‏Gitea الخاصة بك كمسؤول. انتقل إلى **إدارة الموقع ← ‏Runners ← إنشاء ‏runner**. انسخ الرمز المعروض — سيُستخدم في الخطوة التالية لتسجيل `act_runner`.",{"title":118,"body":119},"نشر ‏act_runner","‏أضف خدمة `act_runner` إلى `docker-compose.yml`:\n\n```yaml\n  act_runner:\n    image: gitea\u002Fact_runner:latest\n    container_name: act_runner\n    environment:\n      - GITEA_INSTANCE_URL=https:\u002F\u002Fgit.your-domain.com\n      - GITEA_RUNNER_REGISTRATION_TOKEN=\u003Cyour-token>\n      - GITEA_RUNNER_NAME=vps-runner\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n      - .\u002Frunner-data:\u002Fdata\n    restart: unless-stopped\n    depends_on:\n      - gitea\n```\n\n‏أعد التشغيل باستخدام `docker compose up -d`. يظهر ‏runner في واجهة ‏Gitea ضمن **إدارة الموقع ← Runners** بحالة **Idle**.",{"title":121,"body":122},"دفع ‏workflow اختباري","‏في أحد مستودعات ‏Gitea الخاصة بك، أنشئ الملف `.gitea\u002Fworkflows\u002Fci.yml`:\n\n```yaml\nname: CI\non: [push]\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - name: Check\n        run: echo \"Pipeline active on Gitea Actions\"\n```\n\n‏ادفع ‏commit. يظهر المهمة في علامة تبويب **Actions** بالمستودع وتنفّذ على ‏runner VPS الخاص بك.",{"type":34,"title":124,"body":125},"‏الخيار الثاني: Forgejo مع act_runner","‏Forgejo هو ‏hard-fork من ‏Gitea انطلق في ديسمبر 2022 من مجتمع ‏Codeberg، موزّع تحت رخصة ‏AGPL-3.0. يشارك نفس صياغة ‏workflow ونفس ثنائي `act_runner`، مع حوكمة مجتمعية ودورة تصحيحات مستقلة. للفرق الحساسة لأسئلة الحوكمة أو الترخيص، ‏Forgejo هو البديل المباشر لـ ‏Gitea — تجربة المستخدم وتوافق ‏YAML متطابقان.",{"type":102,"title":127,"steps":128},"اختلافات التثبيت مقارنة بـ ‏Gitea",[129,132,135,138],{"title":130,"body":131},"استبدال صورة ‏Docker","‏في `docker-compose.yml`، استبدل صورة ‏Gitea بصورة ‏Forgejo الرسمية:\n\n```yaml\nservices:\n  forgejo:\n    image: codeberg.org\u002Fforgejo\u002Fforgejo:latest\n    container_name: forgejo\n    environment:\n      - USER_UID=1000\n      - USER_GID=1000\n      - FORGEJO__actions__ENABLED=true\n    volumes:\n      - .\u002Fforgejo-data:\u002Fdata\n    ports:\n      - \"3000:3000\"\n      - \"222:22\"\n    restart: unless-stopped\n```\n\n‏يتغير بادئة متغير البيئة من `GITEA__` إلى `FORGEJO__` للإعدادات الخاصة بـ ‏Forgejo.",{"title":133,"body":134},"استخدام ‏runner الخاص بـ ‏Forgejo","‏تحتفظ ‏Forgejo بنسختها الخاصة من `act_runner`. استخدم الصورة المنشورة على ‏registry الخاص بـ ‏Codeberg:\n\n```yaml\n  act_runner:\n    image: code.forgejo.org\u002Fforgejo\u002Frunner:latest\n    container_name: forgejo_runner\n    environment:\n      - FORGEJO_INSTANCE_URL=https:\u002F\u002Fgit.your-domain.com\n      - FORGEJO_RUNNER_REGISTRATION_TOKEN=\u003Cyour-token>\n      - FORGEJO_RUNNER_NAME=vps-runner\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n      - .\u002Frunner-data:\u002Fdata\n    restart: unless-stopped\n```",{"title":136,"body":137},"استرداد رمز ‏runner في ‏Forgejo","‏الإجراء مطابق لـ ‏Gitea: **إدارة الموقع ← Runners ← إنشاء Runner**. الرمز للاستخدام مرة واحدة — دوّنه قبل إغلاق الصفحة.",{"title":139,"body":140},"‏ضع workflows في `.gitea\u002Fworkflows\u002F`","‏تقرأ ‏Forgejo ملفات ‏workflow من نفس الدليل المستخدم في ‏Gitea: `.gitea\u002Fworkflows\u002F`. يعمل ‏workflow مكتوب لـ ‏GitHub Actions أو ‏Gitea Actions دون تعديل. قيد واحد: الإجراء `actions\u002Fcheckout@v4` وأقاربه يُحلّ عبر ذاكرة التخزين المؤقت للإجراءات في نسختك — يُنزّلها التشغيل الأول، وتُعاد استخدامها في التشغيلات التالية.",{"type":34,"title":142,"body":143},"‏توافق YAML مع GitHub Actions","‏أبرز نقطة توافق كثيراً ما تُقلَّل من شأنها: `.gitea\u002Fworkflows\u002Fci.yml` و`.github\u002Fworkflows\u002Fci.yml` يتشاركان نفس القواعد النحوية. أحداث التشغيل (`push`, `pull_request`, `schedule`) والمهام والخطوات والمصفوفات وشروط `if:` تعمل بالطريقة ذاتها.\n\n‏نموذج ‏workflow شائع على ‏GitHub:\n\n```yaml\nname: Tests\non:\n  push:\n    branches: [main, dev]\n  pull_request:\n\njobs:\n  phpunit:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - name: Setup PHP\n        uses: shivammathur\u002Fsetup-php@v2\n        with:\n          php-version: '8.4'\n      - run: composer install --no-interaction\n      - run: vendor\u002Fbin\u002Fphpunit\n```\n\n‏هذا الملف، منقول إلى `.gitea\u002Fworkflows\u002Fci.yml`، يعمل كما هو على ‏Gitea Actions أو ‏Forgejo Actions. إجراءات ‏marketplace الخاصة بـ ‏GitHub (`actions\u002Fcheckout`, `shivammathur\u002Fsetup-php`, إلخ) تُنزّل من ‏GitHub في أول تشغيل وتُخزَّن محلياً في ذاكرة مؤقتة.\n\n‏قيد معروف: بعض الإجراءات الخاصة أو المرتبطة بـ ‏GitHub (‏OIDC، ‏CodeQL، ‏Dependabot) لا يوجد لها مكافئ مباشر ويجب استبدالها ببدائل مفتوحة المصدر أو نصوص ‏shell.",{"type":38,"title":145,"items":146},"المزايا المقارنة لـ ‏runner المستضاف ذاتياً",[147,148,149,150,151,152],"‏**تكلفة ثابتة وقابلة للتنبؤ** — لا تدفع سوى ‏VPS، بغض النظر عن تكرار ‏pipelines.","‏**السرية** — الكود المصدري ومتغيرات البيئة ونتائج البناء لا تمر عبر خدمة طرف ثالث.","‏**تخصيص ‏runner** — ثبّت التبعيات النظامية والأدوات الخاصة بمكدسك أو صور ‏Docker الخاصة مباشرة على ‏runner.","‏**الوصول إلى الشبكة الداخلية** — يمكن لمهمة الوصول إلى قاعدة بيانات تجريبية أو ‏registry Docker خاص على شبكتك دون كشف عام.","‏**نشر بدون عبور شبكي خارجي** — ‏يعمل الـ‏runner في نفس مركز البيانات الذي يضم خادمك المستهدف؛ تُنسخ ملفات البناء محلياً دون المرور بخوادم GitHub.","‏**الأرشفة تحت سيطرتك** — سجلات ‏pipeline ونتائجها تُحفظ طالما تقرر، دون حد تفرضه المنصة.",{"type":154,"title":155,"body":156},"tip","تصليب التثبيت","‏يكشف ‏runner المستضاف ذاتياً بنيتك التحتية إذا كان إعداده متساهلاً. ثلاث نقاط تحقق قبل وضع نسختك في الإنتاج.\n\n‏أولاً: **لا تكشف واجهة إدارة ‏Gitea\u002F‏Forgejo على الإنترنت**. ضعها خلف ‏reverse proxy مع تفعيل المصادقة الثنائية، وإن أمكن تقييد بالـ ‏IP أو ‏VPN للوصول الإداري.\n\n‏ثانياً: **رمز ‏runner للاستخدام مرة واحدة ويجب أن يظل سرياً**. بمجرد تسجيل ‏runner، لم يعد للرمز قيمة — لكن إن سرّب قبل التسجيل، يمكن لطرف ثالث إنشاء ‏runner ضار على نسختك.\n\n‏ثالثاً: **عزل ‏runner في شبكة ‏Docker مخصصة**، منفصلة عن ‏forge. يجب ألا تتمكن مهمة مخترقة من الوصول إلى حاوية ‏Gitea\u002F‏Forgejo عبر شبكة ‏Docker الداخلية. أعلن شبكتين في `docker-compose.yml` ومنح ‏runner فقط الوصول للإنترنت وما تحتاجه ‏pipelines.",{"type":34,"title":158,"body":159},"استكشاف الأخطاء — الأخطاء الشائعة","‏**يبقى ‏runner بحالة 'Offline' بعد التشغيل.** تحقق من أن `GITEA_INSTANCE_URL` (أو `FORGEJO_INSTANCE_URL`) يشير إلى رابط ‏HTTPS العام لـ ‏forge، لا إلى `localhost` أو ‏IP داخلي. يتصل ‏runner من خارج الحاوية.\n\n‏**علامة تبويب ‏Actions لا تظهر في الواجهة.** يجب أن يكون المتغير `GITEA__actions__ENABLED=true` (أو `FORGEJO__actions__ENABLED=true`) موجوداً عند بدء تشغيل الحاوية. إعادة التشغيل البسيطة دون هذا المتغير لا تكفي — أوقف الحاوية، أضف المتغير، ثم أعد التشغيل باستخدام `docker compose up -d`.\n\n‏**الإجراء `actions\u002Fcheckout@v4` يفشل بخطأ في الاستبيان.** تحاول ‏Gitea و‏Forgejo تنزيل الإجراءات من ‏GitHub في التشغيل الأول. إذا لم يستطع ‏VPS الوصول إلى `github.com`، فضّل ‏mirror محلي للإجراءات في قسم `[actions]` من `app.ini` باستخدام المفتاح `DEFAULT_ACTIONS_URL`.\n\n‏**المهمة تبدأ ثم تتوقف فوراً برمز 'exit code 137'.** هذا إشارة ‏OOM (نفاد الذاكرة) من النواة. تحمّل صورة ‏runner (`ubuntu-latest`) عدة أدوات في الذاكرة. زد ‏RAM المتاحة على ‏VPS أو قلل التوازي (`max_parallel_jobs` في إعداد ‏runner) لتفادي تشغيل مهام متعددة في آنٍ واحد على مضيف غير كافٍ.",{"type":34,"title":161,"body":162},"استعادة السيطرة على ‏CI\u002FCD الخاص بك","‏يقدم ‏Gitea و‏Forgejo نفس مستوى التوافق مع ‏workflows الحالية لـ ‏GitHub Actions، مع ملامح حوكمة مختلفة — ‏MIT لـ ‏Gitea، و‏AGPL-3.0 ومجموعة مستقلة لـ ‏Forgejo. في كلتا الحالتين، يُثبَّت `act_runner` في دقائق على ‏VPS قياسي، وتُنقل ‏pipelines دون إعادة كتابة.\n\n‏إذا كنت تستخدم بالفعل قالب ‏VPS الخاص بـ ‏Gitea على ‏ServOrbit، يمكن لـ ‏runner العمل على نفس النسخة أو ‏VPS مخصص حسب حمل ‏pipelines. الدليل التفصيلي لتثبيت ‏Gitea متاح في الخطوة التالية — يغطي خيارات التخزين وإعداد ‏SMTP والنسخ الاحتياطي التلقائي.\n\n‏لنشر ‏Gitea على ‏VPS في دقائق، اطلع على دليلنا: \u003Ca href=\"\u002Fblog\u002Fheberger-gitea\">استضافة ‏Gitea على ‏VPS\u003C\u002Fa>.","‏انشر ‏forge Git الخاص بك على VPS","‏Gitea متاح كقالب ‏VPS على ‏ServOrbit. نسختك جاهزة للعمل في دقائق، مع ‏Docker و‏nginx وشهادة ‏TLS مُهيَّأة مسبقاً. أضف `act_runner` وستعمل ‏pipelines على بنيتك التحتية من الساعة الأولى.","‏نشر Gitea","\u002Fmarketplace\u002Fالتطوير\u002Fgitea",[168,188,203],{"id":169,"slug":170,"slugs":171,"title":174,"excerpt":175,"readTime":176,"views":15,"isPinned":16,"publishedAt":177,"category":178,"categories":184,"featuredImage":25,"bgImage":26,"posterImage":186,"relatedSolution":187},74,"استضافة-gitea-على-خادم-vps-الخاص-بك",{"fr":172,"en":173,"ar":170},"heberger-gitea","host-gitea-on-your-own-vps","استضافة Gitea على خادم VPS الخاص بك","انشُر Gitea على خادم VPS مع Docker وreverse proxy وSSL. منصة Git خفيفة وسريعة وتحت سيطرتك بنسبة 100%.",4,"2026-04-07T00:00:00+00:00",{"id":179,"name":180,"slug":181,"color":182,"icon":183},7,"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[185],{"id":179,"name":180,"slug":181,"color":182,"icon":183},"\u002Fblog\u002Fcovers\u002Fheberger-gitea-poster.svg",{"categorySlug":29,"appSlug":30},{"id":189,"slug":190,"slugs":191,"title":194,"excerpt":195,"readTime":196,"views":197,"isPinned":16,"publishedAt":198,"category":199,"categories":200,"featuredImage":25,"bgImage":26,"posterImage":202,"relatedSolution":25},75,"استضافة-forgejo-على-خادم-vps-الخاص-بك",{"fr":192,"en":193,"ar":190},"heberger-forgejo","host-forgejo-on-your-own-vps","استضافة ‎Forgejo‎ على خادم VPS: دليل شامل 2025","انشر ‎Forgejo‎ على خادم ‎VPS‎ باستخدام ‎Docker‎ و‎SSL‎ و‎Actions runners‎ مع تأمين متقدم. دليل خطوة بخطوة لإقامة مخزن ‎Git‎ مستقل.",10,1,"2026-04-06T00:00:00+00:00",{"id":179,"name":180,"slug":181,"color":182,"icon":183},[201],{"id":179,"name":180,"slug":181,"color":182,"icon":183},"\u002Fblog\u002Fcovers\u002Fheberger-forgejo-poster.svg",{"id":204,"slug":205,"slugs":206,"title":209,"excerpt":210,"readTime":176,"views":197,"isPinned":16,"publishedAt":211,"category":212,"categories":213,"featuredImage":25,"bgImage":26,"posterImage":215,"relatedSolution":25},212,"woodpecker-ci-وforgejo-خط-أنابيب-cicd-على-خادم-vps",{"fr":207,"en":208,"ar":205},"woodpecker-ci-pipeline-vps-forgejo","woodpecker-ci-and-forgejo-cicd-pipeline-on-a-vps","Woodpecker CI وForgejo: خط أنابيب CI\u002FCD على خادم VPS","انشر Woodpecker CI مع Forgejo على خادم VPS لخط أنابيب CI\u002FCD مفتوح المصدر، مستضاف ذاتيًا وخفيف وسيادي. دليل Docker خطوة بخطوة.","2026-08-02T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":21},[214],{"id":19,"name":20,"slug":21,"color":22,"icon":21},"\u002Fblog\u002Fcovers\u002Fwoodpecker-ci-pipeline-vps-forgejo-poster.svg",1787580961882]