[{"data":1,"prerenderedAt":153},["ShallowReactive",2],{"seo-verification":3,"blog-نقل-مستودعات-github-إلى-gitea-على-خادم-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":95,"ctaBody":96,"ctaButton":97,"ctaUrl":98,"relatedPosts":99},279,"نقل-مستودعات-github-إلى-gitea-على-خادم-vps-خاص",{"fr":10,"en":11,"ar":8},"migrer-depots-github-vers-gitea-vps","migrate-your-github-repos-to-self-hosted-gitea-on-a-vps","نقل مستودعات GitHub إلى Gitea على خادم VPS خاص","صدِّر مستوداتك والمشكلات والتسميات عبر واجهة برمجة GitHub، واستوردها إلى Gitea في أقل من ساعة، وحدِّث عناوين الاستضافة المحلية — دون فقدان السجل ودون الاعتماد على خدمة SaaS.",9,0,false,"2026-08-18T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":21},3,"النشر","deploiement","bg-success\u002F10 text-success",[24],{"id":19,"name":20,"slug":21,"color":22,"icon":21},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fmigrer-depots-github-vers-gitea-vps-poster.svg",{"categorySlug":29,"appSlug":30},"التطوير","gitea","دفعت الانقطاعات المتكررة لـ ‪GitHub‬ في أغسطس 2026 وارتفاع تكاليف ‪GitHub Actions‬ آلاف الفِرق إلى البحث عن مخرج عملي. يعمل ‪Gitea‬ على خادم ‪VPS‬ بملف تنفيذي واحد، ويوفر واجهة برمجة متوافقة ومشغِّل ‪CI‬ أصلياً. يأخذك هذا الدليل من تصدير ‪GitHub‬ حتى أول `git push` على منصتك الخاصة في أقل من ساعة.",[33,37,47,50,72,75,78,81,92],{"type":34,"title":35,"body":36},"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":38,"title":39,"items":40},"ul","ما يقدمه Gitea المستضاف ذاتياً على أرض الواقع",[41,42,43,44,45,46],"**الحفاظ على السجل الكامل**: يستهلك استيراد ‪Gitea‬ أرشيف ‪tar.gz‬ من ‪GitHub‬ — الإيداعات والفروع والعلامات سليمة.","**نقل المشكلات والتسميات**: تنقل نقطة النهاية `POST \u002Fapi\u002Fv1\u002Frepos\u002Fmigrate` المشكلاتِ والمراحلَ والتسمياتِ في مرور واحد.","**مشغِّل CI أصلي**: يفهم ‪gitea-runner‬ صيغة سير عمل ‪GitHub Actions‬ — تعمل معظم خطوط الأنابيب دون إعادة كتابة.","**تكلفة يمكن التنبؤ بها**: يكفي خادم ‪VPS‬ بمعالج افتراضي واحد و‪1 GB‬ لفريق صغير؛ البرنامج مفتوح المصدر.","**Webhooks متوافقة**: تعرض ‪Gitea‬ الأحداث ذاتها مثل ‪GitHub‬ — تبقى تكاملات الأطراف الثالثة مرتبطة دون تعديل.","**رمز API محلي**: تُدار الصلاحيات في واجهتك الخاصة، لا عند طرف ثالث.",{"type":34,"title":48,"body":49},"المتطلبات الأساسية","قبل البدء، اجمع العناصر التالية.\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":51,"title":52,"steps":53},"steps","الهجرة خطوة بخطوة",[54,57,60,63,66,69],{"title":55,"body":56},"إنشاء المنظمة في 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":58,"body":59},"استعراض مستودعات 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":61,"body":62},"استيراد كل مستودع عبر واجهة 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":64,"body":65},"تحديث عناوين الاستضافة المحلية","```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":67,"body":68},"تحديث Webhooks","في ‪Gitea‬، لكل مستودع: **‪Settings → Webhooks → Add Webhook‬**. الصق عنوان ‪URL‬ لخدمة ‪CI‬ أو الطرف الثالث، مستبدلاً `github.com` بـ `git.your-domain.com`.",{"title":70,"body":71},"نقل خط أنابيب 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":34,"title":73,"body":74},"التحقق بعد الهجرة","بعد اكتمال الهجرة، تحقق من ثلاث نقاط قبل إلغاء الوصول إلى ‪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":76,"body":77},"tip","إن كنت تنقل عشرات المستودعات، شغّل استدعاءات `curl` للاستيراد بصورة متوازية باستخدام `xargs -P 4` لتقليص وقت الانتظار الإجمالي إلى ربعه. تتعامل ‪Gitea‬ مع الاستيرادات المتزامنة دون فقدان بيانات.",{"type":34,"title":79,"body":80},"الأخطاء الشائعة وحلولها","إليك الحالات الثلاث الأكثر تكراراً أثناء الهجرة.",{"type":51,"title":25,"steps":82},[83,86,89],{"title":84,"body":85},"SSH: `Permission denied (publickey)`","العَرَض: يفشل `git clone git@git.your-domain.com:…` بخطأ `Permission denied (publickey)`.\n\nالتحقق: في ‪Gitea‬، **‪Settings → SSH \u002F GPG Keys‬** — يجب أن يظهر المفتاح العام الذي تستخدمه. أضفه إن لم يكن موجوداً.",{"title":87,"body":88},"Remote: `fatal: repository not found`","العَرَض: يُعيد `git fetch` رسالة `fatal: repository not found`.\n\nالتشخيص: `git remote -v` — تأكد أن العنوان يشير إلى نسخة ‪Gitea‬ لا إلى `github.com`.",{"title":90,"body":91},"Webhooks صامتة بعد الهجرة","العَرَض: لا يُشغِّل `git push` أي بناء في خدمة ‪CI‬.\n\nالتشخيص: في ‪Gitea‬، **‪Settings → Webhooks → last delivery‬**: يعرض حقل «‪Response‬» كود ‪HTTP‬ الذي أعادته خدمة ‪CI‬. `404` يعني مسار غير موجود؛ `401` يعني سر ‪HMAC‬ غير صحيح.",{"type":34,"title":93,"body":94},"استضافة Gitea على خادم VPS من ServOrbit","تعمل ‪Gitea‬ بكفاءة على خادم ‪VPS‬ بـ **معالج افتراضي واحد و‪1 GB‬ ذاكرة** لفريق صغير. انشر قالب ‪Gitea‬ من ‪Marketplace‬، اختر نظام التشغيل وحجم خادم ‪VPS‬، وستحصل على نسخة مُعدَّة في دقائق. خطط VPS تبدأ من `{{vps.start.price}}`.","منصتك الخاصة لاستضافة Git على خادم VPS","خادم VPS بصلاحية root وعنوان IPv4 مخصص وخيار في نظام التشغيل: الأساس لاستضافة Gitea دون الاعتماد على SaaS.","تفعيل Gitea على خادم VPS","\u002Fmarketplace\u002Fالتطوير\u002Fgitea",[100,120,138],{"id":101,"slug":102,"slugs":103,"title":106,"excerpt":107,"readTime":108,"views":109,"isPinned":16,"publishedAt":110,"category":111,"categories":117,"featuredImage":25,"bgImage":26,"posterImage":119,"relatedSolution":25},75,"استضافة-forgejo-على-خادم-vps-الخاص-بك",{"fr":104,"en":105,"ar":102},"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":112,"name":113,"slug":114,"color":115,"icon":116},7,"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[118],{"id":112,"name":113,"slug":114,"color":115,"icon":116},"\u002Fblog\u002Fcovers\u002Fheberger-forgejo-poster.svg",{"id":121,"slug":122,"slugs":123,"title":126,"excerpt":127,"readTime":128,"views":109,"isPinned":16,"publishedAt":129,"category":130,"categories":135,"featuredImage":25,"bgImage":26,"posterImage":137,"relatedSolution":25},212,"woodpecker-ci-وforgejo-خط-أنابيب-cicd-على-خادم-vps",{"fr":124,"en":125,"ar":122},"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 خطوة بخطوة.",4,"2026-08-02T00:00:00+00:00",{"id":131,"name":132,"slug":133,"color":134,"icon":133},2,"الأتمتة","automatisation","bg-brand-action\u002F10 text-brand-action",[136],{"id":131,"name":132,"slug":133,"color":134,"icon":133},"\u002Fblog\u002Fcovers\u002Fwoodpecker-ci-pipeline-vps-forgejo-poster.svg",{"id":139,"slug":140,"slugs":141,"title":144,"excerpt":145,"readTime":146,"views":15,"isPinned":16,"publishedAt":147,"category":148,"categories":149,"featuredImage":25,"bgImage":26,"posterImage":151,"relatedSolution":152},273,"gitea-وforgejo-بديل-github-actions-المدفوع-على-vps",{"fr":142,"en":143,"ar":140},"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,"2026-08-16T00:00:00+00:00",{"id":131,"name":132,"slug":133,"color":134,"icon":133},[150],{"id":131,"name":132,"slug":133,"color":134,"icon":133},"\u002Fblog\u002Fcovers\u002Fgithub-actions-payant-migrer-ci-cd-gitea-forgejo-vps-poster.svg",{"categorySlug":29,"appSlug":30},1787681719026]