[{"data":1,"prerenderedAt":143},["ShallowReactive",2],{"seo-verification":3,"blog-استضافة-verdaccio-على-vps-مسجل-npm-خاص-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-استضافة-verdaccio-على-vps-مسجل-npm-خاص-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":56,"ctaBody":85,"ctaButton":86,"ctaUrl":87,"relatedPosts":88},376,"استضافة-verdaccio-على-vps-مسجل-npm-خاص",{"fr":12,"en":13,"ar":10,"es":14},"self-host-verdaccio-vps","verdaccio-private-npm-registry-vps","alojar-verdaccio-en-un-vps-registro-npm-privado","استضافة Verdaccio على VPS: مسجّل npm\u002Fyarn\u002Fpnpm خاص","نشر Verdaccio على VPS ServOrbit: مسجّل npm\u002Fyarn خاص مستضاف ذاتياً لوكالة npmjs.org واستضافة حزم JavaScript الداخلية.",7,0,false,"2026-09-25T00:00:00+00:00","2026-09-25T23:43:02+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[28],{"id":17,"name":23,"slug":24,"color":25,"icon":26},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-verdaccio-vps-poster.svg",{"categorySlug":33,"appSlug":34},"التطوير","verdaccio","Verdaccio هو مسجّل npm خاص خفيف مفتوح المصدر (MIT) مبني بـNode.js. يعمل وكيلاً لـnpmjs.org ومستودعاً لحزمك الداخلية في آنٍ واحد. على VPS ServOrbit، تكفي حاوية Docker واحدة — أقل من 128 ميغابايت RAM، ولا قاعدة بيانات خارجية، ولا نطاق مطلوب للبدء.",[37,41,51,54,73,76,79,82],{"type":38,"title":39,"body":40},"h2","لماذا تستضيف مسجّل npm خاصاً على VPS","ثلاثة سيناريوهات تجعل مسجّل npm الخاص ضرورياً للفرق البرمجية. **الأول**: إدارة المكتبات الداخلية — إذا طوّرت نظام تصميم، أدوات مساعدة خاصة بمنظمتك، أو عملاء API داخليين، فإن نشر هذه الحزم على npmjs.org يعرّضها للعموم. مسجّل خاص يبقيها خلف بنيتك التحتية، مُعرَّفة بالإصدار ومتاحة فقط لمطوّريك وخطوط أنابيب CI الخاصة بك.\n\n**الثاني**: استقرار خطوط أنابيب CI — يتعطّل npmjs.org عدة مرات في السنة، وكل عطل قد يوقف عمليات النشر لساعات. Verdaccio يخزّن كل حزمة عامة محمَّلة محلياً: التثبيت الثاني عبر `npm install` — سواء في CI أو محلياً — لا يصل إلى الشبكة أبداً. تتسارع بنياتك وتصبح مستقلة عن توافر السجل العام.\n\n**الثالث**: العمل في بيئات معزولة أو بدون إنترنت — بعد تسخين الذاكرة المؤقتة، يخدم Verdaccio جميع الحزم المُشاهَدة سابقاً دون اتصال بالإنترنت. هذا مفيد لبيئات الامتثال الصارمة أو خطوط الأنابيب الداخلية أو العروض التوضيحية بدون Wi-Fi. كل هذا في حاوية Docker واحدة خفيفة (أقل من 128 ميغابايت RAM)، بلا قاعدة بيانات خارجية ولا إعداد معقّد.",{"type":42,"title":43,"items":44},"ul","مزايا Verdaccio المستضاف ذاتياً",[45,46,47,48,49,50],"حزم خاصة تحت نطاقك — انشر مكتباتك الداخلية دون كشفها للعموم.","تخزين مؤقت محلي لـnpmjs.org — بنيات CI تستمر حتى عند تعطّل السجل العام.","صفر تبعيات خارجية — حاوية Docker واحدة وحجم واحد، بلا قاعدة بيانات.","أقل من 128 ميغابايت RAM — يعمل على أصغر VPS دون تأثير على الخدمات الأخرى.","متوافق مع npm وYarn وpnpm — فقط غيّر URL السجل.","وضع بلا إنترنت — سخّن الذاكرة مرة واقطع الاتصال: بنياتك تبقى قابلة للاستنساخ.",{"type":38,"title":52,"body":53},"المتطلبات","Verdaccio أحد أخف الخدمات التي يمكن نشرها على VPS. قائمة المتطلبات قصيرة عمداً: VPS بـ1 vCPU و512 ميغابايت RAM (Verdaccio يستخدم أقل من 128 ميغابايت في التشغيل العادي) وDocker مثبَّت. لا يلزم أي نطاق للبدء — يمكنك الوصول إلى السجل عبر نفق SSH من محطة عملك أو من runner CI.\n\nللوصول الدائم من قِبَل الفريق أو خطوط أنابيب CI المستضافة في مكان آخر، أضف نطاقاً من لوحة تحكم ServOrbit: سيوكّله nginx تلقائياً عبر HTTPS، وتُدار شهادة TLS بواسطة ServOrbit دون أي تدخل منك. للتخزين، خطّط مساحة القرص بما يتناسب مع الاستخدام — الحزم العامة المخزَّنة مؤقتاً والحزم الخاصة تتراكم في حجم Docker مستمر.",{"type":55,"title":56,"steps":57},"steps","نشر Verdaccio على VPS ServOrbit",[58,61,64,67,70],{"title":59,"body":60},"الطلب من Marketplace ServOrbit","من منطقة عملاء ServOrbit، ثبّت Verdaccio بنقرة واحدة من Marketplace: اختر فئة التطوير، حدّد Verdaccio، وأكّد طلبك. تُنشر الحاوية Docker تلقائياً على VPS الخاص بك مع healthcheck مدمج يتحقق من استجابة السجل كل 30 ثانية. ستتلقى إشعاراً فور جاهزية الخدمة مع المنفذ المُخصَّص لها.",{"title":62,"body":63},"الاتصال عبر نفق SSH","افتح نفق SSH من جهازك المحلي: `ssh -L 4873:127.0.0.1:\u003Cport> root@\u003Cip-vps>`. ثم وجّه npm نحو النفق: `npm set registry http:\u002F\u002Flocalhost:4873`. لـYarn 2+ (Berry)، أضف `npmRegistryServer: \"http:\u002F\u002Flocalhost:4873\"` إلى `.yarnrc.yml`. لـpnpm: `pnpm config set registry http:\u002F\u002Flocalhost:4873`. تُطبَّق هذه الإعدادات على مستوى النظام في `~\u002F.npmrc` أو على مستوى المشروع في `.npmrc` عند جذر المستودع.",{"title":65,"body":66},"إنشاء أول حساب","نفّذ `npm adduser --registry http:\u002F\u002Flocalhost:4873`. أدخل اسم المستخدم وكلمة المرور والبريد الإلكتروني. يصبح هذا المستخدم مدير السجل بصلاحيات القراءة والنشر الكاملة. يمكنك إنشاء حسابات إضافية بالأمر ذاته — كل مطوّر يحصل على بياناته الخاصة ورمز وصول مستقل يمكن إلغاؤه بشكل منفرد.",{"title":68,"body":69},"نشر أول حزمة خاصة","في مجلد الحزمة، نفّذ `npm publish --registry http:\u002F\u002Flocalhost:4873`. تأكد من أن حقل `name` في `package.json` يتضمن نطاقك الخاص (مثل `@org\u002Fpackage`) للتمييز عن الحزم العامة. تحقق من نجاح النشر على واجهة Verdaccio: تظهر حزمتك في القائمة مع رقم إصدارها، وهي الآن متاحة لأي مطوّر أو pipeline CI مصادَق على سجّلك.",{"title":71,"body":72},"إضافة نطاق للوصول الدائم","من منطقة عملاء ServOrbit، أضف نطاقاً أو نطاقاً فرعياً إلى VPS الخاص بك. سيوكّل nginx Verdaccio تلقائياً عبر HTTPS. حدّث `.npmrc` العام (`registry=https:\u002F\u002Fverdaccio.your-domain.com`) أو متغير البيئة `NPM_CONFIG_REGISTRY` في إعدادات CI. يمكن لعدّائي GitHub Actions وGitLab CI وغيرهم الوصول إلى السجل الآن دون الحاجة إلى نفق SSH.",{"type":74,"body":75},"tip","للوصول الدائم من قِبَل الفريق، أضف نطاقاً من لوحة ServOrbit. سيوكّل nginx Verdaccio عبر HTTPS تلقائياً — اضبط `.npmrc` العام (`registry=https:\u002F\u002Fverdaccio.your-domain.com`) أو عرّف `NPM_CONFIG_REGISTRY` في متغيرات CI لربط عدّائي GitHub Actions وGitLab CI وأدوات pnpm.",{"type":38,"title":77,"body":78},"ضبط النطاقات وقواعد الوكالة","افتراضياً، يبحث Verdaccio أولاً عن الحزمة في التخزين المحلي ثم يوكّل طلب التنزيل إلى npmjs.org في حال غيابها. هذا السلوك مناسب للبدء، لكن معظم الفرق تريد ضبطاً دقيقاً حسب النطاق.\n\nالتهيئة تعيش في `config.yaml`، يمكن الوصول إليه من حجم Docker (`verdaccio-storage`). قسم `packages:` يعرّف القواعد بأنماط الأسماء. لنطاق خاص (`@acme\u002F*`)، يمكنك تعطيل الوكالة إلى npmjs.org وتقييد الوصول للمستخدمين المصادق عليهم فقط.\n\nمثال بسيط:\n```yaml\npackages:\n  '@acme\u002F*':\n    access: $authenticated\n    publish: $authenticated\n  '**':\n    access: $all\n    proxy: npmjs\n```\n\nبعد التعديل، أعد تشغيل الحاوية: `docker compose restart verdaccio`. تُطبَّق التهيئة دون إعادة تحميل قاعدة الحزم. يضمن هذا النهج أن حزمك الخاصة لن تصل أبداً إلى npmjs.org، حتى في حال خطأ في التهيئة.",{"type":38,"title":80,"body":81},"التكامل مع CI\u002FCD","لاستخدام Verdaccio في GitHub Actions، عيّن متغير البيئة `NPM_CONFIG_REGISTRY` ورمز المصادقة `${{ secrets.VERDACCIO_TOKEN }}` في سير العمل. احصل على الرمز المميز بـ `npm token create --registry https:\u002F\u002Fverdaccio.your-domain.com` من أي حساب Verdaccio:\n```yaml\njobs:\n  build:\n    env:\n      NPM_CONFIG_REGISTRY: https:\u002F\u002Fverdaccio.your-domain.com\n      NPM_CONFIG_\u002F\u002Fverdaccio.your-domain.com\u002F:_authToken: ${{ secrets.VERDACCIO_TOKEN }}\n```\n\nلـGitLab CI، استخدم قسم `variables:` في `.gitlab-ci.yml` مع نفس متغيرات البيئة. كلا المنصتين يدعمان متغيرات CI الآمنة المشفرة — لا تضع رمز Verdaccio في ملف `.npmrc` مباشرةً في المستودع.\n\nيُقلّص التخزين المؤقت مدة تثبيت `node_modules` من 30–60 ثانية إلى 2–5 ثوانٍ في البنيات المتكررة، لأن الحزم العامة تُخدَم من ذاكرة Verdaccio المؤقتة بدلاً من الشبكة. لتحقيق أقصى فائدة في CI، شغّل خطوة التسخين (`npm install` على فرع رئيسي) قبل اختبار فروع الميزات.",{"type":38,"title":83,"body":84},"الأمان والتحكم في الوصول","يستخدم Verdaccio افتراضياً مصادقة `htpasswd` مع تشفير bcrypt — آمن لفريق صغير. للتوسع، يدعم Verdaccio مكونات إضافية للمصادقة: LDAP، GitLab، GitHub OAuth، وKeycloak.\n\n**لرموز وصول CI**: استخدم `npm token create --registry https:\u002F\u002Fverdaccio.your-domain.com` بدلاً من تخزين كلمة مرور نصية. يمكن إلغاء أي رمز بشكل مستقل دون التأثير على المستخدمين الآخرين. خزّن الرمز في أسرار CI (`${{ secrets.VERDACCIO_TOKEN }}` في GitHub Actions) وليس في ملفات المستودع.\n\nعلى ServOrbit، Verdaccio مرتبط بـ`127.0.0.1` ومعرّض فقط عبر وكيل nginx العكسي. المنفذ 4873 غير مكشوف مباشرة على الإنترنت — nginx يضيف TLS، والنطاق الموكّل فقط يستجيب على المنفذ 443. للأمان الأقصى، فعّل المصادقة الإجبارية للقراءة (`access: $authenticated` في `config.yaml`) إذا كان سجّلك يحتوي على حزم حساسة. افتراضياً، يسمح Verdaccio بالقراءة المجهولة — مناسب لذاكرة الحزم العامة، لكن ينبغي تقييده للحزم الخاصة والملكية.","VPS ServOrbit مع Docker جاهز للاستخدام وIPv4 مخصصة ونظام nginx مدمج — انشر مسجّل npm الخاص بك في دقائق دون إعداد خادم.","نشر VPS الخاص بي","\u002Fmarketplace\u002Fالتطوير\u002Fverdaccio",[89,108,125],{"id":90,"slug":91,"slugs":92,"title":96,"excerpt":97,"readTime":98,"views":18,"isPinned":19,"publishedAt":99,"updatedAt":100,"category":101,"categories":105,"featuredImage":29,"bgImage":30,"posterImage":107,"relatedSolution":29},202,"تأمين-سلسلة-توريد-npm-في-ci-بعد-حادثة-asyncapi",{"fr":93,"en":94,"ar":91,"es":95},"securiser-chaine-approvisionnement-npm-ci","securing-your-npm-ci-supply-chain-after-asyncapi","proteger-la-cadena-de-suministro-npm-tras-asyncapi","تأمين سلسلة توريد npm في CI بعد حادثة AsyncAPI","سياسة lockfile والتحقق من الهاشات وإثبات SLSA وفحص SCA التلقائي: كيف تقوّي خط CI بعد حادثة AsyncAPI في يوليو 2026.",4,"2026-08-01T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":98,"name":33,"slug":102,"color":103,"icon":104},"developpement","bg-warning\u002F10 text-warning","dev",[106],{"id":98,"name":33,"slug":102,"color":103,"icon":104},"\u002Fblog\u002Fcovers\u002Fsecuriser-chaine-approvisionnement-npm-ci-poster.svg",{"id":109,"slug":110,"slugs":111,"title":115,"excerpt":116,"readTime":117,"views":18,"isPinned":19,"publishedAt":118,"updatedAt":100,"category":119,"categories":120,"featuredImage":29,"bgImage":30,"posterImage":122,"relatedSolution":123},74,"استضافة-gitea-على-خادم-vps-الخاص-بك",{"fr":112,"en":113,"ar":110,"es":114},"heberger-gitea","host-gitea-on-your-own-vps","alojar-gitea-en-un-vps","استضافة Gitea على خادم VPS الخاص بك في 2026","انشُر Gitea على خادم VPS مع Docker وSSL. دليل شامل: التثبيت والهجرة إلى ‏Forgejo v16‏ ومقارنة الحوكمة.",8,"2026-04-07T00:00:00+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[121],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fheberger-gitea-poster.svg",{"categorySlug":33,"appSlug":124},"gitea",{"id":126,"slug":127,"slugs":128,"title":132,"excerpt":133,"readTime":134,"views":135,"isPinned":19,"publishedAt":136,"updatedAt":100,"category":137,"categories":138,"featuredImage":29,"bgImage":30,"posterImage":140,"relatedSolution":141},311,"onedev-على-vps-git-وcicd-وkanban-في-حاوية-واحدة",{"fr":129,"en":130,"ar":127,"es":131},"heberger-onedev-vps","self-host-onedev-git-cicd-and-kanban-in-one-container","onedev-en-vps-git-cicd-y-kanban-autoalojados","OneDev على VPS: Git وCI\u002FCD وKanban في حاوية واحدة","استضف OneDev على VPS الخاص بك: مستودع Git خاص، ومسارات CI\u002FCD مرئية، ولوحات Kanban. حاوية واحدة، بدون رسوم لكل مطور.",6,2,"2026-08-28T00:00:00+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[139],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fheberger-onedev-vps-poster.svg",{"categorySlug":33,"appSlug":142},"onedev",1790385681795]