دليل النشر

نشر تطبيق Next.js على VPS

انشر على VPS Cloud →

التطوير8 دقيقة قراءة

نشر تطبيق Next.js على VPS

يجمع Next.js بين التصيير من جهة الخادم والتوليد الثابت ومسارات API في إطار React واحد. ونشره على VPS بدلًا من منصة احتكارية يحرّرك من حصص الدوال وحدود عرض النطاق (bandwidth) والارتباط بمزوّد واحد، مع إبقاء SSR يعمل بكامل طاقته.

لماذا تستضيف Next.js ذاتيًا على VPS؟

غالبًا ما يُقرَن Next.js بمنصة استضافة بعينها، لكن خادم Node.js المستقل (standalone) الخاص به يعمل بشكل مثالي على أي VPS. وتصبح الاستضافة الذاتية مجدية بمجرد استخدامك المكثف لـSSR أو ISR (التوليد الثابت التزايدي) أو مسارات API: فهذه الميزات تستهلك استدعاءات مفوترة على المنصات المُدارة، بينما هي مجانية وغير محدودة على خادمك. تتحكم في ذاكرة ISR المؤقتة على القرص، وفي عرض النطاق للصور المُحسَّنة، وفي زمن تنفيذ الدوال، دون حد الـ10 ثوانٍ. وبالنسبة إلى وكالة تستضيف عدة مواقع لعملاء، يوحّد VPS التكاليف ويبسّط الفوترة.

فوائد ملموسة لاستضافة Next.js ذاتيًا

  • SSR ومسارات API دون حصة استدعاءات ودون فوترة لكل دالة.
  • ذاكرة ISR مؤقتة دائمة على القرص، دون فقدان إعادة التحقق (revalidation) بين عمليات النشر.
  • عرض نطاق مشمول، مثالي للمواقع الغنية بالصور والفيديو.
  • عدة مشاريع Next.js على VPS واحد، موحَّدة تحت Nginx.
  • تحسين الصور عبر next/image يُقدَّم محليًا دون تكلفة إضافية لكل تحويل.
  • بناء ونشر مُتحكَّم فيهما عبر Git أو CI/CD أو مجرد git pull وإعادة بناء.

المتطلبات المسبقة للعتاد والبرمجيات

عملية بناء Next.js نهِمة للذاكرة: خصّص ما لا يقل عن 2 غيغابايت من ذاكرة RAM (و4 غيغابايت لمشروع كبير بكثير من الصفحات)، وإلا فقد تفشل عملية البناء بسبب نقص الذاكرة. أما من ناحية وقت التشغيل، فيكفي 1 إلى 2 vCPU لتقديم SSR. ثبّت Node.js 18 أو 20 LTS، إما أصليًا عبر nvm أو عبر صورة Docker node:20-alpine. استخدم PM2 للإشراف على عملية Node، أو Docker للعزل. يلزم نطاق مُوجَّه نحو VPS للحصول على SSL. فعّل output: 'standalone' في next.config.js لنشر خفيف.

نشر Next.js خطوة بخطوة

01

تجهيز الخادم

عبر SSH، ثبّت Node.js 20 LTS وPM2 (npm install -g pm2)، أو Docker. استنسخ المستودع وأنشئ .env.production مع متغيراتك (NEXT_PUBLIC_* للعميل، وأسرار الخادم لمسارات API).

02

بناء التطبيق

نفّذ npm ci ثم npm run build. ومع output: 'standalone'، يُنشئ Next.js مجلدًا مستقلًا .next/standalone يحتوي فقط على الاعتماديات اللازمة، ما يخفّف الصورة بشكل كبير.

03

تشغيل خادم Node

شغّل الخادم باستخدام pm2 start node --name nextjs -- .next/standalone/server.js على المنفذ 3000، أو عبر حاوية Docker. اضبط pm2 startup وpm2 save لإعادة تشغيل تلقائية عند إعادة إقلاع VPS.

04

إعداد Nginx في الواجهة الأمامية

أنشئ كتلة خادم تنفّذ proxy_pass http://localhost:3000، وتُمرّر ترويستَي Host وX-Forwarded-For، وتقدّم /_next/static/ مباشرة من القرص لتخفيف العبء عن Node. فعّل ضغط gzip.

05

تثبيت شهادة SSL

احصل على شهادة Let's Encrypt عبر Certbot لـyourdomain.com، وافرض إعادة التوجيه إلى HTTPS، واضبط التجديد التلقائي. وتحقّق من تمرير ترويسات X-Forwarded-Proto بشكل صحيح لأجل SSR.

06

إعداد عمليات النشر

أتمِت دورة git pull && npm ci && npm run build && pm2 reload nextjs عبر سكربت أو webhook خاص بـGit. ويضمن أمر reload في PM2 إعادة تشغيل دون انقطاع (zero-downtime) بين إصدارين.

إذا كنت تستخدم ISR، فاربط وحدة تخزين دائمة لمجلد .next/cache كي تبقى الصفحات المُعاد التحقق منها بعد عمليات إعادة النشر. وبدون ذلك، تبدأ كل عملية إعادة بناء من ذاكرة مؤقتة فارغة وتسبّب ذروة توليد فوري. ولعدة نسخ Node خلف موازن حِمل (load balancer)، انقل هذه الذاكرة المؤقتة إلى تخزين مشترك أو إلى Redis مع معالِج ذاكرة مؤقتة (cache handler) مخصّص.

استضف Next.js دون حدود

يوفّر VPS السحابي من ServOrbit قالبًا مُهيّأً مسبقًا مع Node.js وPM2 وNginx وشهادات SSL تلقائية، مثاليًا لتقديم تطبيقات Next.js بأسلوب SSR دون حصص.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو راسل فريقنا — الدعم بـ العربية والفرنسية والإنجليزية.