[{"data":1,"prerenderedAt":163},["ShallowReactive",2],{"seo-verification":3,"blog-نقل-مستودعات-github-إلى-gitea-على-خادم-vps-خاص-ma-ar":6,"promo-bar-likely":162},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-نقل-مستودعات-github-إلى-gitea-على-خادم-vps-خاص-ma-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":99,"ctaBody":100,"ctaButton":101,"ctaUrl":102,"relatedPosts":103},279,"نقل-مستودعات-github-إلى-gitea-على-خادم-vps-خاص",{"fr":12,"en":13,"ar":10,"es":14},"migrer-depots-github-vers-gitea-vps","migrate-your-github-repos-to-self-hosted-gitea-on-a-vps","migrar-repositorios-github-a-gitea-en-un-vps","نقل مستودعات GitHub إلى Gitea على خادم VPS خاص","صدِّر مستوداتك والمشكلات والتسميات عبر واجهة برمجة GitHub، واستوردها إلى Gitea في أقل من ساعة، وحدِّث عناوين الاستضافة المحلية — دون فقدان السجل ودون الاعتماد على خدمة SaaS.",8,1,false,"2026-08-18T00:00:00+00:00","2026-11-04T16:30:27+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},3,"النشر","deploiement","bg-success\u002F10 text-success",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fmigrer-depots-github-vers-gitea-vps-poster.svg",{"categorySlug":33,"appSlug":34},"التطوير","gitea","دفعت الانقطاعات المتكررة لـ ‪GitHub‬ في أغسطس 2026 وارتفاع تكاليف ‪GitHub Actions‬ آلاف الفِرق إلى البحث عن مخرج عملي. يعمل ‪Gitea‬ على خادم ‪VPS‬ بملف تنفيذي واحد، ويوفر واجهة برمجة متوافقة ومشغِّل ‪CI‬ أصلياً. يأخذك هذا الدليل من تصدير ‪GitHub‬ حتى أول `git push` على منصتك الخاصة في أقل من ساعة.",[37,41,51,54,76,79,82,85,96],{"type":38,"title":39,"body":40},"h2","لماذا الانتقال من GitHub إلى منصة استضافة ذاتية","يبقى ‪GitHub‬ المرجع الرئيسي، لكن ثلاثة اتجاهات تقاطعت في 2026 لتجعل الانتقال واقعاً لا مجرد فكرة.\n\nأولاً: الانقطاعات. وثَّق موقع \u003Ca href=\"https:\u002F\u002Fwww.githubstatus.com\">githubstatus.com\u003C\u002Fa> عدة حوادث أثّرت في عمليات ‪Git‬ و‪Actions‬ في أغسطس 2026. وصل خيط ‪Hacker News‬ « ‪Alternatives to GitHub‬ » إلى 472 نقطة و299 تعليقاً في ‪2026-08-17‬، دليلٌ على أن السؤال لم يعد نظرياً.\n\nثانياً: تكلفة دقائق ‪CI‬. ‪GitHub Actions‬ مجاني حتى حصة شهرية معينة على المستودعات العامة، لكن أي فريق يتجاوز هذه الحصة في المستودعات الخاصة يدفع بالدقيقة. التفاصيل متاحة على \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpricing\">github.com\u002Fpricing\u003C\u002Fa>.\n\nثالثاً: السيادة على الكود. تُفضِّل بعض الفِرق أن يكون الوصول الوحيد إلى مستوداتها عبر صلاحية ‪root‬ على خادمها الخاص، لا عبر رمز ‪SaaS‬ قابل للإلغاء في أي وقت.",{"type":42,"title":43,"items":44},"ul","ما يقدمه Gitea المستضاف ذاتياً على أرض الواقع",[45,46,47,48,49,50],"**الحفاظ على السجل الكامل**: يستهلك استيراد ‪Gitea‬ أرشيف ‪tar.gz‬ من ‪GitHub‬ — الإيداعات والفروع والعلامات سليمة.","**نقل المشكلات والتسميات**: تنقل نقطة النهاية `POST \u002Fapi\u002Fv1\u002Frepos\u002Fmigrate` المشكلاتِ والمراحلَ والتسمياتِ في مرور واحد.","**مشغِّل CI أصلي**: يفهم ‪gitea-runner‬ صيغة سير عمل ‪GitHub Actions‬ — تعمل معظم خطوط الأنابيب دون إعادة كتابة.","**تكلفة يمكن التنبؤ بها**: يكفي خادم ‪VPS‬ بمعالج افتراضي واحد و‪1 GB‬ لفريق صغير؛ البرنامج مفتوح المصدر.","**Webhooks متوافقة**: تعرض ‪Gitea‬ الأحداث ذاتها مثل ‪GitHub‬ — تبقى تكاملات الأطراف الثالثة مرتبطة دون تعديل.","**رمز API محلي**: تُدار الصلاحيات في واجهتك الخاصة، لا عند طرف ثالث.",{"type":38,"title":52,"body":53},"المتطلبات الأساسية","قبل البدء، اجمع العناصر التالية.\n\n**جانب ‏GitHub**: رمز وصول شخصي (`Settings → Developer settings → Personal access tokens`) بصلاحيتَي `repo` و`read:org`.\n\n**جانب ‏Gitea**: نسخة ‪Gitea‬ مثبَّتة مسبقاً ورمز مشرف (`gitea-admin → Settings → Applications → Generate Token`). دوِّن عنوان قاعدتك `https:\u002F\u002Fgit.your-domain.com`.\n\n**الجهاز المحلي**: `git` الإصدار 2.x و`curl` و`jq` مثبَّتة. خصِّص ذاكرة وصول عشوائي لا تقل عن **‪1 GB‬** على خادم ‪VPS‬.",{"type":55,"title":56,"steps":57},"steps","الهجرة خطوة بخطوة",[58,61,64,67,70,73],{"title":59,"body":60},"إنشاء المنظمة في Gitea","في واجهة ‪Gitea‬، اذهب إلى **`+` → ‪New Organization‬** واختر اسماً مطابقاً لمنظمتك في ‪GitHub‬.\n\nأو عبر واجهة البرمجة:\n```bash\ncurl -s -X POST https:\u002F\u002Fgit.your-domain.com\u002Fapi\u002Fv1\u002Forgs \\\n  -H \"Authorization: token YOUR_GITEA_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"username\":\"my-org\",\"visibility\":\"private\"}'\n```",{"title":62,"body":63},"استعراض مستودعات GitHub وتصديرها","```bash\ncurl -s -H \"Authorization: token YOUR_GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Forgs\u002FMY_ORG\u002Frepos?per_page=100&page=1\" \\\n  | jq -r '.[].name' > repos.txt\n```",{"title":65,"body":66},"استيراد كل مستودع عبر واجهة Gitea البرمجية","```bash\nwhile IFS= read -r REPO; do\n  curl -s -X POST https:\u002F\u002Fgit.your-domain.com\u002Fapi\u002Fv1\u002Frepos\u002Fmigrate \\\n    -H \"Authorization: token YOUR_GITEA_TOKEN\" \\\n    -H \"Content-Type: application\u002Fjson\" \\\n    -d \"{\\\"clone_addr\\\": \\\"https:\u002F\u002Fgithub.com\u002FMY_ORG\u002F$REPO\\\", \\\"auth_token\\\": \\\"YOUR_GITHUB_TOKEN\\\", \\\"uid\\\": 2, \\\"repo_name\\\": \\\"$REPO\\\", \\\"issues\\\": true, \\\"labels\\\": true, \\\"milestones\\\": true, \\\"mirror\\\": false}\"\ndone \u003C repos.txt\n```",{"title":68,"body":69},"تحديث عناوين الاستضافة المحلية","```bash\ngit remote set-url origin https:\u002F\u002Fgit.your-domain.com\u002Fmy-org\u002Fmy-repo.git\n```\nأو عبر SSH:\n```bash\ngit remote set-url origin git@git.your-domain.com:my-org\u002Fmy-repo.git\n```\nتحقق بـ `git remote -v`، ثم اختبر بـ `git fetch`.",{"title":71,"body":72},"تحديث Webhooks","في ‪Gitea‬، لكل مستودع: **‪Settings → Webhooks → Add Webhook‬**. الصق عنوان ‪URL‬ لخدمة ‪CI‬ أو الطرف الثالث، مستبدلاً `github.com` بـ `git.your-domain.com`.",{"title":74,"body":75},"نقل خط أنابيب CI إلى gitea-runner","```bash\nwget -O gitea-runner https:\u002F\u002Fdl.gitea.com\u002Fact_runner\u002Flatest\u002Fact_runner-latest-linux-amd64\nchmod +x gitea-runner\n.\u002Fgitea-runner register --no-interactive \\\n  --instance https:\u002F\u002Fgit.your-domain.com \\\n  --token YOUR_RUNNER_TOKEN \\\n  --name vps-runner \\\n  --labels ubuntu-latest:docker:\u002F\u002Fnode:20-bullseye\n.\u002Fgitea-runner daemon &\n```\nأعد تسمية `.github\u002Fworkflows\u002F` إلى `.gitea\u002Fworkflows\u002F` للاستخدام المسار الأصلي لـ ‪Gitea‬.",{"type":38,"title":77,"body":78},"التحقق بعد الهجرة","بعد اكتمال الهجرة، تحقق من ثلاث نقاط قبل إلغاء الوصول إلى ‪GitHub‬.\n\n**الاستنساخ عبر SSH**: يجب أن يُتمَّ `git clone git@git.your-domain.com:my-org\u002Fmy-repo.git` دون طلب كلمة مرور.\n\n**Webhooks النشطة**: في كل مستودع، افتح **‪Settings → Webhooks‬** وانقر **‪Test Delivery‬**. الكود `200` يؤكد أن ‪CI‬ تستقبل الأحداث.\n\n**السجل سليم**: يجب أن يعرض `git log --oneline -10` الإيداعاتِ العشر الأخيرة بالترتيب نفسه الموجود في ‪GitHub‬.",{"type":80,"body":81},"tip","إن كنت تنقل عشرات المستودعات، شغّل استدعاءات `curl` للاستيراد بصورة متوازية باستخدام `xargs -P 4` لتقليص وقت الانتظار الإجمالي إلى ربعه. تتعامل ‪Gitea‬ مع الاستيرادات المتزامنة دون فقدان بيانات.",{"type":38,"title":83,"body":84},"الأخطاء الشائعة وحلولها","إليك الحالات الثلاث الأكثر تكراراً أثناء الهجرة.",{"type":55,"title":29,"steps":86},[87,90,93],{"title":88,"body":89},"SSH: `Permission denied (publickey)`","العَرَض: يفشل `git clone git@git.your-domain.com:…` بخطأ `Permission denied (publickey)`.\n\nالتحقق: في ‪Gitea‬، **‪Settings → SSH \u002F GPG Keys‬** — يجب أن يظهر المفتاح العام الذي تستخدمه. أضفه إن لم يكن موجوداً.",{"title":91,"body":92},"Remote: `fatal: repository not found`","العَرَض: يُعيد `git fetch` رسالة `fatal: repository not found`.\n\nالتشخيص: `git remote -v` — تأكد أن العنوان يشير إلى نسخة ‪Gitea‬ لا إلى `github.com`.",{"title":94,"body":95},"Webhooks صامتة بعد الهجرة","العَرَض: لا يُشغِّل `git push` أي بناء في خدمة ‪CI‬.\n\nالتشخيص: في ‪Gitea‬، **‪Settings → Webhooks → last delivery‬**: يعرض حقل «‪Response‬» كود ‪HTTP‬ الذي أعادته خدمة ‪CI‬. `404` يعني مسار غير موجود؛ `401` يعني سر ‪HMAC‬ غير صحيح.",{"type":38,"title":97,"body":98},"استضافة Gitea على خادم VPS من ServOrbit","تعمل ‪Gitea‬ بكفاءة على خادم ‪VPS‬ بـ **معالج افتراضي واحد و‪1 GB‬ ذاكرة** لفريق صغير. انشر قالب ‪Gitea‬ من ‪Marketplace‬، اختر نظام التشغيل وحجم خادم ‪VPS‬، وستحصل على نسخة مُعدَّة في دقائق. خطط VPS تبدأ من 99 درهم\u002Fشهر.","منصتك الخاصة لاستضافة Git على خادم VPS","خادم VPS بصلاحية root وعنوان IPv4 مخصص وخيار في نظام التشغيل: الأساس لاستضافة Gitea دون الاعتماد على SaaS.","تفعيل Gitea على خادم VPS","\u002Fapplications\u002Fالتطوير\u002Fgitea",[104,126,146],{"id":105,"slug":106,"slugs":107,"title":111,"excerpt":112,"readTime":113,"views":114,"isPinned":19,"noindex":19,"publishedAt":115,"updatedAt":116,"category":117,"categories":123,"featuredImage":29,"bgImage":30,"posterImage":125,"relatedSolution":29},75,"استضافة-forgejo-على-خادم-vps-الخاص-بك",{"fr":108,"en":109,"ar":106,"es":110},"heberger-forgejo","host-forgejo-on-your-own-vps","alojar-forgejo-en-un-vps","استضافة ‎Forgejo‎ على خادم VPS: دليل شامل 2025","انشر ‎Forgejo‎ على خادم ‎VPS‎ باستخدام ‎Docker‎ و‎SSL‎ و‎Actions runners‎ مع تأمين متقدم. دليل خطوة بخطوة لإقامة مخزن ‎Git‎ مستقل.",10,9,"2026-04-06T00:00:00+00:00","2026-11-08T01:13:14+00:00",{"id":118,"name":119,"slug":120,"color":121,"icon":122},7,"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[124],{"id":118,"name":119,"slug":120,"color":121,"icon":122},"\u002Fblog\u002Fcovers\u002Fheberger-forgejo-poster.svg",{"id":127,"slug":128,"slugs":129,"title":133,"excerpt":134,"readTime":135,"views":136,"isPinned":19,"noindex":19,"publishedAt":137,"updatedAt":138,"category":139,"categories":143,"featuredImage":29,"bgImage":30,"posterImage":145,"relatedSolution":29},212,"woodpecker-ci-وforgejo-خط-أنابيب-cicd-على-خادم-vps",{"fr":130,"en":131,"ar":128,"es":132},"woodpecker-ci-pipeline-vps-forgejo","woodpecker-ci-and-forgejo-cicd-pipeline-on-a-vps","woodpecker-ci-forgejo-pipeline-cicd-vps","Woodpecker CI وForgejo: خط أنابيب CI\u002FCD على خادم VPS","نشر Woodpecker CI v3 مع Forgejo على خادم VPS: إعداد Docker Compose، تكوين YAML، الأسرار، أجهزة التشغيل متعددة المعماريات واستكشاف أخطاء OAuth.",12,2,"2026-08-02T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":136,"name":140,"slug":141,"color":142,"icon":141},"الأتمتة","automatisation","bg-brand-action\u002F10 text-brand-action",[144],{"id":136,"name":140,"slug":141,"color":142,"icon":141},"\u002Fblog\u002Fcovers\u002Fwoodpecker-ci-pipeline-vps-forgejo-poster.svg",{"id":147,"slug":148,"slugs":149,"title":153,"excerpt":154,"readTime":155,"views":18,"isPinned":19,"noindex":19,"publishedAt":156,"updatedAt":21,"category":157,"categories":158,"featuredImage":29,"bgImage":30,"posterImage":160,"relatedSolution":161},273,"gitea-وforgejo-بديل-github-actions-المدفوع-على-vps",{"fr":150,"en":151,"ar":148,"es":152},"github-actions-payant-migrer-ci-cd-gitea-forgejo-vps","migrate-cicd-to-gitea-or-forgejo-leave-github-actions","migrar-cicd-a-gitea-o-forgejo-sin-github-actions","‏Gitea وForgejo: بديل ‏GitHub Actions المدفوع على ‏VPS","‏منذ مارس 2026، بات ‏GitHub يفوتر دقائق ‏CI على المستودعات الخاصة. نقل ‏runner إلى ‏VPS مع ‏Gitea أو ‏Forgejo Actions يُلغي هذه التكلفة دون إعادة كتابة ملفات ‏YAML.",11,"2026-08-16T00:00:00+00:00",{"id":136,"name":140,"slug":141,"color":142,"icon":141},[159],{"id":136,"name":140,"slug":141,"color":142,"icon":141},"\u002Fblog\u002Fcovers\u002Fgithub-actions-payant-migrer-ci-cd-gitea-forgejo-vps-poster.svg",{"categorySlug":33,"appSlug":34},true,1794270321166]