[{"data":1,"prerenderedAt":226},["ShallowReactive",2],{"seo-verification":3,"blog-الانتقال-من-gitlab-إلى-gitea-على-vps-في-2026-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-الانتقال-من-gitlab-إلى-gitea-على-vps-في-2026-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":35,"sections":36,"ctaTitle":158,"ctaBody":159,"ctaButton":160,"ctaUrl":161,"relatedPosts":162},352,"الانتقال-من-gitlab-إلى-gitea-على-vps-في-2026",{"fr":12,"en":13,"ar":10,"es":14},"migrer-gitlab-vers-gitea-vps-2026","migrate-gitlab-to-gitea-vps-2026","migrar-gitlab-a-gitea-en-un-vps-en-2026","الانتقال من ‎GitLab إلى ‎Gitea على ‎VPS في 2026","فرضت ‎GitLab.com وضع القراءة فقط على المساحات التي تضم أكثر من 5 أعضاء منذ 15 أغسطس 2026. إليك كيفية الانتقال إلى ‎Gitea باستضافة ذاتية دون فقدان السجل.",10,0,false,"2026-09-16T00:00:00+00:00","2026-09-16T14:44:13+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},4,"التطوير","developpement","bg-warning\u002F10 text-warning","dev",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fmigrer-gitlab-vers-gitea-vps-2026-poster.svg",{"categorySlug":24,"appSlug":34},"gitea","منذ 15 أغسطس 2026، طبّقت ‎GitLab.com وضع القراءة فقط على المساحات التي تضم أكثر من خمسة أعضاء في الخطط المجانية. بالنسبة للكثير من الفرق، هذا يعني الهجرة القسرية — وفرصة لاستعادة السيطرة. يوفر ‎Gitea بإصداره ‎1.27.3 المتاح كقالب ‎VPS على ‎ServOrbit بديلاً خفيف الوزن ومستضافاً ذاتياً يغطي معظم احتياجات فرق التطوير متوسطة الحجم. يشرح هذا الدليل تصدير ‎GitLab واستيراد ‎Gitea وإعداد ‎CI\u002FCD وإدارة الأذونات مع أوامر حقيقية في كل خطوة.",[37,41,53,56,96,121,142,145,148,151,155],{"type":38,"title":39,"body":40},"h2","لماذا أصبحت ‎GitLab.com لا تُحتمل للفرق التي تضم 5 أشخاص أو أكثر","في 15 أغسطس 2026، طبّقت ‎GitLab سياسة جديدة على خطتها المجانية: تُوضع أي مساحة تضم أكثر من خمسة أعضاء تلقائياً في وضع القراءة فقط (المصدر: ‎support.gitlab.com\u002Fhc\u002Fen-us\u002Farticles\u002F28301407860508). من الناحية العملية، لم يعد بإمكان المطورين الإضافيين دفع الكود، أو فتح طلبات الدمج، أو تشغيل خطوط ‎CI\u002FCD. الحل الوحيد الذي تقترحه ‎GitLab هو الاشتراك المدفوع، الذي يصبح تكلفته الكبيرة لكل مقعد مرهقة سريعاً للشركات الناشئة أو الوكالات.\n\nيأتي هذا القرار في سياق تسريع أشمل لتحقيق الإيرادات من المنصة. يؤثر بشكل خاص على فرق المصادر المفتوحة ذات الميزانية المحدودة والوكالات متعددة المشاريع والمطورين المستقلين الذين يشتركون في مساحة واحدة. وليس هذا القيد الأول من نوعه: أزالت ‎GitLab بالفعل دقائق ‎CI\u002FCD المجانية للمستخدمين الجدد عام 2021. الاتجاه هيكلي.\n\nأمام هذا القيد، يستعيد استضافة منصة ‎Git الذاتية على ‎VPS كل منطقه. أنت تتحكم في الوصول، تبقى البيانات على بنيتك التحتية، والتكلفة ثابتة — تكلفة الخادم وليس تكلفة المقاعد.",{"type":42,"title":43,"items":44},"ul","ما يوفره ‎Gitea بشكل أصلي",[45,46,47,48,49,50,51,52],"**منصة ‎Git متكاملة** — مستودعات وفروع وعلامات وطلبات سحب ومراجعة الكود المضمّنة وإدارة التعارضات عبر واجهة الويب.","**إدارة المؤسسات والفرق** — أذونات دقيقة لكل مستودع (قراءة وكتابة وإدارة) دون حدود للأعضاء.","**‎Gitea Actions** — محرك ‎CI\u002FCD متوافق مع صياغة ‎YAML لـ‎GitHub Actions، مما يسهّل نقل سير العمل الحالية.","**سجل حزم مدمج** — ‎npm وPyPI وMaven وDocker وHelm: انشر الحزم واستهلكها دون اعتماد خارجي.","**‎Webhooks وواجهة برمجية ‎REST** — سطح واجهة برمجية واسع لدمج أدوات النشر وإشعارات ‎Slack ولوحات التحكم الداخلية.","**مصادقة ‎SSO** — دعم ‎LDAP وOAuth2 وSAML وOpenID Connect بشكل أصلي لمركزة إدارة الهوية.","**استهلاك ذاكرة منخفض** — تكفي ذاكرة 512 ميغابايت لفريق مكوّن من عشرة أشخاص؛ يُوصى بـ 1 جيجابايت لتشغيل عدة ‎runners متزامنة.","**تحديثات بسيطة** — ملف تنفيذي واحد أو صورة ‎Docker رسمية، وترحيل قاعدة البيانات تلقائياً عند كل تحديث للإصدار.",{"type":38,"title":54,"body":55},"المتطلبات الأساسية قبل البدء","على جانب الخادم، يعمل ‎Gitea v1.27.3 بشكل مريح مع ذاكرة 512 ميغابايت للاستخدام الأدنى؛ خطط لـ 1 جيجابايت إذا قمت بتفعيل ‎Gitea Actions مع ‎runners متزامنة. ينطلق قالب ‎VPS من ‎ServOrbit من صورة ‎Debian 12 مع تثبيت ‎Docker مسبقاً — هذا هو وضع النشر الموصى به لأنه يعزل عملية ‎Gitea ويبسّط التحديثات.\n\nعلى جانب الشبكة، أشر نطاقاً فرعياً إلى عنوان ‎IP الخاص بـ‎VPS قبل بدء التثبيت: يُنشئ ‎Gitea عناوين ‎URL للاستنساخ عبر ‎SSH وHTTPS عند أول تشغيل، ومن الصعب تصحيحها لاحقاً. يكفي سجل ‎A واحد `‎git.your-domain.com`. ستحتاج أيضاً إلى شهادة ‎TLS — يمكن لـ‎Caddy أو ‎Traefik توليدها تلقائياً عبر ‎Let's Encrypt كـ‎proxy أمامي لـ‎Gitea.\n\nعلى ‎GitLab.com، تأكد من امتلاكك صلاحيات ‎Owner على المجموعات أو المشاريع المراد ترحيلها: يتطلب التصدير هذا المستوى من الوصول. أنشئ ‎token API شخصياً مع نطاقات `‎api` و`‎read_repository` — سيُستخدم خلال التصدير عبر ‎API.",{"type":57,"title":58,"rows":59,"headers":92},"comparison","‎GitLab مقابل ‎Gitea — المعايير الرئيسية",[60,64,68,72,76,80,84,88],[61,62,63],"حد الأعضاء (مجاني ‎SaaS)","5 أعضاء (قراءة فقط ما يزيد منذ أغسطس 2026)","غير محدود عند الاستضافة الذاتية",[65,66,67],"الحد الأدنى من الذاكرة","4 جيجابايت (‎GitLab CE ذاتي الاستضافة)","512 ميغابايت",[69,70,71],"‎CI\u002FCD مدمج","‎GitLab CI (‎YAML)","‎Gitea Actions (صياغة ‎GitHub Actions)",[73,74,75],"سجل الحاويات","نعم (‎GitLab Container Registry)","نعم (‎Gitea Packages — ‎Docker مضمّن)",[77,78,79],"إدارة طلبات الدمج\u002Fالسحب","‎Merge Requests متقدمة","‎Pull Requests مع مراجعة كود مضمّنة",[81,82,83],"مصادقة ‎SSO","‎SAML وLDAP وOAuth2","‎LDAP وOAuth2 وSAML وOIDC",[85,86,87],"الاستيراد من ‎GitLab","غير متاح","استيراد أصلي عبر ‎API أو أرشيف ‎.tar.gz",[89,90,91],"تكلفة التشغيل","29 دولاراً\u002Fمستخدم\u002Fشهر (‎Premium)","تكلفة ‎VPS فقط (99 درهم\u002Fشهر\u002Fشهر)",[93,94,95],"‏المعيار","‏GitLab.com Free","‏Gitea VPS",{"type":97,"title":98,"steps":99},"steps","إعداد تصدير ‎GitLab",[100,103,106,109,112,115,118],{"title":101,"body":102},"سجّل الدخول إلى ‎GitLab.com وانتقل إلى المشروع الم","سجّل الدخول إلى ‎GitLab.com وانتقل إلى المشروع المراد تصديره: **‎Settings > General > Advanced > Export project**. انقر على '‎Export project' وانتظر بريد التأكيد (بضع دقائق للمستودعات الصغيرة، وحتى ساعة للكبيرة منها).",{"title":104,"body":105},"للتصدير عبر ‎API دون استخدام الواجهة، شغّل التصدير بـ:","للتصدير عبر ‎API دون استخدام الواجهة، شغّل التصدير بـ: `curl --request POST --header \"PRIVATE-TOKEN: \u003Cyour-token>\" \"https:\u002F\u002Fgitlab.com\u002Fapi\u002Fv4\u002Fprojects\u002F\u003Cproject-id>\u002Fexport\"`",{"title":107,"body":108},"تحقق من حالة التصدير بـ:","تحقق من حالة التصدير بـ: `curl --header \"PRIVATE-TOKEN: \u003Cyour-token>\" \"https:\u002F\u002Fgitlab.com\u002Fapi\u002Fv4\u002Fprojects\u002F\u003Cproject-id>\u002Fexport\"` — انتظر حتى الحالة `finished`.",{"title":110,"body":111},"حمّل أرشيف التصدير:","حمّل أرشيف التصدير: `curl --location --header \"PRIVATE-TOKEN: \u003Cyour-token>\" \"https:\u002F\u002Fgitlab.com\u002Fapi\u002Fv4\u002Fprojects\u002F\u003Cproject-id>\u002Fexport\u002Fdownload\" --output gitlab-export.tar.gz`",{"title":113,"body":114},"لنقل سجل ‎Git الكامل، استنسخ المستودع بجميع المراجع:","لنقل سجل ‎Git الكامل، استنسخ المستودع بجميع المراجع: `git clone --mirror git@gitlab.com:your-group\u002Fyour-project.git your-project.git`",{"title":116,"body":117},"تحقق من سلامة النسخة المرآة قبل النقل:","تحقق من سلامة النسخة المرآة قبل النقل: `git -C your-project.git fsck --no-progress` — لا ينبغي أن تظهر أي أخطاء.",{"title":119,"body":120},"انقل الأرشيف والمستودع المرآة إلى ‎VPS الخاص بك:","انقل الأرشيف والمستودع المرآة إلى ‎VPS الخاص بك: `rsync -avz gitlab-export.tar.gz your-project.git user@your-vps:\u002Ftmp\u002Fmigration\u002F`",{"type":97,"title":122,"steps":123},"الاستيراد إلى ‎Gitea على ‎VPS",[124,127,130,133,136,139],{"title":125,"body":126},"على ‎VPS الخاص بك، أنشئ المؤسسة المستهدفة في ‎Gitea عبر واجه","على ‎VPS الخاص بك، أنشئ المؤسسة المستهدفة في ‎Gitea عبر واجهة الويب أو عبر ‎API: `curl -X POST \"https:\u002F\u002Fgit.your-domain.com\u002Fapi\u002Fv1\u002Forgs\" -H \"Authorization: token \u003Cgitea-token>\" -H \"Content-Type: application\u002Fjson\" -d '{\"username\":\"my-organisation\",\"visibility\":\"private\"}'`",{"title":128,"body":129},"أنشئ المستودع الفارغ في ‎Gitea قبل الاستيراد:","أنشئ المستودع الفارغ في ‎Gitea قبل الاستيراد: `curl -X POST \"https:\u002F\u002Fgit.your-domain.com\u002Fapi\u002Fv1\u002Forgs\u002Fmy-organisation\u002Frepos\" -H \"Authorization: token \u003Cgitea-token>\" -H \"Content-Type: application\u002Fjson\" -d '{\"name\":\"my-project\",\"private\":true}'`",{"title":131,"body":132},"ادفع سجل ‎Git من النسخة المرآة:","ادفع سجل ‎Git من النسخة المرآة: `git -C your-project.git remote set-url origin https:\u002F\u002Fgit.your-domain.com\u002Fmy-organisation\u002Fmy-project.git` ثم `git -C your-project.git push --mirror`",{"title":134,"body":135},"لاستيراد ‎issues وطلبات الدمج من أرشيف ‎GitLab، استخدم أداة","لاستيراد ‎issues وطلبات الدمج من أرشيف ‎GitLab، استخدم أداة `‎gitea-migrator` أو الاستيراد الأصلي في ‎Gitea: في الواجهة، **‎+ New Migration > GitLab** وأدخل عنوان ‎URL المشروع المصدر مع ‎token الخاص بـ‎GitLab.",{"title":137,"body":138},"تحقق من وجود جميع الفروع والعلامات:","تحقق من وجود جميع الفروع والعلامات: `git ls-remote https:\u002F\u002Fgit.your-domain.com\u002Fmy-organisation\u002Fmy-project.git` ينبغي أن يُظهر نفس المراجع الموجودة في المصدر.",{"title":140,"body":141},"حدّث عناوين ‎URL للاستنساخ في إعدادات كل مطور محلياً:","حدّث عناوين ‎URL للاستنساخ في إعدادات كل مطور محلياً: `git remote set-url origin https:\u002F\u002Fgit.your-domain.com\u002Fmy-organisation\u002Fmy-project.git`",{"type":38,"title":143,"body":144},"إعداد ‎CI\u002FCD في ‎Gitea","يتضمن ‎Gitea v1.27.3 ميزة ‎Gitea Actions، وهو محرك ‎CI\u002FCD صياغة ‎YAML الخاصة به متوافقة عمداً مع ‎GitHub Actions. إذا كانت خطوط الأنابيب موجودة على ‎GitLab CI، يلزم بعض التكيّف — تترجم مراحل `stages` وأوامر `script` في ‎GitLab إلى `jobs` و`steps` في ‎Gitea Actions — لكن المنطق يبقى نفسه.\n\nلتفعيل الـ‎runners، ثبّت `‎act_runner` على ‎VPS الخاص بك أو على جهاز مخصص: `act_runner register --no-interactive --instance https:\u002F\u002Fgit.your-domain.com --token \u003Crunner-token> --name my-runner --labels ubuntu-latest:docker:\u002F\u002Fnode:20-bullseye`. يوجد ‎token التسجيل في **‎Site Administration > Runners**.\n\nإذا كنت تفضل نهج ‎CI\u002FCD أكثر انفصالاً، فإن ‎Woodpecker CI هو بديل ناضج يتكامل أصلياً مع ‎Gitea عبر ‎OAuth2 ويوفر واجهة لمراقبة ‎builds. ملف ‎pipeline الخاص به `‎.woodpecker.yml` قريب أيضاً من صياغة ‎Drone CI، مما يبسّط الهجرة من ‎stacks أقدم.",{"type":38,"title":146,"body":147},"ترحيل أعضاء الفريق والأذونات","ينظّم ‎Gitea الوصول على ثلاثة مستويات: المؤسسات (مكافئة لمجموعات ‎GitLab)، والفرق داخل المؤسسة، والأذونات لكل مستودع. ابدأ بإنشاء جميع حسابات المستخدمين — إما يدوياً أو بتفعيل التسجيل التلقائي مؤقتاً أو عبر ‎LDAP\u002FSSO إذا كان متاحاً بالفعل.\n\nأنشئ بعد ذلك الفرق في مؤسستك: تتوافق `Owners` و`Developers` و`Reporters` مع أدوار ‎Owner وDeveloper وReporter في ‎GitLab. يتيح ‎Gitea تحسين الأذونات لكل مستودع داخل نفس الفريق — يمكن لمجموعة فرعية من الأعضاء الحصول على صلاحية الكتابة لمستودعات محددة فقط.\n\nلترحيل العضويات دفعةً واحدة، تقبل ‎API لـ‎Gitea طلبات من هذا النوع: `curl -X PUT \"https:\u002F\u002Fgit.your-domain.com\u002Fapi\u002Fv1\u002Forgs\u002Fmy-organisation\u002Fteams\u002F\u003Cteam-id>\u002Fmembers\u002F\u003Cusername>\" -H \"Authorization: token \u003Cgitea-token>\"`. يكفي سكريبت ‎shell يمر عبر قائمة المستخدمين المُصدَّرة من ‎GitLab لأتمتة هذه الخطوة للفرق التي تقل عن خمسين شخصاً.",{"type":38,"title":149,"body":150},"استكشاف الأخطاء — الأخطاء الأربعة الأكثر شيوعاً","**`remote: repository not found` أثناء دفع المرآة.** المستودع المستهدف غير موجود بعد في ‎Gitea، أو أن ‎token المستخدم لا يملك صلاحيات الكتابة. تحقق من إنشاء المستودع (الخطوة 2 من الاستيراد) ومن أن ‎token الخاص بك يملك نطاق `write:repository`.\n\n**`error: src refspec refs\u002Fmerge-requests\u002F... does not match any`** أثناء `push --mirror`. المراجع الداخلية لـ‎GitLab (‎`refs\u002Fmerge-requests\u002F`) غير مقبولة في ‎Gitea. قم بتصفيتها صراحةً قبل الدفع: احذف المراجع الطفيلية محلياً بـ `git -C your-project.git for-each-ref --format='%(refname)' refs\u002Fmerge-requests | xargs -I{} git update-ref -d {}`.\n\n**`Error 413: Request Entity Too Large`** عند استيراد أرشيف كبير. الحد الأقصى لحجم الرفع مُهيَّأ في `app.ini` الخاص بـ‎Gitea تحت المفتاح `MAX_UPLOAD_SIZE`. قم بزيادته (`MAX_UPLOAD_SIZE = 2048` لـ 2 جيجابايت) وأعد تشغيل الخدمة: `docker compose restart gitea`.\n\n**الـ‎issues المستوردة لا تُظهر المؤلفين الصحيحين.** يربط ‎Gitea الـ‎issues بالحسابات المحلية من خلال اسم المستخدم. إذا اختلف اسم مستخدم ‎GitLab عن اسم مستخدم ‎Gitea، تُنسب الـ‎issues إلى المستخدم الذي شغّل الاستيراد. أنشئ جميع الحسابات بنفس أسماء المستخدمين الموجودة على ‎GitLab قبل تشغيل ترحيل الـ‎issues.",{"type":152,"title":153,"body":154},"tip","نصيحة أمنية بعد الترحيل","بمجرد اكتمال الترحيل، قم بتعطيل التسجيل التلقائي (`DISABLE_REGISTRATION = true` في `app.ini`) إذا لم تكن تستخدم ‎SSO، وفعّل المصادقة الثنائية الإلزامية لجميع أعضاء ‎Owner. كوّن أيضاً نسخاً احتياطية تلقائية لـ‎volume الـ‎Docker الذي يحتوي على `data\u002Fgitea\u002F`: يحميك تفريغ يومي إلى تخزين بعيد (‎S3 أو ‎Backblaze B2) من فقدان القرص. أخيراً، تحقق من أن منفذ ‎SSH لـ‎Gitea (2222 افتراضياً في ‎Docker) غير مكشوف مباشرة على ‎IP العام إذا كنت تُصفّي بمفتاح ‎SSH — تقلّل قاعدة ‎fail2ban أو قاعدة ‎UFW التي تحد اتصالات ‎SSH في الدقيقة بشكل كبير من سطح الهجوم.",{"type":38,"title":156,"body":157},"استعادة السيطرة على منصة ‎Git الخاصة بك","قيد ‎GitLab.com في 15 أغسطس 2026 سرّع اتجاهاً كان قائماً بالفعل: الفرق التي قبلت الاعتماد على منصة ‎SaaS مجانية تجد نفسها أمام قرار تسعيري غير متوقع. يلبّي ‎Gitea v1.27.3 الاحتياجات الأساسية لمنصة ‎Git للفريق — مستودعات وطلبات سحب و‎CI\u002FCD وسجل حزم و‎SSO — بحجم يناسب ‎VPS اقتصادي.\n\nالترحيل ليس فورياً، لكنه تسلسلي وقابل للعكس في كل خطوة: يكتمل سجل ‎Git بعد `push --mirror`، وتتبعه الـ‎issues وطلبات السحب عبر الاستيراد الأصلي، وتُعاد تهيئة ‎CI\u002FCD في بضع ساعات إذا كانت سير عملك مكتوبة بـ‎YAML بالفعل. قالب ‎VPS Gitea من ‎ServOrbit يجنّبك مرحلة التثبيت والتهيئة الأولية — ‎Gitea جاهز، ‎Docker مثبّت، ولا يبقى سوى ربط نطاقك واتباع الخطوات الموضحة هنا.","‏نشر مستودع ‏Git ‏الخاص بك على ‏VPS ‏من ‏ServOrbit","‏قالب ‏Gitea v1.27.3 ‏جاهز للاستخدام، وصول كامل، نسخ احتياطية يومية. مستودعك الخاص في أقل من عشر دقائق.","‏رؤية ‏VPS ‏المطورين","\u002Fsolutions\u002Fdeveloppeurs",[163,187,207],{"id":164,"slug":165,"slugs":166,"title":170,"excerpt":171,"readTime":172,"views":18,"isPinned":19,"publishedAt":173,"updatedAt":174,"category":175,"categories":181,"featuredImage":30,"bgImage":31,"posterImage":183,"relatedSolution":184},335,"مكدس-ذكاء-اصطناعي-ذاتي-gitea-وollama-على-خادم-vps",{"fr":167,"en":168,"ar":165,"es":169},"deployer-stack-ia-self-hosted-gitea-ollama-vps","self-hosted-ai-stack-gitea-runners-and-ollama-on-a-vps","stack-de-ia-self-hosted-gitea-runners-y-ollama-en-un-vps","مكدس ذكاء اصطناعي ذاتي: Gitea‏ و‏Ollama على خادم VPS","انشر خط أنابيب ذكاء اصطناعي متكامل على خادمك: forge Git مع Gitea وعُمَّال CI واستدلال LLM محلي باستخدام Ollama. لا يغادر أي كود أو طلب خادمك.",9,"2026-09-06T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":176,"name":177,"slug":178,"color":179,"icon":180},1,"الذكاء الاصطناعي","intelligence-artificielle","bg-purple-500\u002F10 text-purple-400","ia",[182],{"id":176,"name":177,"slug":178,"color":179,"icon":180},"\u002Fblog\u002Fcovers\u002Fdeployer-stack-ia-self-hosted-gitea-ollama-vps-poster.svg",{"categorySlug":185,"appSlug":186},"الذكاء-الاصطناعي","ollama",{"id":188,"slug":189,"slugs":190,"title":194,"excerpt":195,"readTime":196,"views":197,"isPinned":19,"publishedAt":198,"updatedAt":199,"category":200,"categories":204,"featuredImage":30,"bgImage":31,"posterImage":206,"relatedSolution":30},235,"تثبيت-gitlab-ce-على-vps-دليل-شامل",{"fr":191,"en":192,"ar":189,"es":193},"installer-gitlab-ce-vps","install-gitlab-ce-on-a-vps-complete-guide","instalar-gitlab-ce-en-un-vps-guia-completa","تثبيت GitLab CE على VPS: دليل شامل","انشر GitLab CE على VPS باستخدام Docker Compose: منصة git كاملة، CI\u002FCD مدمجة، سجل Docker خاص وإدارة مشاريع — self-hosted.",17,3,"2026-08-07T00:00:00+00:00","2026-09-11T11:34:12+00:00",{"id":197,"name":201,"slug":202,"color":203,"icon":202},"النشر","deploiement","bg-success\u002F10 text-success",[205],{"id":197,"name":201,"slug":202,"color":203,"icon":202},"\u002Fblog\u002Fcovers\u002Finstaller-gitlab-ce-vps-poster.svg",{"id":208,"slug":209,"slugs":210,"title":214,"excerpt":215,"readTime":216,"views":176,"isPinned":19,"publishedAt":217,"updatedAt":174,"category":218,"categories":223,"featuredImage":30,"bgImage":31,"posterImage":225,"relatedSolution":30},338,"استبدال-github-actions-بـwoodpecker-ci-على-vps",{"fr":211,"en":212,"ar":209,"es":213},"remplacer-github-actions-woodpecker-ci-self-hosted-vps","replace-github-actions-with-woodpecker-ci-on-a-vps","reemplazar-github-actions-con-woodpecker-ci-en-vps","استبدال ‎GitHub Actions‎ بـ‎Woodpecker CI‎ على ‎VPS","أعلن ‎GitHub‎ ثم علّق تحصيل تكاليف ‎self-hosted runners‎ على المستودعات الخاصة. انتقل إلى ‎Woodpecker CI‎ ذاتي الاستضافة: صيغة واضحة وأقل من ‎50 Mo‎ ذاكرة عشوائية.",8,"2026-09-07T00:00:00+00:00",{"id":219,"name":220,"slug":221,"color":222,"icon":221},2,"الأتمتة","automatisation","bg-brand-action\u002F10 text-brand-action",[224],{"id":219,"name":220,"slug":221,"color":222,"icon":221},"\u002Fblog\u002Fcovers\u002Fremplacer-github-actions-woodpecker-ci-self-hosted-vps-poster.svg",1789570077057]