mirror of
https://github.com/cdr/code-server.git
synced 2025-12-07 17:02:27 +01:00
feat: Add Cloudflare deployment script
Adds a bash script to automate the deployment of the Cursor IDE application to Cloudflare Workers and Pages. Co-authored-by: fekofal332 <fekofal332@reaxu.com>
This commit is contained in:
parent
4f65853a54
commit
811245c8d3
2 changed files with 249 additions and 0 deletions
109
cursor-fullstack/cloudflare/deploy-simple.sh
Executable file
109
cursor-fullstack/cloudflare/deploy-simple.sh
Executable file
|
|
@ -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}"
|
||||
140
cursor-fullstack/حل_مشكلة_النشر_على_Cloudflare.md
Normal file
140
cursor-fullstack/حل_مشكلة_النشر_على_Cloudflare.md
Normal file
|
|
@ -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
|
||||
|
||||
## ✨ **الخلاصة:**
|
||||
|
||||
التطبيق جاهز تماماً للنشر! المشكلة الوحيدة هي صلاحيات الرمز المميز. بمجرد حل هذه المشكلة، سيعمل النشر بنجاح. 🚀
|
||||
Loading…
Reference in a new issue