كيف تنقل مشروعك من Lovable إلى هوستنجر أو أي استضافة خارجية؟
دليل عربي عملي خطوة بخطوة لنقل مشروع Lovable إلى استضافة هوستنجر أو أي استضافة خارجية: تصدير الكود عبر GitHub، متغيّرات البيئة، البناء، رفع مجلّد dist، ملف .htaccess لتوجيه الروابط، تحديث قاعدة البيانات، والنشر التلقائي.
الإجابة المباشرة
لنقل مشروع Lovable إلى هوستنجر: اربط المشروع بـ GitHub من داخل Lovable، استنسخ المستودع على جهازك، أنشئ ملف .env بمتغيّرات المشروع، نفّذ npm install ثم npm run build، وارفع محتويات مجلّد dist إلى مجلّد public_html في هوستنجر، ثم أضف ملف .htaccess يوجّه كل المسارات إلى index.html. أخيراً حدّث الدومين في إعدادات المصادقة وCORS لقاعدة بياناتك. المدّة المتوقّعة من 30 إلى 60 دقيقة لمشروع بسيط.
هل تحتاج النقل أصلاً؟
قبل أي خطوة تقنية، كن صريحاً مع نفسك: Lovable تنشر مشروعك وتتيح ربط دومينك المخصّص من داخل المنصّة، وهذا يكفي أغلب المشاريع. النقل خيار صحيح في ثلاث حالات فقط:
- عندك استضافة قائمة تدفع ثمنها بالفعل وتريد جمع مواقعك في مكان واحد.
- تحتاج تحكّماً كاملاً في الخادم أو في إعدادات الشبكة والنطاقات الفرعية.
- تريد تقليل الاعتماد على منصّة واحدة والاحتفاظ بنسخة تشغيل مستقلّة.
وإن كان دافعك «توفير التكلفة» فقط، فاحسب الوقت: النقل يعني أنّك أنت من يبني ويرفع مع كل تعديل. راجع صفحة الأسعار قبل القرار.
الخطوة صفر: تحقّق من نوع مشروعك
هذه أهم نقطة يتجاهلها أغلب الأدلّة. مشاريع Lovable ليست نوعاً واحداً:
| نوع المشروع | كيف تعرفه | الاستضافة المناسبة |
|---|---|---|
| تطبيق واجهة ثابت (Vite + React) | npm run build يُنتج مجلّد dist فيه index.html | استضافة مشتركة في هوستنجر تكفي |
| مشروع بتصيير خادمي أو دوال خادمية | يوجد كود يعمل على الخادم أو مسارات API داخل المشروع | VPS أو استضافة تشغّل Node.js |
| مشروع يعتمد على خدمات سحابية خارجية | قاعدة بيانات ومصادقة وتخزين خارج المشروع | يعمل مع الاثنتين — الخدمات تبقى في مكانها |
لا ترفع مشروعاً يحتاج خادماً على استضافة مشتركة ثم تتساءل لماذا يظهر بياضاً. تحقّق من النوع أولاً، فهذا يوفّر عليك ساعات.
ابدأ من استضافة تناسب مشاريع Lovable
لتطبيقات الواجهة الثابتة تكفي الاستضافة المشتركة، وللمشاريع التي تحتاج Node اختر خطة VPS. جميع الخطط تشمل لوحة hPanel وشهادة SSL مجانية ومدير ملفات عربي الواجهة.
تصفّح خطط هوستنجرإفصاح: الرابط أعلاه رابط إحالة، قد نحصل على عمولة عند الشراء دون أي تكلفة إضافية عليك. لا يؤثّر ذلك على محتوى الدليل، ونحن منصّة مستقلّة غير تابعة لـ Lovable أو هوستنجر.
خطوات النقل بالتفصيل
- 1. اربط المشروع بـ GitHub وصدّر الكود
من داخل مشروع Lovable افتح زرّ GitHub أعلى الصفحة ثم Connect to GitHub وأنشئ مستودعاً. بعدها استنسخ المستودع على جهازك ونفّذ npm install.
- 2. تحقّق من نوع المشروع قبل أي شيء
افتح package.json و vite.config: إن كان المشروع Vite + React عادياً فمخرجاته ملفات ثابتة تصلح لأي استضافة مشتركة. أمّا إن كان يعتمد على تصيير من الخادم أو دوال خادمية فيحتاج استضافة تشغّل Node لا استضافة مشتركة.
- 3. أنشئ ملف .env قبل البناء
متغيّرات Vite تُحقن وقت البناء لا وقت التشغيل. ضع مفاتيح قاعدة البيانات العامّة (URL والمفتاح العام) في ملف .env في جذر المشروع، ولا ترفع أي مفتاح سرّي إلى كود الواجهة.
- 4. ابنِ المشروع واختبره محلياً
نفّذ npm run build ثم npm run preview وتصفّح الروابط الداخلية كلّها. الناتج في مجلّد dist، وهذا هو ما سيُرفع للاستضافة.
- 5. ارفع محتويات dist إلى public_html
من hPanel افتح File Manager ثم public_html، احذف الملف الافتراضي، وارفع محتويات مجلّد dist لا المجلّد نفسه. أو استخدم FTP/SSH لرفع أسرع.
- 6. أضف ملف .htaccess لتوجيه الروابط
بدون .htaccess ستعمل الصفحة الرئيسية فقط وتعطي بقية الروابط 404. ضع الملف داخل public_html وأيضاً داخل مجلّد public بالمشروع ليُنسخ مع كل بناء.
- 7. فعّل شهادة SSL وأجبر HTTPS
من hPanel فعّل شهادة SSL المجانية للدومين، ثم أجبر التحويل إلى HTTPS عبر قاعدة إعادة توجيه في .htaccess.
- 8. حدّث إعدادات قاعدة البيانات والمصادقة
في لوحة قاعدة البيانات حدّث Site URL و Redirect URLs إلى دومينك الجديد، وأضف الدومين في إعدادات CORS إن كنت تستخدم التخزين أو دوالّ خادمية.
- 9. اختبر كل شيء بعد الرفع
افتح الدومين، وجرّب رابطاً داخلياً مباشرة من شريط العنوان، وسجّل الدخول، وارفع صورة، وتأكّد من ظهور المحتوى على الجوّال.
- 10. أتمتة النشر (اختياري لكن موصى به)
أضف GitHub Actions تبني المشروع وترفعه عبر FTP عند كل دفعة إلى الفرع الرئيسي، حتى لا تكرّر الرفع اليدوي مع كل تعديل.
الأوامر الأساسية
git clone https://github.com/USERNAME/REPO_NAME.git
cd REPO_NAME
npm install
npm run build
npm run previewVITE_SUPABASE_URL=https://xxxxxxxx.supabase.co
VITE_SUPABASE_ANON_KEY=المفتاح_العاماستخدم المفتاح العام (anon / publishable) فقط. أي مفتاح خدمة سرّي يجب ألّا يوضع في كود الواجهة إطلاقاً لأنّه يصبح مقروءاً لكل زائر، وحمايتك الحقيقية هي سياسات الصفوف (RLS) على قاعدة البيانات.
cd dist
zip -r ../site.zip .
scp -P 65002 ../site.zip USER@HOST:~/public_html/
ssh -p 65002 USER@HOST
cd ~/public_html && unzip -o site.zip && rm site.zipملف .htaccess — الخطوة التي يسقط عندها الجميع
ضع هذا الملف داخل public_html، وضع نسخة منه في مجلّد public بالمشروع حتى يُنسخ تلقائياً مع كل بناء:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# إجبار HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# توجيه تطبيق الصفحة الواحدة
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/plain application/javascript application/json image/svg+xml
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType text/html "access plus 0 seconds"
</IfModule>
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "SAMEORIGIN"
Header set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>تحديث قاعدة البيانات والمصادقة
- Site URL: غيّرها إلى دومينك الجديد بصيغة https كاملة.
- Redirect URLs: أضف الدومين مع نمط شامل لمساراته حتى تعمل روابط تأكيد البريد واستعادة كلمة المرور.
- CORS: أضف الدومين في إعدادات الواجهة البرمجية إن كنت تستخدم التخزين أو دوالّ خادمية.
- مزوّدو الدخول الاجتماعي: حدّث Redirect URI في لوحة كل مزوّد (Google مثلاً) وإلا فشل تسجيل الدخول.
نشر تلقائي مع كل تحديث
بدل الرفع اليدوي، أضف هذا الملف في .github/workflows/deploy.yml، وضع بيانات FTP ومتغيّرات البيئة في أسرار المستودع:
name: Deploy to Hostinger
on:
push:
branches: [ main ]
workflow_dispatch:
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm ci
- name: Build
env:
VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
VITE_SUPABASE_ANON_KEY: ${{ secrets.VITE_SUPABASE_ANON_KEY }}
run: npm run build
- name: Copy .htaccess
run: cp public/.htaccess dist/.htaccess || true
- name: Deploy via FTP
uses: SamKirkland/FTP-Deploy-Action@v4.3.5
with:
server: ${{ secrets.FTP_HOST }}
username: ${{ secrets.FTP_USER }}
password: ${{ secrets.FTP_PASSWORD }}
server-dir: /public_html/
local-dir: ./dist/بيانات FTP تجدها في hPanel ضمن قسم الملفات ← حسابات FTP. لا تكتبها في الكود أبداً، ضعها في أسرار المستودع فقط.
ما الذي يكسر الموقع بعد النقل؟
| العرض | السبب | الحل |
|---|---|---|
| صفحة بيضاء و404 لملفات الأصول | الموقع مرفوع داخل مجلّد فرعي لا في جذر الدومين | أضف base: '/folder/' في vite.config ثم أعد البناء |
| الروابط الداخلية تعطي 404 | لا يوجد ملف .htaccess لتوجيه SPA | أضف قاعدة إعادة التوجيه إلى index.html |
| تسجيل الدخول يعيدك للدومين القديم | Site URL و Redirect URLs لم تُحدَّث | حدّثها في إعدادات المصادقة إلى الدومين الجديد |
| المفاتيح undefined | بُني المشروع قبل إنشاء ملف .env | أنشئ .env ثم أعد البناء وارفع الناتج |
| الدوال الخادمية لا تعمل | الاستضافة المشتركة لا تشغّل كوداً خادمياً | أبقِ الدوال عند مزوّدها السحابي وحدّث CORS فقط |
| خلط المحتوى (Mixed content) | روابط داخلية بـ http بعد تفعيل SSL | استخدم https في كل الروابط وأجبر التحويل من .htaccess |
قائمة تحقّق نهائية
- الصفحة الرئيسية تفتح على https بدون تحذير شهادة.
- فتح رابط داخلي مباشرة من شريط العنوان يعطي الصفحة لا 404.
- تسجيل الدخول والتسجيل يعملان ويعيدانك إلى الدومين الجديد.
- الصور والخطوط تظهر، ولا توجد أخطاء في وحدة تحكّم المتصفّح.
- الموقع سليم على الجوّال بعرض 375 بكسل.
- أعدت إرسال خريطة الموقع في Search Console، وضبطت التحويلات 301 من الدومين القديم إن وُجد.
بعد النقل: كيف تستمر في التطوير؟
تعديلاتك داخل Lovable لن تصل إلى الموقع المرفوع تلقائياً. المسار الصحيح: عدّل في Lovable ← يُدفع التغيير إلى GitHub ← يبني GitHub Actions ويرفع إلى الاستضافة. هذه الحلقة هي الفرق بين موقع حيّ وموقع يتجمّد عند نسخة الرفع الأولى. وإن أردت العودة إلى النشر داخل Lovable لاحقاً فالأمر ممكن دائماً، فالمشروع لم يفارق المنصّة.
أسئلة متكرّرة عن نقل مشاريع Lovable
+هل أستطيع نقل مشروع Lovable إلى هوستنجر؟
نعم. مشروع Lovable هو مشروع ويب حقيقي وليس محتوى محبوساً داخل المنصّة. تربط المشروع بـ GitHub، تستنسخ الكود، تبنيه محلياً، ثم ترفع مخرجات مجلّد dist إلى مجلّد public_html في هوستنجر. الشرط الوحيد أن يكون مشروعك من النوع الذي يُنتج ملفات ثابتة، وإلا فستحتاج استضافة تشغّل Node مثل VPS.
+هل الاستضافة المشتركة تكفي؟
تكفي إذا كان المشروع تطبيق واجهة (Vite + React) يُنتج ملفات HTML وCSS وJS ثابتة، وكانت قاعدة البيانات والمصادقة تعمل من خدمة سحابية خارجية. لا تكفي إذا كان مشروعك يعتمد على تصيير من الخادم (SSR) أو دوال خادمية داخل نفس التطبيق؛ في هذه الحالة تحتاج خطة VPS أو استضافة تدعم Node.js.
+لماذا تظهر صفحة 404 عند فتح رابط داخلي بعد النقل؟
لأن تطبيقات الصفحة الواحدة تُدير التوجيه في المتصفّح، بينما الخادم يبحث عن ملف حقيقي بهذا المسار فلا يجده. الحل إضافة ملف .htaccess داخل public_html يعيد توجيه أي طلب غير موجود إلى index.html.
+هل تنتقل قاعدة البيانات مع الموقع؟
لا. قاعدة البيانات والمصادقة والتخزين تبقى في مزوّدها السحابي، والموقع المرفوع على هوستنجر يتّصل بها عبر الإنترنت. كل ما عليك هو تحديث الدومين المسموح به في إعدادات المصادقة وCORS.
+لماذا تظهر المفاتيح undefined بعد الرفع؟
لأن متغيّرات البيئة في Vite تُقرأ وقت البناء لا وقت التشغيل. إن بنيت المشروع قبل إنشاء ملف .env فلن تكون القيم موجودة داخل الملفات المبنية. أنشئ الملف ثم أعد npm run build وارفع الناتج الجديد.
+هل تعديلاتي في Lovable ستظهر تلقائياً على الموقع بعد النقل؟
لا تلقائياً. بعد النقل يصبح المسار: تعدّل في Lovable، فيُدفع التغيير إلى GitHub، ثم تبني وترفع يدوياً أو عبر GitHub Actions. من دون هذه الحلقة سيبقى الموقع المرفوع على نسخته القديمة.
+هل يمكنني الإبقاء على النشر داخل Lovable بدل النقل؟
نعم، وهذا الخيار الأبسط لمعظم الناس: Lovable تنشر مشروعك وتتيح ربط دومينك المخصّص مباشرة. النقل إلى استضافة خارجية يناسب من يريد التحكّم الكامل في الخادم، أو دمج الموقع مع بنية استضافة قائمة لديه، أو تقليل الاعتماد على منصّة واحدة.
+ماذا عن الصور والملفات المرفوعة؟
الصور الموجودة داخل مجلّد المشروع تنتقل مع الكود. أمّا الملفات التي رفعها المستخدمون إلى خدمة تخزين سحابية فتبقى في مكانها وتُقرأ عبر الرابط، بشرط تحديث إعدادات CORS بالدومين الجديد.
+كم يستغرق النقل؟
لمشروع بسيط: من 30 إلى 60 دقيقة تشمل التصدير والبناء والرفع وضبط .htaccess والدومين. لمشروع فيه مصادقة ودفع وتخزين، احسب نصف يوم عمل مع الاختبار.
نتولّى عنك النقل أو نبني مشروعك من الصفر
النقل يبدو بسيطاً حتى تصطدم بـ 404 والمصادقة والدومين. إن أردت تسليماً نظيفاً من أوّل مرّة، نتكفّل نحن بالتنفيذ والاختبار.
بناء منتج كامل
تصميم عربي RTL، قاعدة بيانات، مصادقة، دفع، ونشر على دومينك.
- جلسة تخطيط للفكرة
- بناء كامل قابل للنشر
- دعم 30 يوماً بعد التسليم
مراجعة أو نقل مشروع قائم
تدقيق الجودة والأمان والأداء والسيو، أو نقل كامل إلى استضافتك مع أتمتة النشر.
- تدقيق UI/UX وأمان
- نقل وضبط .htaccess والدومين
- أتمتة نشر عبر GitHub Actions
جهّز استضافتك قبل أن تبدأ النقل
احجز خطّتك من هوستنجر، ثم ارجع إلى الخطوة الخامسة في هذا الدليل وارفع مجلّد dist مباشرة.
تصفّح خطط هوستنجرإفصاح: الرابط أعلاه رابط إحالة، قد نحصل على عمولة عند الشراء دون أي تكلفة إضافية عليك. لا يؤثّر ذلك على محتوى الدليل، ونحن منصّة مستقلّة غير تابعة لـ Lovable أو هوستنجر.
هل كان هذا المحتوى مفيداً؟
استلم أحدث الأدلّة والبرومبتات كل أسبوع
خلاصة عربية أسبوعية عن Lovable وVibe Coding — بلا سبام، إلغاء متى شئت.
