نشر البروجيكت على الإنترنت — بدون SSH — خطوة بخطوة
إذا لم يكن لديك حساب، اذهب إلى github.com وسجّل (مجاني).
بعد الدخول: New → Repository name: cybershield-ai → Private → Create repository
تحقق أن ملف .gitignore من الجزء 1 موجود في C:\Projects\cybershield\
افتح PowerShell في C:\Projects\cybershield\ وشغّل:
استبدل USERNAME باسم حسابك على GitHub
اذهب إلى github.com/USERNAME/cybershield-ai — يجب أن ترى ملفات المشروع.
في لوحة cPanel اذهب إلى قسم Databases ثم اضغط Remote MySQL
في حقل Host اكتب: % ثم اضغط Add Host
% يعني "السماح لأي IP" — مناسب لـ Render لأن IP يتغيّر. يمكن تضييقه لاحقاً.في cPanel اذهب إلى MySQL Databases أو Email Accounts أو راجع بريد الترحيب من الاستضافة. ابحث عن شيء مثل:
احفظ هذا الاسم — ستحتاجه في الخطوة التالية
استبدل REMPLACER_PAR_HOST باسم الخادم الذي وجدته:
=f0hRYXc65GGq+1K%3Df0hRYXc65GGq%2B1K (= → %3D، + → %2B)
ستنسخه لاحقاً إلى Render.com كـ Environment Variable.
اذهب إلى render.com واضغط Get Started for Free
اختر Sign in with GitHub (الأسهل — يربط الحسابين مباشرة)
بعد الدخول: New → Web Service
اختر Connect account ← اختر مستودع cybershield-ai
إذا لم يظهر: Configure account → اختر الـ repo
| الحقل | القيمة |
|---|---|
| Name | cybershield-backend |
| Region | Frankfurt (EU) — الأقرب للجزائر |
| Branch | main |
| Runtime | Docker |
| Dockerfile Path | ./backend/Dockerfile |
| Docker Context | ./backend |
| Plan | Free |
اضغط Advanced → Add Environment Variable وأضف هذه المتغيرات:
| Key | Value |
|---|---|
| DATABASE_URL | الرابط الذي جهّزته في الخطوة السابقة |
| SECRET_KEY | اضغط "Generate" — Render يولّدها |
| DEBUG | false |
| ALLOWED_ORIGINS | ["https://netsecure.storismo.com"] |
| FIRST_SUPERUSER_EMAIL | admin@cybershield.io |
| FIRST_SUPERUSER_PASSWORD | ChangeMe123! |
| ACCESS_TOKEN_EXPIRE_MINUTES | 60 |
Render يبدأ البناء تلقائياً — انتظر 3-5 دقائق حتى تظهر:
Render سيعطيك رابطاً مثل:
احتفظ بهذا الرابط — ستحتاجه للخطوة التالية
افتح C:\Projects\cybershield\frontend\.env.production وعدّل:
استبدل بالرابط الفعلي الذي حصلت عليه من Render
dist/ هي ملفات ثابتة (HTML/CSS/JS) — تعمل على أي استضافة بدون أي إعداد إضافي.
في لوحة cPanel اضغط File Manager
ابحث عن المجلد المرتبط بـ netsecure.storismo.com — عادةً يكون:
netsecure.storismo.com → Document Root: public_html/netsecure
إذا كان المجلد يحتوي على ملفات قديمة — احذفها كلها أولاً.
في File Manager اضغط Upload ثم ارفع محتوى المجلد (وليس المجلد نفسه):
index.html مباشرةً داخل مجلد netsecure.
البنية الصحيحة بعد الرفع:
إذا كانت الملفات كثيرة، يمكنك ضغطها ثم رفعها:
ارفع frontend_dist.zip إلى المجلد في File Manager ثم اضغط Extract
افتح في المتصفح:
يجب أن ترى:
افتح:
يجب أن تظهر صفحة تسجيل الدخول لـ CyberShield AI
| الحقل | القيمة |
|---|---|
| admin@cybershield.io | |
| Password | ChangeMe123! |
يجب أن تظهر صفحة توثيق API الكاملة.
| المشكلة | الحل |
|---|---|
| صفحة 404 عند تحديث المتصفح | تأكد أن .htaccess مرفوع في نفس مجلد index.html |
| CORS error في Console | تأكد أن ALLOWED_ORIGINS في Render يحتوي على رابط موقعك بالضبط |
| Backend لا يتصل بـ MySQL | تأكد من تفعيل Remote MySQL في cPanel وصحة رابط DATABASE_URL |
| Render يعطي خطأ Build | تحقق من Logs في Render Dashboard للسطر الذي يحتوي على ERROR |
| الموقع بطيء عند أول طلب | طبيعي — الخطة المجانية تُوقف البيئة بعد 15 دقيقة من عدم الاستخدام |