mirror of
https://github.com/cdr/code-server.git
synced 2025-12-29 03:43:21 +01:00
154 lines
No EOL
5 KiB
Markdown
154 lines
No EOL
5 KiB
Markdown
# Cloudflare Publishing Fixes
|
|
|
|
This document outlines all the fixes applied to resolve Cloudflare publishing errors.
|
|
|
|
## Issues Fixed
|
|
|
|
### 1. Missing Wrangler CLI
|
|
**Problem**: Wrangler CLI was not installed, preventing deployment.
|
|
**Solution**: Installed Wrangler CLI globally using `npm install -g wrangler`.
|
|
|
|
### 2. Missing Frontend Dependencies
|
|
**Problem**: Frontend dependencies (Vite, React, etc.) were not installed.
|
|
**Solution**: Ran `npm install` in the frontend directory to install all required dependencies.
|
|
|
|
### 3. Invalid wrangler.toml Configuration
|
|
**Problem**: The wrangler.toml file had several configuration issues:
|
|
- Incorrect durable_objects syntax
|
|
- Empty KV namespace IDs
|
|
- Conflicting binding names (FILE_STORAGE used for both KV and R2)
|
|
- Invalid array syntax for durable_objects
|
|
|
|
**Solution**: Fixed the configuration:
|
|
```toml
|
|
# Fixed durable_objects syntax
|
|
[durable_objects]
|
|
bindings = [
|
|
{ name = "WEBSOCKET_DO", class_name = "WebSocketDurableObject" }
|
|
]
|
|
|
|
# Fixed KV namespaces with placeholder IDs
|
|
[[kv_namespaces]]
|
|
binding = "API_KEYS"
|
|
id = "placeholder-api-keys-id"
|
|
preview_id = "placeholder-api-keys-preview-id"
|
|
|
|
[[kv_namespaces]]
|
|
binding = "FILE_STORAGE_KV"
|
|
id = "placeholder-file-storage-kv-id"
|
|
preview_id = "placeholder-file-storage-kv-preview-id"
|
|
|
|
[[kv_namespaces]]
|
|
binding = "SESSIONS"
|
|
id = "placeholder-sessions-id"
|
|
preview_id = "placeholder-sessions-preview-id"
|
|
|
|
# Fixed R2 bucket binding name conflict
|
|
[[r2_buckets]]
|
|
binding = "FILE_STORAGE"
|
|
bucket_name = "cursor-files"
|
|
preview_bucket_name = "cursor-files-preview"
|
|
```
|
|
|
|
### 4. Incorrect cloudflare-pages.json Configuration
|
|
**Problem**: The output directory path was incorrect.
|
|
**Solution**: Fixed the output directory from `cloudflare/frontend/dist` to `dist`.
|
|
|
|
### 5. Backend Code Binding References
|
|
**Problem**: Backend code was using incorrect binding names for KV storage.
|
|
**Solution**: Updated all references from `env.FILE_STORAGE` to `env.FILE_STORAGE_KV` in the backend code.
|
|
|
|
### 6. Missing Environment Configuration
|
|
**Problem**: No production environment configuration for the frontend.
|
|
**Solution**: Created `.env.production` file with proper backend URLs.
|
|
|
|
## Deployment Process
|
|
|
|
### Prerequisites
|
|
1. Install Wrangler CLI: `npm install -g wrangler`
|
|
2. Login to Cloudflare: `wrangler login`
|
|
3. Install dependencies: `cd cloudflare/frontend && npm install`
|
|
|
|
### Quick Deployment
|
|
Use the fixed deployment script:
|
|
```bash
|
|
cd cloudflare
|
|
./deploy-fixed.sh
|
|
```
|
|
|
|
### Manual Deployment
|
|
1. **Deploy Backend**:
|
|
```bash
|
|
cd cloudflare
|
|
wrangler deploy
|
|
```
|
|
|
|
2. **Deploy Frontend**:
|
|
```bash
|
|
cd cloudflare/frontend
|
|
npm run build
|
|
wrangler pages deploy dist --project-name cursor-ide
|
|
```
|
|
|
|
### Setting Up Required Services
|
|
Before deployment, you need to create the required Cloudflare services:
|
|
|
|
1. **KV Namespaces**:
|
|
```bash
|
|
wrangler kv:namespace create "API_KEYS"
|
|
wrangler kv:namespace create "FILE_STORAGE_KV"
|
|
wrangler kv:namespace create "SESSIONS"
|
|
```
|
|
|
|
2. **R2 Buckets**:
|
|
```bash
|
|
wrangler r2 bucket create cursor-files
|
|
wrangler r2 bucket create cursor-files-preview
|
|
```
|
|
|
|
3. **Update wrangler.toml** with actual namespace IDs from the commands above.
|
|
|
|
## Verification
|
|
|
|
After deployment, verify the following:
|
|
1. Backend is accessible at `https://cursor-backend.workers.dev`
|
|
2. Frontend is accessible at `https://cursor-ide.pages.dev`
|
|
3. Health check endpoint works: `https://cursor-backend.workers.dev/health`
|
|
4. WebSocket connection works: `wss://cursor-backend.workers.dev`
|
|
|
|
## Common Issues and Solutions
|
|
|
|
### Issue: "You are not authenticated"
|
|
**Solution**: Run `wrangler login` and follow the authentication process.
|
|
|
|
### Issue: "KV namespace not found"
|
|
**Solution**: Create the required KV namespaces using the commands above.
|
|
|
|
### Issue: "R2 bucket not found"
|
|
**Solution**: Create the required R2 buckets using the commands above.
|
|
|
|
### Issue: "Build failed"
|
|
**Solution**: Ensure all dependencies are installed with `npm install` in the frontend directory.
|
|
|
|
### Issue: "Configuration validation failed"
|
|
**Solution**: Check that wrangler.toml has valid syntax and all required fields are populated.
|
|
|
|
## Files Modified
|
|
|
|
1. `/workspace/cursor-fullstack/cloudflare/wrangler.toml` - Fixed configuration syntax
|
|
2. `/workspace/cursor-fullstack/cloudflare-pages.json` - Fixed output directory
|
|
3. `/workspace/cursor-fullstack/cloudflare/backend/index.js` - Updated binding references
|
|
4. `/workspace/cursor-fullstack/cloudflare/frontend/.env.production` - Added environment variables
|
|
5. `/workspace/cursor-fullstack/cloudflare/frontend/vite.config.js` - Added chunk size warning limit
|
|
6. `/workspace/cursor-fullstack/package.json` - Added deployment scripts
|
|
7. `/workspace/cursor-fullstack/cloudflare/deploy-fixed.sh` - Created fixed deployment script
|
|
|
|
## Next Steps
|
|
|
|
1. Run `wrangler login` to authenticate with Cloudflare
|
|
2. Create the required KV namespaces and R2 buckets
|
|
3. Update wrangler.toml with actual namespace IDs
|
|
4. Run the deployment script: `./deploy-fixed.sh`
|
|
5. Test the deployed application
|
|
|
|
The application should now deploy successfully to Cloudflare without any publishing errors. |