[{"data":1,"prerenderedAt":113},["ShallowReactive",2],{"seo-verification":3,"blog-nodejs-20-fin-de-vie-migrer-vps-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"title":9,"excerpt":10,"readTime":11,"views":12,"isPinned":13,"publishedAt":14,"category":15,"categories":21,"featuredImage":23,"bgImage":24,"posterImage":25,"relatedSolution":23,"intro":26,"sections":27,"ctaTitle":70,"ctaBody":71,"ctaButton":72,"ctaUrl":73,"relatedPosts":74},223,"nodejs-20-fin-de-vie-migrer-vps","نهاية دعم Node.js 20: ترحيل خادم VPS","لا يتلقى Node.js 20 أي تصحيح أمني منذ 30 أبريل 2026. كيف تراجع خوادمك وترحّل إلى Node.js 24 دون تعطيل الإنتاج.",9,0,false,"2026-08-05T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},4,"التطوير","developpement","bg-warning\u002F10 text-warning","dev",[22],{"id":16,"name":17,"slug":18,"color":19,"icon":20},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fnodejs-20-fin-de-vie-migrer-vps-poster.svg","منذ 30 أبريل 2026، لم يعد Node.js 20 يتلقى أي تصحيح، ولا حتى تصحيحات الأمان. ومع ذلك لا يزال كثير من خوادم VPS ومشاريع الوكالات يعمل عليه: التطبيق يستجيب، والاختبارات تنجح، ولا شيء يشير إلى أن وقت التشغيل مُجمّد. إليك كيف تعرف ما تشغّله، وكيف تختار الإصدار المستهدف، وكيف تنفّذ التبديل دون انقطاع.",[28,32,41,44,63,67],{"type":29,"title":30,"body":31},"h2","ما الذي تغيّره فعليًا نهاية دعم Node.js 20","يتبع Node.js دورة حياة معلنة: يدخل الإصدار ذو الرقم الزوجي مرحلة Active LTS في أكتوبر، وينتقل إلى Maintenance LTS بعد سنة، ثم يتوقف. دخل Node.js 20 مرحلة Maintenance LTS في 22 أكتوبر 2024، وبلغ نهاية دعمه في 30 أبريل 2026. ومنذئذٍ لم تعد أي ثغرة في وقت التشغيل تُصحَّح عند المصدر: لا في محرك V8، ولا في مكتبة TLS المدمجة، ولا في محلّل HTTP. تستمر الشيفرة في العمل، لكن كل ثغرة تُنشر تبقى مفتوحة هناك.",{"type":33,"title":34,"items":35},"ul","ما يكلّفه وقت تشغيل مُجمّد",[36,37,38,39,40],"**ثغرات دون تصحيح** — الثغرات المنشورة بعد 30 أبريل 2026 لن تتلقى أي تصحيح من المصدر؛ ولا يغلقها سوى الترقية إلى إصدار أحدث.","**حزم تتخلى عن الدعم** — يرفع المشرفون قيمة الحقل `engines` في `package‎.json` نحو الإصدارات التي لا تزال مدعومة؛ فينتهي التثبيت الجديد إلى الفشل، أو إلى تثبيتك على إصدارات قديمة.","**صور أساس ثابتة** — لم تعد صورة `node:20` تتلقى أي تصحيح، لا لوقت التشغيل ولا لحزم النظام تحته؛ ويشير فحص الثغرات لديك إلى ذلك عند كل بناء.","**تدقيقات تتعثر** — وقت التشغيل منتهي الدعم خطر غير مقبول في مراجعات الأمان واستبيانات المورّدين.","**ترحيل طارئ** — كلما اتسعت الفجوة ارتفعت كلفة التبديل؛ تنفيذه اليوم مشروع مخطط له، وتحمّله بعد حادثة ليس كذلك.",{"type":29,"title":42,"body":43},"اعرف ما تشغّله خوادمك فعلًا","لا يخبرك `node -v` في الطرفية سوى بجزء من القصة: فالملف التنفيذي في جلستك ليس بالضرورة الذي يخدم الإنتاج. يحتفظ مدير العمليات بالإصدار الذي انطلق به، ويثبّت `nvm` عدة إصدارات لكل مستخدم، ويُجمّد ملف `Dockerfile` إصداره الخاص في سطر `FROM node:20`. أحصِ كل مصدر: `pm2 jsonlist` للعمليات الحية، و`grep -r 'FROM node'` في ملفات Dockerfile، وحقل `engines` في كل `package‎.json`، والإصدار المثبّت في مسارات CI أو في أوقات التشغيل المُدارة لديك.",{"type":45,"title":46,"steps":47},"steps","الترحيل دون تعطيل الإنتاج",[48,51,54,57,60],{"title":49,"body":50},"إعداد الجرد قبل أي شيء آخر","اذكر، تطبيقًا تلو الآخر: الإصدار الذي يعمل فعلًا، ومدير العمليات، وصورة الأساس، والاعتماديات الأصلية — `node-gyp` و`sharp` و`better-sqlite3`. هي التي تحدّد الجدول الزمني، لا شيفرتك: فوحدة مُصرَّفة دون ملف تنفيذي جاهز للإصدار الجديد تعطّل عملية التبديل بأكملها.",{"title":52,"body":53},"اختيار الإصدار المستهدف","دخل Node.js 24 مرحلة Active LTS في 28 أكتوبر 2025، وحُدِّدت نهاية دعمه في 30 أبريل 2028: وهو الهدف الافتراضي. أما Node.js 22، وهو في Maintenance LTS منذ 21 أكتوبر 2025، فمدعوم حتى 30 أبريل 2027 — محطة وسيطة مقبولة إن كانت إحدى الاعتماديات الأصلية غير جاهزة بعد، لا وجهة نهائية. وNode.js 26 لا يدخل مرحلة LTS إلا في 28 أكتوبر 2026: ليس للإنتاج اليوم.",{"title":55,"body":56},"إعادة تشغيل مجموعة الاختبارات على الإصدار المستهدف","أضف الإصدار المستهدف إلى مصفوفة CI قبل إزالة القديم: يجب أن ينجح الاثنان في الوقت نفسه. أعد التثبيت من الصفر (`rm -rf node_modules` ثم `npm ci`) لإجبار الوحدات الأصلية على إعادة التصريف — فهناك تظهر الأعطال، نادرًا في اختبارات الوحدة. واقرأ أيضًا تحذيرات الإهمال: فهي أخطاء الإصدار التالي.",{"title":58,"body":59},"تبديل خدمة واحدة في كل مرة","يثبّت `nvm install 24` الإصدار الجديد إلى جانب القديم دون إزالته. ثم أعد تشغيل خفيّ مدير العمليات (`pm2 update`) وأعد إنشاء الخدمة (`pm2 delete` ثم `pm2 start`): فالأمر `pm2 restart` وحده يحتفظ بالمفسّر المسجَّل. أعد توليد سكربت الإقلاع (`pm2 startup` و`pm2 save`) وتحقّق عبر `pm2 jsonlist` من أن الإصدار المُبلَّغ عنه تغيّر فعلًا.",{"title":61,"body":62},"المراقبة ثم التنظيف","أبقِ سجلات الأخطاء ومنحنى الذاكرة تحت نظرك 48 ساعة: فتغيير إصدار V8 يزيح ملمح جامع المهملات أكثر مما يكسر واجهة برمجية. وبعد تأكيد التبديل، أزل Node.js 20 كي لا يعيده أي نشر بالخطأ. وإن فضّلت الانطلاق من خادم نظيف بدل الترحيل في المكان، فدليلنا `deployer-nodejs-vps` يغطي السلسلة كاملة.",{"type":64,"title":65,"body":66},"tip","ثبّت الإصدار، لا أن ترحّله فحسب","ترقية وقت التشغيل هي اللحظة المناسبة لإحكام ما يحيط بها. ثبّت الإصدار المستهدف في ملف `‎.nvmrc` مُدار مع الشيفرة، ووحّده مع حقل `engines` في `package‎.json`: عندئذٍ يتوقف الخادم وCI وأجهزة المطورين عن التباعد في صمت — وهذا التباعد هو ما يجعل وقت تشغيل منتهي الدعم ينجو من ترحيله. شغّل التطبيق بمستخدم مخصّص، دون صلاحية الكتابة في مجلد شيفرته.",{"type":29,"title":68,"body":69},"اجعل نهاية الدعم موعدًا مُقرَّرًا لا مفاجأة","جدول Node.js معلن: يصبح الإصدار ذو الرقم الزوجي LTS في أكتوبر، ثم يتوقف بعد ثلاثين شهرًا، دائمًا في 30 أبريل. سيتوقف Node.js 22 في 30 أبريل 2027، وNode.js 24 في 30 أبريل 2028: ويمكن إدراج الموعدين في تقويم التشغيل لديك منذ اليوم. فترقية الإصدار، إذا عوملت كمهمة دورية مُدرجة في الميزانية، تستغرق أيامًا قليلة في السنة؛ أما إذا فُرضت في ظرف طارئ فتكلفتها أكبر بكثير.","خادم VPS تختار فيه الإصدار الذي يعمل","توفّر ServOrbit خوادم VPS سحابية تثبّت فيها إصدار Node.js الذي تختاره، وتُرحّل خدمة تلو الأخرى، وتحتفظ بإصدارين جنبًا إلى جنب طوال فترة التبديل.","استعرض حلول المطورين","\u002Fsolutions\u002Fdeveloppeurs",[75,89,102],{"id":76,"slug":77,"title":78,"excerpt":79,"readTime":80,"views":81,"isPinned":13,"publishedAt":82,"category":83,"categories":84,"featuredImage":23,"bgImage":24,"posterImage":86,"relatedSolution":87},43,"deployer-nodejs-vps","نشر تطبيق Node.js على VPS","انشر تطبيق Node.js في بيئة الإنتاج على VPS: PM2 وبروكسي عكسي Nginx وشهادة SSL من Let's Encrypt وبدء تشغيل تلقائي عند الإقلاع.",8,591,"2026-05-08T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[85],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-nodejs-vps-poster.svg",{"categorySlug":18,"appSlug":88},"nodejs",{"id":90,"slug":91,"title":92,"excerpt":93,"readTime":80,"views":94,"isPinned":13,"publishedAt":95,"category":96,"categories":97,"featuredImage":23,"bgImage":24,"posterImage":99,"relatedSolution":100},46,"deployer-nextjs-vps","نشر تطبيق Next.js على VPS","انشر Next.js على VPS: Node.js وPM2 وNginx وSSL وSSR. دليل كامل للمطوّرين والوكالات الراغبين في الاستضافة الذاتية.",2120,"2026-05-05T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[98],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fdeployer-nextjs-vps-poster.svg",{"categorySlug":18,"appSlug":101},"nextjs",{"id":103,"slug":104,"title":105,"excerpt":106,"readTime":107,"views":12,"isPinned":13,"publishedAt":108,"category":109,"categories":110,"featuredImage":23,"bgImage":24,"posterImage":112,"relatedSolution":23},206,"php-82-fin-de-vie-checklist-migration","نهاية دعم PHP 8‎.2: دليل الترحيل","يبلغ PHP 8‎.2 نهاية دورة حياته في 31 ديسمبر 2026. كيفية مراجعة مواقعك والترحيل إلى PHP 8‎.3 أو 8‎.4 دون انقطاع.",7,"2026-08-01T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":20},[111],{"id":16,"name":17,"slug":18,"color":19,"icon":20},"\u002Fblog\u002Fcovers\u002Fphp-82-fin-de-vie-checklist-migration-poster.svg",1785896848701]