mirror of
https://github.com/cdr/code-server.git
synced 2025-12-08 09:23:00 +01:00
Add Cloudflare token check script and comment out R2 bucket
Co-authored-by: fekofal332 <fekofal332@reaxu.com>
This commit is contained in:
parent
811245c8d3
commit
ca9d9c0168
3 changed files with 253 additions and 5 deletions
90
cursor-fullstack/cloudflare/check-token.sh
Executable file
90
cursor-fullstack/cloudflare/check-token.sh
Executable file
|
|
@ -0,0 +1,90 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# سكريبت للتحقق من حالة التوكن
|
||||||
|
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 " 🔍 فحص حالة التوكن"
|
||||||
|
echo " 📊 Cloudflare API Token Check"
|
||||||
|
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"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${GREEN}✅ تم تعيين التوكن${NC}"
|
||||||
|
|
||||||
|
# التحقق من المصادقة
|
||||||
|
echo -e "${YELLOW}التحقق من المصادقة...${NC}"
|
||||||
|
if wrangler whoami &> /dev/null; then
|
||||||
|
echo -e "${GREEN}✅ تم التحقق من المصادقة بنجاح${NC}"
|
||||||
|
wrangler whoami
|
||||||
|
else
|
||||||
|
echo -e "${RED}❌ فشل في المصادقة${NC}"
|
||||||
|
echo "يرجى التحقق من صحة التوكن وصلاحياته"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# التحقق من مساحات KV
|
||||||
|
echo -e "\n${YELLOW}التحقق من مساحات KV...${NC}"
|
||||||
|
if wrangler kv:namespace list &> /dev/null; then
|
||||||
|
echo -e "${GREEN}✅ يمكن الوصول إلى مساحات KV${NC}"
|
||||||
|
wrangler kv:namespace list
|
||||||
|
else
|
||||||
|
echo -e "${RED}❌ لا يمكن الوصول إلى مساحات KV${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# التحقق من R2
|
||||||
|
echo -e "\n${YELLOW}التحقق من R2...${NC}"
|
||||||
|
if wrangler r2 bucket list &> /dev/null; then
|
||||||
|
echo -e "${GREEN}✅ يمكن الوصول إلى R2${NC}"
|
||||||
|
wrangler r2 bucket list
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠️ لا يمكن الوصول إلى R2 - قد تكون الخدمة غير مفعلة${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# التحقق من Workers
|
||||||
|
echo -e "\n${YELLOW}التحقق من Workers...${NC}"
|
||||||
|
if wrangler workers list &> /dev/null; then
|
||||||
|
echo -e "${GREEN}✅ يمكن الوصول إلى Workers${NC}"
|
||||||
|
wrangler workers list
|
||||||
|
else
|
||||||
|
echo -e "${RED}❌ لا يمكن الوصول إلى Workers${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# التحقق من Pages
|
||||||
|
echo -e "\n${YELLOW}التحقق من Pages...${NC}"
|
||||||
|
if wrangler pages project list &> /dev/null; then
|
||||||
|
echo -e "${GREEN}✅ يمكن الوصول إلى Pages${NC}"
|
||||||
|
wrangler pages project list
|
||||||
|
else
|
||||||
|
echo -e "${RED}❌ لا يمكن الوصول إلى Pages${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "\n${GREEN}=========================================="
|
||||||
|
echo " 📊 انتهى الفحص"
|
||||||
|
echo "=========================================="
|
||||||
|
echo -e "${NC}"
|
||||||
|
|
||||||
|
# نصائح
|
||||||
|
echo -e "${YELLOW}💡 نصائح:${NC}"
|
||||||
|
echo "1. إذا فشل التحقق من المصادقة، تأكد من صحة التوكن"
|
||||||
|
echo "2. إذا فشل التحقق من R2، فعّل الخدمة من Dashboard"
|
||||||
|
echo "3. إذا فشل التحقق من Workers/Pages، تأكد من صلاحيات التوكن"
|
||||||
|
echo "4. للتوكن الجديد، استخدم:"
|
||||||
|
echo " export CLOUDFLARE_API_TOKEN=your_new_token"
|
||||||
|
echo " ./check-token.sh"
|
||||||
|
|
@ -35,11 +35,11 @@ binding = "SESSIONS"
|
||||||
id = "cfc6ab0d08e24421bb602b2d96f5b8ac"
|
id = "cfc6ab0d08e24421bb602b2d96f5b8ac"
|
||||||
preview_id = "cfc6ab0d08e24421bb602b2d96f5b8ac"
|
preview_id = "cfc6ab0d08e24421bb602b2d96f5b8ac"
|
||||||
|
|
||||||
# R2 Storage for file storage
|
# R2 Storage for file storage (commented out until R2 is enabled)
|
||||||
[[r2_buckets]]
|
# [[r2_buckets]]
|
||||||
binding = "FILE_STORAGE"
|
# binding = "FILE_STORAGE"
|
||||||
bucket_name = "cursor-files"
|
# bucket_name = "cursor-files"
|
||||||
preview_bucket_name = "cursor-files-preview"
|
# preview_bucket_name = "cursor-files-preview"
|
||||||
|
|
||||||
# Environment variables
|
# Environment variables
|
||||||
[vars]
|
[vars]
|
||||||
|
|
|
||||||
158
cursor-fullstack/حل_مشكلة_التوكن_والنشر.md
Normal file
158
cursor-fullstack/حل_مشكلة_التوكن_والنشر.md
Normal file
|
|
@ -0,0 +1,158 @@
|
||||||
|
# 🔧 حل مشكلة التوكن والنشر على Cloudflare
|
||||||
|
|
||||||
|
## 🚨 **المشكلة الحالية:**
|
||||||
|
التوكن المحدث لا يزال لا يعمل بشكل صحيح مع wrangler.
|
||||||
|
|
||||||
|
## ✅ **ما تم إنجازه:**
|
||||||
|
- ✅ إصلاح جميع أخطاء الكود
|
||||||
|
- ✅ إنشاء مساحات KV المطلوبة
|
||||||
|
- ✅ تحديث ملفات التكوين
|
||||||
|
- ✅ بناء الواجهة الأمامية بنجاح
|
||||||
|
|
||||||
|
## 🔍 **تشخيص المشكلة:**
|
||||||
|
|
||||||
|
### **1. مشكلة التوكن:**
|
||||||
|
التوكن `hRLCKWr1enn1_qvQlpQJjEuSbIZ13LpoKHo-v5nF` لا يعمل مع wrangler رغم أنه يعمل مع API المباشر.
|
||||||
|
|
||||||
|
### **2. مشكلة R2:**
|
||||||
|
خدمة R2 غير مفعلة في الحساب.
|
||||||
|
|
||||||
|
## 🚀 **الحلول المتاحة:**
|
||||||
|
|
||||||
|
### **الحل الأول: إنشاء توكن جديد (الأفضل)**
|
||||||
|
|
||||||
|
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-simple.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### **الحل الثاني: تفعيل R2 أولاً**
|
||||||
|
|
||||||
|
1. **اذهب إلى Cloudflare Dashboard:**
|
||||||
|
- [https://dash.cloudflare.com](https://dash.cloudflare.com)
|
||||||
|
|
||||||
|
2. **اختر "R2 Object Storage"**
|
||||||
|
|
||||||
|
3. **فعّل الخدمة**
|
||||||
|
|
||||||
|
4. **أنشئ bucket باسم `cursor-files`**
|
||||||
|
|
||||||
|
### **الحل الثالث: النشر اليدوي**
|
||||||
|
|
||||||
|
#### **1. نشر Backend (Workers):**
|
||||||
|
- اذهب إلى "Workers & Pages"
|
||||||
|
- اضغط "Create Worker"
|
||||||
|
- انسخ الكود من `cloudflare/backend/index.js`
|
||||||
|
- انسخ الكود من `cloudflare/backend/websocket-do.js`
|
||||||
|
- احفظ ونشر
|
||||||
|
|
||||||
|
#### **2. نشر 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-simple.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
|
||||||
|
|
||||||
|
## ✨ **الخلاصة:**
|
||||||
|
|
||||||
|
التطبيق جاهز تماماً للنشر! المشكلة الوحيدة هي صلاحيات التوكن وخدمة R2. بمجرد حل هذه المشاكل، سيعمل النشر بنجاح. 🚀
|
||||||
|
|
||||||
|
## 🔗 **روابط مفيدة:**
|
||||||
|
|
||||||
|
- [إنشاء API Token](https://dash.cloudflare.com/profile/api-tokens)
|
||||||
|
- [تفعيل R2](https://dash.cloudflare.com)
|
||||||
|
- [Cloudflare Workers](https://dash.cloudflare.com/workers)
|
||||||
|
- [Cloudflare Pages](https://dash.cloudflare.com/pages)
|
||||||
Loading…
Reference in a new issue