# 部署指南 (Deployment Guide) ## 目录 1. [Hugging Face Spaces 部署](#hugging-face-spaces-部署) 2. [Docker 部署](#docker-部署) 3. [本地开发](#本地开发) 4. [获取 API Token](#获取-api-token) --- ## Hugging Face Spaces 部署 ### 方法 1: 通过 Web 界面 1. **创建新 Space** - 访问 https://huggingface.co/new-space - 选择 Space name(例如:cloudflare-manager) - 选择 SDK: **Gradio** - 选择 License: MIT 2. **上传文件** - 上传所有项目文件 - 或者连接到 Git 仓库 3. **配置(可选)** - 进入 Space Settings - 添加 Secrets(推荐用于安全): ``` CLOUDFLARE_EMAIL=your-email@example.com CLOUDFLARE_TOKEN=your-api-token ``` 4. **访问** - Space 会自动构建和部署 - 访问 `https://huggingface.co/spaces/YOUR_USERNAME/cloudflare-manager` ### 方法 2: 通过 Git ```bash # Clone your space git clone https://huggingface.co/spaces/YOUR_USERNAME/cloudflare-manager cd cloudflare-manager # Copy all files cp -r /path/to/project/* . # Commit and push git add . git commit -m "Initial deployment" git push ``` ### Hugging Face Space 配置文件 确保在根目录有 `README_HUGGINGFACE.md` 文件(已创建),它包含: ```yaml --- title: Cloudflare Manager emoji: ☁️ colorFrom: orange colorTo: yellow sdk: gradio sdk_version: "4.0.0" app_file: app.py pinned: false license: mit --- ``` --- ## Docker 部署 ### 使用 Docker Compose(推荐) 1. **准备环境变量**(可选) ```bash cp .env.example .env # 编辑 .env 文件填入你的凭据 nano .env ``` 2. **启动服务** ```bash docker-compose up -d ``` 3. **查看日志** ```bash docker-compose logs -f ``` 4. **访问** - 打开浏览器访问: http://localhost:7860 5. **停止服务** ```bash docker-compose down ``` ### 使用 Docker 命令 1. **构建镜像** ```bash docker build -t cloudflare-manager . ``` 2. **运行容器** ```bash docker run -d \ --name cloudflare-manager \ -p 7860:7860 \ cloudflare-manager ``` 3. **带环境变量运行** ```bash docker run -d \ --name cloudflare-manager \ -p 7860:7860 \ -e CLOUDFLARE_EMAIL="your-email@example.com" \ -e CLOUDFLARE_TOKEN="your-api-token" \ cloudflare-manager ``` 4. **查看日志** ```bash docker logs -f cloudflare-manager ``` 5. **停止和删除** ```bash docker stop cloudflare-manager docker rm cloudflare-manager ``` ### Docker Hub 部署 如果你想发布到 Docker Hub: ```bash # 构建并打标签 docker build -t your-username/cloudflare-manager:latest . # 推送到 Docker Hub docker login docker push your-username/cloudflare-manager:latest # 其他人可以这样使用 docker pull your-username/cloudflare-manager:latest docker run -d -p 7860:7860 your-username/cloudflare-manager:latest ``` --- ## 本地开发 ### 1. 安装依赖 ```bash # 创建虚拟环境(推荐) python3 -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt ``` ### 2. 运行 Web 界面 ```bash python3 app.py ``` 访问: http://localhost:7860 ### 3. 使用 CLI 工具 ```bash # 快速启动向导 python3 quickstart.py # 交互式菜单 python3 cloudflare_manager.py # 运行示例 python3 example_usage.py # 运行测试 python3 test_manager.py ``` ### 4. Python API 使用 ```python from cloudflare_manager import CloudflareManager, CloudflareAccount account = CloudflareAccount( email="your-email@example.com", token="your-api-token" ) cf = CloudflareManager(account) # 使用 API projects = cf.list_pages_projects() zones = cf.list_zones() ``` --- ## 获取 API Token ### 步骤 1. **登录 Cloudflare** - 访问 https://dash.cloudflare.com/ 2. **进入 API Tokens 页面** - 点击右上角头像 - 选择 "My Profile" - 点击左侧 "API Tokens" - 或直接访问: https://dash.cloudflare.com/profile/api-tokens 3. **创建新 Token** - 点击 "Create Token" - 选择 "Create Custom Token" 4. **配置权限** 需要添加以下权限: **Account 权限:** - Cloudflare Pages → Edit **Zone 权限:** - DNS → Edit - Workers Routes → Edit - Zone → Edit (可选,用于创建 Zone) 5. **设置 Zone Resources** - 选择 "All zones" 或特定的 zones - 如果只管理特定域名,选择具体的 zone 6. **设置 Client IP Address Filtering**(可选) - 可以限制 IP 地址以增加安全性 7. **创建并复制 Token** - 点击 "Continue to summary" - 点击 "Create Token" - **重要**: 立即复制 token,它只显示一次! ### Token 示例格式 正确的 token 格式类似: ``` v1.0-abc123def456789...xyz ``` **注意**: 提供的 token `21f3fb278a15b732a4f52c95d5042d78d1a21` 似乎不是正确的格式。 ### 验证 Token 创建 token 后,可以测试: ```bash python3 test_credentials.py ``` 或使用 curl: ```bash export CLOUDFLARE_API_TOKEN="your-token" curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \ -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ -H "Content-Type: application/json" ``` 成功的响应: ```json { "success": true, "errors": [], "messages": [], "result": { "id": "...", "status": "active" } } ``` --- ## 环境变量配置 ### 方法 1: .env 文件 ```bash # 复制示例文件 cp .env.example .env # 编辑文件 nano .env ``` 内容: ```bash CLOUDFLARE_EMAIL=your-email@example.com CLOUDFLARE_TOKEN=v1.0-your-actual-token ``` ### 方法 2: 系统环境变量 **Linux/Mac:** ```bash export CLOUDFLARE_EMAIL="your-email@example.com" export CLOUDFLARE_TOKEN="v1.0-your-actual-token" ``` **Windows:** ```cmd set CLOUDFLARE_EMAIL=your-email@example.com set CLOUDFLARE_TOKEN=v1.0-your-actual-token ``` ### 方法 3: 在代码中 ```python import os # 设置环境变量 os.environ['CLOUDFLARE_EMAIL'] = 'your-email@example.com' os.environ['CLOUDFLARE_TOKEN'] = 'v1.0-your-actual-token' # 然后运行应用 from cloudflare_manager import CloudflareManager, CloudflareAccount account = CloudflareAccount( email=os.environ['CLOUDFLARE_EMAIL'], token=os.environ['CLOUDFLARE_TOKEN'] ) ``` --- ## 部署架构 ### 架构图 ``` ┌─────────────────────────────────────────┐ │ 用户浏览器 │ │ (http://localhost:7860) │ └──────────────┬──────────────────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ Gradio Web Interface │ │ (app.py) │ │ - Form inputs │ │ - Buttons and tabs │ │ - Result display │ └──────────────┬──────────────────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ CloudflareManager │ │ (cloudflare_manager.py) │ │ - API calls │ │ - Error handling │ │ - Data processing │ └──────────────┬──────────────────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ Cloudflare API │ │ https://api.cloudflare.com/client/v4 │ │ - Pages │ │ - Zones │ │ - Workers │ └─────────────────────────────────────────┘ ``` --- ## 故障排除 ### 问题 1: Token 无效 **错误**: "Invalid request headers" 或 "Invalid format for Authorization header" **解决**: 1. 检查 token 格式是否正确(应以 `v1.0-` 开头) 2. 验证 token 权限 3. 创建新的 token ### 问题 2: Docker 构建失败 **解决**: ```bash # 清理并重新构建 docker-compose down -v docker-compose build --no-cache docker-compose up -d ``` ### 问题 3: 端口已被占用 **错误**: "Port 7860 is already in use" **解决**: ```bash # 使用不同端口 docker run -d -p 8080:7860 cloudflare-manager # 或停止占用的进程 lsof -ti:7860 | xargs kill -9 ``` ### 问题 4: Gradio 界面无法访问 **解决**: 1. 检查防火墙设置 2. 确保容器正在运行: `docker ps` 3. 查看日志: `docker logs cloudflare-manager` --- ## 生产环境建议 ### 1. 使用 HTTPS 配置反向代理(如 Nginx): ```nginx server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name your-domain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://localhost:7860; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` ### 2. 设置认证 添加基本认证或使用 OAuth。 ### 3. 监控和日志 ```bash # 查看日志 docker logs -f cloudflare-manager # 使用日志聚合工具 # 例如: ELK Stack, Loki, etc. ``` ### 4. 自动重启 ```yaml # docker-compose.yml services: cloudflare-manager: restart: always # 改为 always ``` --- ## 更新和维护 ### 更新应用 ```bash # 拉取最新代码 git pull # 重新构建和部署 docker-compose down docker-compose build docker-compose up -d ``` ### 备份配置 ```bash # 备份 .env 文件 cp .env .env.backup # 备份整个配置 tar -czf cloudflare-manager-backup.tar.gz \ .env docker-compose.yml ``` --- ## 支持的平台 - ✅ Hugging Face Spaces - ✅ Docker / Docker Compose - ✅ 本地开发环境 - ✅ Linux 服务器 - ✅ macOS - ✅ Windows (with WSL2) - ✅ Cloud platforms (AWS, GCP, Azure) - ✅ Kubernetes (需要创建相应的 manifests) --- ## 下一步 1. ✅ 获取正确的 API Token 2. ✅ 选择部署方式(Hugging Face / Docker / 本地) 3. ✅ 运行应用 4. ✅ 开始管理 Cloudflare 资源! 有问题?查看完整文档: - [快速开始](GET_STARTED.md) - [使用指南](USAGE_GUIDE.md) - [API 参考](API_REFERENCE.md)