دليل النشر

نشر تطبيق Payload CMS على خادم VPS

انشر على VPS Cloud →

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

نشر تطبيق Payload CMS على خادم VPS

يُعدّ Payload CMS نظام إدارة محتوى headless يعتمد TypeScript أوّلًا ويتكامل أصليًا داخل Next.js. وتمنحك استضافته ذاتيًا على خادم VPS حزمة موحّدة تعتمد الشيفرة أوّلًا (code-first)، حيث يتشارك نظام إدارة المحتوى والواجهة الأمامية بيئة التشغيل نفسها. إليك كيفية نشره في بيئة الإنتاج، مع قاعدة بياناته ومقارنة مع Strapi.

لماذا الاستضافة الذاتية لـ Payload CMS على خادم VPS

يتبنّى Payload CMS نهجًا يعتمد الشيفرة أوّلًا بشكل جذري: يُعرَّف مخطّط المحتوى الخاص بك بلغة TypeScript في ملفّات الإعداد، ويُصدَّر مع Git، ومنذ إصداره الثالث يُثبَّت Payload مباشرةً داخل تطبيق Next.js عبر App Router. وهذا يعني أنّ خادم VPS يتيح لك استضافة نظام إدارة المحتوى وموقع الواجهة الأمامية في عملية Node واحدة، تتشارك البناء وبيئة التشغيل. تحصل على كتابة أنواع من طرف إلى طرف، وترحيلات للمخطّط تُدار في الشيفرة، ودون أيّ اعتماد على واجهة رسومية لنمذجة محتواك. الاستضافة الذاتية هنا هي الخيار الطبيعي: صُمّم Payload لينشر مثل أيّ تطبيق Next.js، ويمنحك خادم VPS التحكّم في قاعدة البيانات (MongoDB أو PostgreSQL) والملفّات المرفوعة ومتغيّرات البيئة، دون منصّة وسيطة.

الفوائد الملموسة

  • مخطّط محتوى مُعرَّف بلغة TypeScript ومُصدَّر مع Git: مراجعة شيفرة وسجلّ كاملان
  • نظام إدارة المحتوى وواجهة Next.js الأمامية في بيئة تشغيل واحدة: بناء واحد وعملية واحدة للنشر
  • كتابة أنواع من طرف إلى طرف بين إعداد Payload وواجهة API والواجهة الأمامية، دون توليد يدوي
  • اختيار قاعدة البيانات: MongoDB أو PostgreSQL عبر المحوّلات الرسمية
  • ترحيلات المخطّط مدفوعة بالشيفرة (payload migrate)، قابلة لإعادة الإنتاج بين البيئات
  • Local API: وصول مباشر إلى البيانات دون استدعاء HTTP من شيفرة خادم Next.js

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

بما أنّ Payload يعتمد على Next.js، فإنّ البناء مُتطلِّب: جهّز خادم VPS بمعالجين افتراضيين (2 vCPU) و4 جيجابايت من الذاكرة لبناء التطبيق وتشغيله بارتياح، خاصّةً إذا كانت واجهة Next.js الأمامية ضخمة. ثبّت Node.js 20 LTS وDocker وDocker Compose. أمّا من جهة قاعدة البيانات، فهيّئ MongoDB 7 أو PostgreSQL 16 بحسب المحوّل المختار (@payloadcms/db-mongodb أو @payloadcms/db-postgres). وجّه نطاقك نحو عنوان IP الخاص بخادم VPS. احسب 15 جيجابايت من القرص لـ node_modules وبناء .next والملفّات المرفوعة ونسخ قاعدة البيانات الاحتياطية.

النشر خطوة بخطوة

01

اختيار محوّل قاعدة البيانات وإعداده

في payload.config.ts، صرّح عن المحوّل: mongooseAdapter لـ MongoDB أو postgresAdapter لـ PostgreSQL، مع قراءة عنوان URL للاتصال من DATABASE_URI. هذا الاختيار بنيوي: يفرض PostgreSQL ترحيلات، وMongoDB أكثر مرونة بشأن المخطّط.

02

تحديد السرّ وبناء تطبيق Next.js

أدخِل PAYLOAD_SECRET (مفتاح تشفير الرموز) في البيئة. شغّل npm run build: بما أنّ Payload 3 يعيش داخل Next.js، يُصرّف هذا الأمر لوحة إدارة Payload وواجهتك الأمامية معًا. راقب الذاكرة أثناء البناء.

03

الحوسبة في حاوية باستخدام Docker Compose

أنشئ ملفّ Dockerfile بصورة node:20-alpine يبني التطبيق ويُشغّل npm start، ثمّ ملفّ docker-compose.yml يربط خدمة app بخدمة mongo أو postgres. ركّب وحدة تخزين للملفّات المرفوعة ومرّر DATABASE_URI وPAYLOAD_SECRET كمتغيّرات. شغّل docker compose up -d.

04

تنفيذ الترحيلات (PostgreSQL)

إذا كنت تستخدم محوّل PostgreSQL، فطبّق المخطّط باستخدام npm run payload migrate بعد بدء الحاويات. مع MongoDB، يُطبَّق المخطّط تلقائيًا، ولا حاجة إلى أيّ ترحيل يدوي.

05

إعداد Nginx كوكيل عكسي

وجّه مضيفًا افتراضيًا نحو http://127.0.0.1:3000 (المنفذ الافتراضي لـ Next.js). ارفع client_max_body_size لرفع الوسائط وأضف ترويسات X-Forwarded-Proto كي يُولّد Payload عناوين URL بـ HTTPS صحيحة.

06

التأمين باستخدام SSL وتحديد عنوان URL للخادم

شغّل certbot --nginx -d mydomain.com، ثمّ عيّن serverURL: 'https://mydomain.com' في payload.config.ts. يشترط هذا العنوان روابط الوسائط ورسائل إعادة التعيين وعمل لوحة الإدارة بشكل صحيح خلف الوكيل.

Payload CMS مقابل Strapi: أيّ نظام إدارة محتوى headless تستضيف ذاتيًا؟

المعيارPayload CMSStrapi
نهج الإعداديعتمد الشيفرة أوّلًا بلغة TypeScript، مُصدَّر مع Gitيعتمد الواجهة الرسومية أوّلًا عبر Content-Type Builder
التكامل مع الواجهة الأماميةأصلي داخل Next.js (بيئة تشغيل واحدة)منفصل، الواجهة الأمامية ونظام إدارة المحتوى مستقلّان
قواعد البيانات المدعومةMongoDB وPostgreSQLPostgreSQL وMySQL وSQLite
كتابة الأنواعTypeScript أصلي من طرف إلى طرفأنواع مُولَّدة، تكامل أقلّ إحكامًا
الوصول إلى بيانات الخادمLocal API دون استدعاء HTTPواجهة REST/GraphQL عبر HTTP
نمذجة المحتوىفي الشيفرة، بواسطة المطوّرينفي الواجهة، متاحة لغير المطوّرين
الذاكرة اللازمة للبناءمرتفعة (بناء Next.js)مرتفعة (بناء لوحة إدارة React)
مثالي لـفرق التطوير ومشاريع Next.js المكتوبة الأنواعالفرق المختلطة والنمذجة المرئية

استغلّ Local API الخاصة بـ Payload في مكوّنات خادم Next.js: بدلًا من استدعاء واجهة API الخاصة بك عبر fetch، استورد getPayload واستعلم قاعدة البيانات مباشرةً (payload.find({ collection: 'posts' })). تزيل بذلك ذهابًا وإيابًا عبر HTTP وتكسب في زمن الكمون كما في الأمان. أمّا للوسائط، فوصّل الإضافة @payloadcms/storage-s3 لتخزين الملفّات المرفوعة خارج خادم VPS، وأتمِت نسخًا يوميًا لقاعدة بياناتك عبر cron لضمان نسخ احتياطية خارج الخادم.

انشر Payload CMS على حزمة موحّدة

يوفّر خادم VPS Cloud من ServOrbit القدرة اللازمة لبناء Next.js الخاص بـ Payload وبيئة Docker جاهزة لـ MongoDB أو PostgreSQL، لاستضافة نظام إدارة المحتوى الذي يعتمد الشيفرة أوّلًا وواجهتك الأمامية على الآلة نفسها.

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

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