نقل تطبيق Next.js من Vercel إلى خادمك
لنقل تطبيق Next.js من Vercel إلى خادمك، اربط مستودع GitHub نفسه بلوحة Coolify على الخادم، وانسخ متغيرات البيئة، واستبدل الأجزاء الخاصة بـ Vercel (cron والتحليلات والتخزين)، واختبر على عنوان مؤقت، وحوّل سجل A لنطاقك في الأخير. وتقول وثائق Next.js إن كل الميزات تعمل على خادم Node.js. ويبقى نشرك على Vercel قائمًا حتى تحوّل، فلديك طريق للعودة.
الأمر في حقيقته اختيار لنموذج الفوترة. تشرح وثائق Vercel أن البنية التحتية تُحاسَب بحسب البيانات المنقولة والطلبات ومدة الحوسبة. أما الخادم فبرسم شهري ثابت للـ RAM وCPU والقرص التي تختارها. ويبيّن مقارنتنا كيف تحسب أرقامك أنت.
ما الذي يتغير عند النقل؟
| الموضوع | Vercel | خادمك |
|---|---|---|
| الفوترة | بحسب الاستخدام | شهرية ثابتة، وترافيك غير محدود، ونسخ احتياطية يومية مشمولة في السعر |
| الموقع | شبكة توصيل عالمية | خادم واحد في إسطنبول |
| قفزات الحركة | تمتصها المنصة وتكبر الفاتورة | يبطؤ الموقع حين تنفد السعة، وأنت ترفع الحجم |
| عمليات البناء | على أجهزة المنصة | على الخادم نفسه، فالبناء يحدد الذاكرة التي تحتاجها |
| الصيانة | عمل المنصة | تحديثات نظام التشغيل والحزم والمراقبة عليك، وصلاحية root لك |
| المعاينات | تلقائية للفروع | تُفعَّل على حدة في Coolify |
| أمان الشبكة | Vercel Firewall | تدير جدار حماية الخادم بنفسك |
بصراحة: هناك خادم واحد، ولا توصيل حافّي عالمي، وتصبح الصيانة عليك. من لن يهتم؟ إذا كان زوارك في تركيا والبلدان المجاورة في الغالب فموقع واحد كافٍ. وإذا كانت صفحاتك كلها تقرأ من قاعدة بيانات واحدة فإن الاستجابات تنتظر تلك القاعدة أينما عملت الشيفرة. ونادرًا ما تحتاج لوحات المعلومات والأدوات الداخلية والمنتجات ذات الحركة المتوقعة إلى توسيع تلقائي. أما إذا كان جمهورك منتشرًا في العالم، أو ترتفع حركتك ارتفاعًا حادًا، أو لا تريد أن تلمس الصيانة إطلاقًا، فقد يكون Vercel أنسب.
جهّز الخادم الجديد
- اطلب من صفحة Next.js VPS. يأتي الخادم مع Coolify.
- اربط المستودع. الطريق المختصر: افتح المشروع في Claude Code أو Cursor، والصق صف الصقه في أداة الذكاء الاصطناعي من تبويب نظرة عامة، وتتولى الأداة النشر. ويمكنك أيضًا فعل ذلك يدويًا.
- ثبّت إصدار Node بـ
engines.nodeفيpackage.json. - اسحب متغيراتك:
vercel env pull .env.move --environment=production. لا يمكن قراءة قيم الأسرار مرة أخرى، فيكتب CLI قيمًا مؤقتة وتحصل أنت على الحقيقية من مصدرها. أبقِ الملف خارج المستودع وأدخل محتواه تحت Environment Variables في Coolify، مع إبقاء قيمNEXT_PUBLIC_متاحة وقت البناء. - ابحث عن الشيفرة الخاصة بـ Vercel:
grep -n "@vercel/" package.jsonوgrep -rnE "VERCEL_|x-vercel-" app src. متغيرات النظام مثلVERCEL_URLغير موجودة على خادمك، فاستخدم متغيراتك أنت.
ميزات Next.js والأجزاء الخاصة بـ Vercel
| الجزء | على خادمك | ما العمل |
|---|---|---|
| تحسين الصور | يعمل مع next start بلا إعداد | يستخدم CPU والذاكرة في خادمك |
| ISR والتخزين المؤقت | يعملان من تلقاء نفسيهما على نسخة واحدة بقرص محلي | يجب أن تتشارك عدة نسخ الذاكرة المؤقتة، وتمتلئ من جديد بعد كل نشر |
| Middleware (وهو Proxy في Next.js 16) | يعمل مع next start بلا إعداد | تُعالَج الطلبات الآن في إسطنبول |
| مهام cron | لا يُقرأ vercel.json | استدعِ المسار نفسه من Scheduled Tasks في Coolify: curl -fsS -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/cron. يعمل cron في Vercel بتوقيت UTC، بينما يستخدم Coolify المنطقة الزمنية للخادم |
| إعادة التوجيه والترويسات | لا يُقرأ vercel.json | انقلها إلى next.config |
| Web Analytics وSpeed Insights | تعتمد على مسارات يضيفها Vercel إلى النشر | أزل المكوّنات واستخدم أداة مثل Umami |
| AI Gateway | يمكن استدعاؤه من أي خادم | اضبط AI_GATEWAY_API_KEY |
وماذا عن Postgres وKV وBlob؟
- Postgres وKV: تقول وثائق Vercel إن هذين المنتجين انتهيا وإن قواعد البيانات الأقدم انتقلت إلى مزودي Marketplace، فبياناتك لدى مزوّد منفصل خلف متغير بيئة. انقل ذلك المتغير فيصل التطبيق إلى قاعدة البيانات نفسها. وإذا كانت الفوترة تمر عبر حسابك في Vercel فخذ بياناتك قبل إغلاقه. وقاعدة بيانات بعيدة تضيف هذه المسافة إلى كل استعلام.
- نقلها إلى خادمك: أنشئ PostgreSQL في Coolify، وصدّر بـ
pg_dump -Fc "OLD-DATABASE-URL" --no-owner --no-privileges -f backup.dump، وارفع الأرشيف بـ Import backup في صفحة Backups الخاصة بقاعدة البيانات. وإذا كان Redis مجرد ذاكرة مؤقتة فالبدء فارغًا لا بأس به عادةً. - Blob:
BLOB_READ_WRITE_TOKENيعمل من مضيف آخر أيضًا، فيمكنك تركه كما هو. ولجلب الملفات إلى خادمك غيّر الشيفرة وركّب المجلد بـ Persistent Storage.
تحويل نطاقك دون توقف
- اختبر على عنوان HTTPS الذي يعطيك إياه Coolify: تسجيل الدخول والنماذج والمدفوعات والصور، وExecute now لمهام cron.
- يعرض
dig NS example.com +shortأين توجد سجلاتك: في صفحة Domains في Vercel إذا كانت تسرد خوادم أسماء Vercel، وإلا لدى مزوّد DNS لديك. - خفّض TTL على سجلي الجذر و
www، إلى 300 ثانية مثلًا، وانتظر حتى تمر مدة TTL القديمة. - إذا كانت قاعدة البيانات تنتقل أيضًا فأوقف الكتابة وحمّل النسخة الأخيرة.
- وجّه سجل A إلى عنوان IP للخادم. واترك سجلات MX وTXT كما هي من أجل البريد.
- أضف النطاق مع
httpsفي صفحة Domains في Coolify واضغط Redeploy. وتصدر الشهادة تلقائيًا. - أبقِ نشر Vercel قائمًا بضعة أيام. فالزوار الذين لديهم السجل القديم في الذاكرة المؤقتة يصلون إليه، ويمكنك إعادة توجيه السجل إن لزم.
- بعد أن تنتقل الحركة، أزل النطاق من مشروع Vercel، واقطع ارتباط Git بـ Disconnect، وأعد TTL إلى قيمته.
لا تصدر الشهادة إلا بعد أن يشير النطاق إلى الخادم، فقد يرى الزوار الأوائل تحذير شهادة قصيرًا. فبدّل في ساعة هادئة.
الأسئلة الشائعة
بأي حجم أبدأ؟
توصي صفحة البيع بـ 4 GB من RAM على الأقل و2 vCore و40 GB من القرص. بُني مشروع صغير على 2 GB، أما مشروع فيه 85 حزمة فنفدت ذاكرته عند 2 GB وبُني عند 4 GB. ويمكنك رفع الحجم من لوحتك.
كم ستكلف شهريًا؟
سعر هذا الحجم نحو $6 شهريًا (شاملًا ضريبة القيمة المضافة)، ومن خارج تركيا تدفع بالدولار الأمريكي. الترافيك غير محدود.
هل يجب أن أنقل نطاقًا اشتريته من Vercel؟
لا. تعامل وثائق Vercel التسجيل وDNS على أنهما منفصلان. ويكفي تغيير سجل A في Vercel، ويتغلب سجلك على السجلات الافتراضية.
كيف تعمل التحديثات بعد النقل؟
مع webhook يبني git push كل نسخة وينشرها. وإذا ساءت إحداها فإن صفحة Rollback في Coolify تعيدك إلى صورة سابقة.
هل أستطيع النقل دون نقل قاعدة البيانات؟
نعم، وهو الترتيب الأقل مخاطرة. انقل التطبيق أولًا وقاعدة البيانات لاحقًا.
التعليقات0
لا توجد تعليقات بعد
كن أول من يشارك رأيه.
يرجى تسجيل الدخول أو إنشاء حساب لترك تعليق.