قبل أن تنتقل: هل الانتقال مناسب لك؟
Replit بيئة تطوير ناضجة: فيها Postgres مُدار بنسختين منفصلتين للتطوير والإنتاج، وتخزين ملفات، ونشر بأنواع مختلفة. إذا كان تطبيقك يعمل جيدًا هناك وفريقك معتاد عليه، فالبقاء خيار معقول تمامًا.
يفكر أصحاب المشاريع في الانتقال عادةً لأحد سببين. الأول: يريدون أن يبنوا ويعدّلوا بالعربية مع واجهة RTL صحيحة دون أن يكتبوا الكود بأنفسهم. الثاني: التطبيق المنشور على باقة Starter المجانية في Replit يتوقف بعد 30 يومًا ويحمل شارة Replit، وهم يريدون موقعًا دائمًا على نطاقهم.
- مناسب لك إذا كان تطبيقك من نوع Node أو Python أو موقعًا ثابتًا، فأوترا بيئة تطوير كاملة تشغّل الخادم وقاعدة البيانات معًا.
- يحتاج تخطيطًا إذا كان مستخدموك يسجّلون الدخول بحسابات Replit عبر Replit Auth، لأن هذه الحسابات مرتبطة بمنصة Replit نفسها.
- فكّر مرتين إذا كان تطبيقك يعتمد على خدمات مدمجة خاصة بـ Replit لا يوجد لها بديل واضح في كودك.
نعمل على تجهيز لقطات شاشة حقيقية وفيديو قصير يشرح خطوات الانتقال من Replit إلى أوترا، وسنضيفها هنا قريبًا. حتى ذلك الحين اتبع الخطوات المكتوبة بالترتيب.
ما الذي ينتقل وما الذي لا ينتقل
| العنصر | ينتقل؟ | ملاحظات |
|---|---|---|
| الكود | نعم | يدعم Replit ربط المشروع بمستودع GitHub أو GitLab. بعد الدفع إلى GitHub تستورده في أوترا. |
| التصميم | نعم | كل ما في الواجهة موجود في ملفات المشروع، فينتقل مع الكود. |
| بيانات قاعدة البيانات | يدويًا | قاعدة Replit مبنية على Postgres من Neon. تأخذ نسخة من بيانات قاعدة الإنتاج وتستعيدها في PostgreSQL داخل مشروعك في أوترا. |
| حسابات المستخدمين | يعتمد | إن كنت تستخدم Clerk فهو حسابك الخاص وتتصل به بالمفاتيح نفسها. أما Replit Auth فيعتمد على حسابات Replit، فتحتاج طريقة دخول جديدة. |
| النطاق | نعم | تحذف سجلات Replit عند مسجّل النطاق وتضيف سجلات أوترا (TXT للتحقق و A). |
| الروابط والسيو | نعم بشرط | إذا بقيت مسارات التطبيق نفسها وبقي النطاق نفسه. |
| المدفوعات | إعادة ربط | الكود ينتقل، وتضيف مفاتيح البوابة وتحدّث عنوان webhook ليشير إلى الموقع الجديد. |
| الأسرار ومفاتيح API | لا | أسرار Replit لا تخرج مع المستودع. تعيد إدخالها في «البيانات السرية» في أوترا. |
خطوات الانتقال
اربط المشروع بـ GitHub
من مشروعك في Replit اربط مستودع GitHub وادفع كل الفروع التي تحتاجها. تأكد من وجود ملف الحزم (مثل
package.jsonأوrequirements.txt) في المستودع، لأن أوترا تعتمد عليه لتثبيت المكتبات.انسخ أسماء الأسرار
افتح أداة الأسرار في Replit واكتب أسماء المتغيرات فقط، مثل
DATABASE_URLوSTRIPE_SECRET_KEY. القيم تنسخها لاحقًا مباشرة إلى أوترا، ولا تضعها في أي ملف.خذ نسخة من قاعدة الإنتاج
انتبه: لديك قاعدتان، تطوير وإنتاج، والبيانات الحقيقية في قاعدة الإنتاج. أخرج منها نسخة بأداة
pg_dumpباستخدام رابط الاتصال الخاص بها.code pg_dump "$PROD_DATABASE_URL" --no-owner --no-acl -f replit-prod.sqlاستورد المستودع في أوترا
أنشئ مشروعًا جديدًا في أوترا واختر الاستيراد من GitHub. تقرأ أوترا الكود وتشغّله على رابط معاينة خاص.
أعد الأسرار
أضف في «البيانات السرية» كل متغير بالاسم نفسه. إذا كان الكود يقرأ
process.env.DATABASE_URLفاحتفظ بالاسم حتى لا تحتاج تعديلًا.أنشئ القاعدة واستعد البيانات
اطلب من أوترا تجهيز PostgreSQL داخل المشروع، ثم استعادة ملف النسخة. بعدها راجع الجداول والسجلات في معاينة «قاعدة البيانات».
code psql "$DATABASE_URL" -f replit-prod.sqlاستبدل Replit Auth إن وُجد
اطلب من أوترا بناء تسجيل دخول بالبريد وكلمة المرور أو برمز يصل إلى الجوال، مع ربط الحسابات الجديدة بسجلات المستخدمين الحالية عبر البريد.
انشر ونقل النطاق
اضغط «نشر» وجرّب على الرابط الفرعي المجاني. بعدها أضف نطاقك من «نطاق مخصّص» واتبع سجلات DNS الظاهرة.
استوردت تطبيقي من Replit، وهو تطبيق Node مع Postgres. شغّله هنا، وجهّز قاعدة PostgreSQL داخل المشروع، واستعد ملف replit-prod.sql، ثم تأكد أن صفحة الطلبات تعرض البيانات القديمة.
أول 3 أشياء بعد الانتقال
- قارن عدد السجلات في أهم جدولين (مثل الطلبات والعملاء) بين Replit وأوترا، فالرقم نفسه يعني أن النقل تم دون فقد.
- جرّب تسجيل الدخول بحساب حقيقي قديم، خصوصًا إذا غيّرت طريقة الدخول.
- حدّث عنوان webhook في لوحة بوابة الدفع، ثم نفّذ عملية تجريبية صغيرة بمدى أو بطاقة اختبار.
حافظ على ترتيبك في البحث
التطبيقات على Replit تُنشر غالبًا على رابط فرعي من Replit، أو على نطاق مخصّص أضفته عبر سجلات A و TXT. إذا كان لديك نطاق مخصّص فأنت في وضع جيد: انقل السجلات إلى أوترا ويبقى العنوان نفسه أمام Google.
أما إذا كانت زياراتك تأتي إلى الرابط الفرعي من Replit، فلا تستطيع تحويله من خارج Replit. الحل العملي: أبقِ نسخة Replit تعمل فترة قصيرة، وضع في صفحاتها رابطًا واضحًا إلى العنوان الجديد، وسجّل نطاقك الجديد في Google Search Console.
- حافظ على مسارات الصفحات العامة كما هي، مثل
/menuو/book. - إذا غيّرت مسارًا، اطلب من أوترا إضافة تحويل 301 داخل الخادم.
- أرسل خريطة الموقع الجديدة إلى Search Console بعد أن يعمل النطاق.