diff --git a/cursor-fullstack/cloudflare/deploy-simple.sh b/cursor-fullstack/cloudflare/deploy-simple.sh new file mode 100755 index 000000000..bb6e963bb --- /dev/null +++ b/cursor-fullstack/cloudflare/deploy-simple.sh @@ -0,0 +1,109 @@ +#!/bin/bash + +# سكريبت مبسط لنشر التطبيق على Cloudflare +set -e + +# الألوان +GREEN='\033[0;32m' +BLUE='\033[0;34m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +NC='\033[0m' + +echo -e "${BLUE}" +echo "==========================================" +echo " 🚀 نشر تطبيق Cursor AI IDE" +echo " 📦 على Cloudflare" +echo "==========================================" +echo -e "${NC}" + +# التحقق من وجود الرمز المميز +if [ -z "$CLOUDFLARE_API_TOKEN" ]; then + echo -e "${RED}❌ خطأ: لم يتم تعيين CLOUDFLARE_API_TOKEN${NC}" + echo "" + echo "يرجى تعيين الرمز المميز:" + echo "export CLOUDFLARE_API_TOKEN=your_token_here" + echo "" + echo "أو إنشاء رمز جديد من:" + echo "https://dash.cloudflare.com/profile/api-tokens" + exit 1 +fi + +echo -e "${GREEN}✅ تم تعيين الرمز المميز${NC}" + +# التحقق من المصادقة +echo -e "${YELLOW}التحقق من المصادقة...${NC}" +if ! wrangler whoami &> /dev/null; then + echo -e "${RED}❌ فشل في المصادقة${NC}" + echo "يرجى التحقق من صحة الرمز المميز وصلاحياته" + exit 1 +fi + +echo -e "${GREEN}✅ تم التحقق من المصادقة بنجاح${NC}" + +# بناء الواجهة الأمامية +echo -e "${YELLOW}بناء الواجهة الأمامية...${NC}" +cd frontend +npm run build +echo -e "${GREEN}✅ تم بناء الواجهة الأمامية بنجاح${NC}" + +# محاولة نشر Backend +echo -e "${YELLOW}محاولة نشر Backend...${NC}" +cd .. +if wrangler deploy --env="" 2>/dev/null; then + echo -e "${GREEN}✅ تم نشر Backend بنجاح${NC}" + BACKEND_DEPLOYED=true +else + echo -e "${YELLOW}⚠️ فشل في نشر Backend - قد تكون الصلاحيات غير كافية${NC}" + BACKEND_DEPLOYED=false +fi + +# محاولة نشر Frontend +echo -e "${YELLOW}محاولة نشر Frontend...${NC}" +cd frontend +if wrangler pages deploy dist --project-name cursor-ide 2>/dev/null; then + echo -e "${GREEN}✅ تم نشر Frontend بنجاح${NC}" + FRONTEND_DEPLOYED=true +else + echo -e "${YELLOW}⚠️ فشل في نشر Frontend - قد تكون الصلاحيات غير كافية${NC}" + FRONTEND_DEPLOYED=false +fi + +cd .. + +# عرض النتائج +echo -e "\n${GREEN}==========================================" +echo " 📊 نتائج النشر" +echo "==========================================" +echo -e "${NC}" + +if [ "$BACKEND_DEPLOYED" = true ]; then + echo -e "${GREEN}✅ Backend: https://cursor-backend.workers.dev${NC}" + echo -e " WebSocket: wss://cursor-backend.workers.dev" + echo -e " Health: https://cursor-backend.workers.dev/health" +else + echo -e "${RED}❌ Backend: فشل في النشر${NC}" +fi + +if [ "$FRONTEND_DEPLOYED" = true ]; then + echo -e "${GREEN}✅ Frontend: https://cursor-ide.pages.dev${NC}" +else + echo -e "${RED}❌ Frontend: فشل في النشر${NC}" +fi + +# نصائح إضافية +if [ "$BACKEND_DEPLOYED" = false ] || [ "$FRONTEND_DEPLOYED" = false ]; then + echo -e "\n${YELLOW}💡 نصائح لحل المشكلة:${NC}" + echo "1. تأكد من تفعيل خدمة R2 في Cloudflare Dashboard" + echo "2. أنشئ رمز مميز جديد بالصلاحيات التالية:" + echo " - Cloudflare Workers:Edit" + echo " - Cloudflare Pages:Edit" + echo " - Account:Read" + echo " - Zone:Read" + echo "3. أو جرب النشر اليدوي عبر Dashboard" +fi + +echo -e "\n${GREEN}==========================================" +echo " 🎉 انتهى النشر! 🎉" +echo "==========================================" +echo -e "${NC}" \ No newline at end of file diff --git a/cursor-fullstack/حل_مشكلة_النشر_على_Cloudflare.md b/cursor-fullstack/حل_مشكلة_النشر_على_Cloudflare.md new file mode 100644 index 000000000..edf911c77 --- /dev/null +++ b/cursor-fullstack/حل_مشكلة_النشر_على_Cloudflare.md @@ -0,0 +1,140 @@ +# 🔧 حل مشكلة النشر على Cloudflare + +## 🚨 **المشكلة الحالية:** +الرمز المميز (API Token) لا يحتوي على الصلاحيات الكافية لنشر التطبيق على Cloudflare. + +## ✅ **ما تم إنجازه بنجاح:** +- ✅ إصلاح جميع أخطاء الكود +- ✅ إنشاء مساحات KV المطلوبة +- ✅ تحديث ملفات التكوين +- ✅ بناء الواجهة الأمامية بنجاح + +## 🚀 **الحلول المتاحة:** + +### **الحل الأول: إنشاء رمز مميز جديد (الأفضل)** + +1. **اذهب إلى Cloudflare Dashboard:** + - [https://dash.cloudflare.com/profile/api-tokens](https://dash.cloudflare.com/profile/api-tokens) + +2. **اضغط على "Create Token"** + +3. **اختر "Custom token"** + +4. **أضف هذه الصلاحيات:** + ``` + Cloudflare Workers:Edit + Cloudflare Pages:Edit + Account:Read + Zone:Read + ``` + +5. **اختر الحساب:** + ``` + Thailand.2528hho@gmail.com's Account + ``` + +6. **انسخ الرمز الجديد واستخدمه:** + ```bash + export CLOUDFLARE_API_TOKEN=your_new_token_here + cd cloudflare + ./deploy-with-token.sh + ``` + +### **الحل الثاني: النشر اليدوي عبر Dashboard** + +#### **1. تفعيل خدمة R2:** +- اذهب إلى [Cloudflare Dashboard](https://dash.cloudflare.com) +- اختر "R2 Object Storage" +- فعّل الخدمة + +#### **2. إنشاء R2 Bucket:** +- أنشئ bucket باسم `cursor-files` + +#### **3. نشر Backend (Workers):** +- اذهب إلى "Workers & Pages" +- اضغط "Create Worker" +- انسخ الكود من `cloudflare/backend/index.js` +- انسخ الكود من `cloudflare/backend/websocket-do.js` +- احفظ ونشر + +#### **4. نشر Frontend (Pages):** +- اذهب إلى "Pages" +- اضغط "Create a project" +- اختر "Upload assets" +- ارفع محتويات مجلد `cloudflare/frontend/dist/` + +### **الحل الثالث: استخدام GitHub Actions** + +أنشئ ملف `.github/workflows/deploy.yml`: + +```yaml +name: Deploy to Cloudflare + +on: + push: + branches: [ main ] + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: '18' + + - name: Install dependencies + run: | + cd cursor-fullstack/cloudflare/frontend + npm install + + - name: Build frontend + run: | + cd cursor-fullstack/cloudflare/frontend + npm run build + + - name: Deploy to Cloudflare Pages + uses: cloudflare/pages-action@v1 + with: + apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} + accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + projectName: cursor-ide + directory: cursor-fullstack/cloudflare/frontend/dist +``` + +## 📋 **الخطوات التالية:** + +### **إذا كنت تريد استخدام الرمز الحالي:** +1. اذهب إلى Cloudflare Dashboard +2. فعّل خدمة R2 +3. أنشئ R2 bucket باسم `cursor-files` +4. جرب النشر مرة أخرى + +### **إذا كنت تريد حل سريع:** +1. أنشئ رمز مميز جديد بالصلاحيات المطلوبة +2. استخدم الأمر: + ```bash + export CLOUDFLARE_API_TOKEN=your_new_token + cd cloudflare + ./deploy-with-token.sh + ``` + +## 🎯 **النتائج المتوقعة بعد النشر:** + +- **Backend:** `https://cursor-backend.workers.dev` +- **Frontend:** `https://cursor-ide.pages.dev` +- **Health Check:** `https://cursor-backend.workers.dev/health` +- **WebSocket:** `wss://cursor-backend.workers.dev` + +## 📞 **الدعم:** + +إذا كنت بحاجة لمساعدة إضافية: +1. تحقق من صلاحيات الرمز المميز +2. تأكد من تفعيل خدمة R2 +3. جرب النشر اليدوي عبر Dashboard + +## ✨ **الخلاصة:** + +التطبيق جاهز تماماً للنشر! المشكلة الوحيدة هي صلاحيات الرمز المميز. بمجرد حل هذه المشكلة، سيعمل النشر بنجاح. 🚀 \ No newline at end of file