cfmanager / QUICK_DEPLOY.md
HFHash789's picture
Upload folder using huggingface_hub
32e4bbf verified

🚀 快速部署指南

重要: 提供的测试 token 格式不正确。请按照下面的说明获取正确的 API Token。

📋 前置条件

获取正确的 Cloudflare API Token

提供的 token 21f3fb278a15b732a4f52c95d5042d78d1a21 不是正确的格式

正确的 Cloudflare API Token 格式类似:

v1.0-abc123def456...xyz  (通常很长)

如何获取:

  1. 访问: https://dash.cloudflare.com/profile/api-tokens
  2. 点击: "Create Token"
  3. 选择: "Create Custom Token"
  4. 配置权限:
    Account Permissions:
    - Cloudflare Pages → Edit
    
    Zone Permissions:
    - DNS → Edit
    - Workers Routes → Edit
    - Zone → Edit
    
  5. 创建并复制 token(只显示一次!)

测试 Token

# 使用 curl 测试
curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Content-Type: application/json"

# 或使用我们的测试脚本
python3 test_credentials.py

🎯 三种部署方式

方式 1: 使用一键启动脚本(最简单)

./start.sh

选择:

  • 1 - Docker Compose(推荐)
  • 2 - Docker
  • 3 - Python 本地运行

方式 2: Docker Compose

# 1. 创建环境变量文件(可选)
cp .env.example .env
nano .env  # 编辑填入你的凭据

# 2. 启动
docker-compose up -d

# 3. 访问
# http://localhost:7860

# 4. 查看日志
docker-compose logs -f

# 5. 停止
docker-compose down

方式 3: 纯 Docker

# 1. 构建镜像
docker build -t cloudflare-manager .

# 2. 运行容器
docker run -d \
  --name cloudflare-manager \
  -p 7860:7860 \
  cloudflare-manager

# 3. 访问
# http://localhost:7860

# 4. 查看日志
docker logs -f cloudflare-manager

# 5. 停止和删除
docker stop cloudflare-manager
docker rm cloudflare-manager

方式 4: Python 本地运行

# 1. 安装依赖
pip3 install -r requirements.txt

# 2. 运行 Web 界面
python3 app.py

# 3. 访问
# http://localhost:7860

🌐 Hugging Face Spaces 部署

步骤 1: 创建 Space

  1. 访问 https://huggingface.co/new-space
  2. 填写:
    • Space name: cloudflare-manager
    • License: MIT
    • SDK: Gradio
    • Python version: 3.10

步骤 2: 准备文件

确保根目录有这个文件(已创建):

README.md (用于 Hugging Face): ```yaml

title: Cloudflare Manager emoji: ☁️ colorFrom: orange colorTo: yellow sdk: gradio sdk_version: "4.0.0" app_file: app.py pinned: false license: mit


### 步骤 3: 上传文件

**方式 A: Web 上传**
1. 在 Space 页面点击 "Files and versions"
2. 拖拽上传所有文件:
   - `app.py` ✅ **必需**
   - `cloudflare_manager.py` ✅ **必需**
   - `requirements.txt` ✅ **必需**
   - 其他文件(可选)

**方式 B: Git 推送**
```bash
# Clone your space
git clone https://huggingface.co/spaces/YOUR_USERNAME/cloudflare-manager
cd cloudflare-manager

# Copy files
cp /path/to/project/*.py .
cp /path/to/project/requirements.txt .
cp /path/to/project/README_HUGGINGFACE.md README.md

# Commit and push
git add .
git commit -m "Initial deployment"
git push

步骤 4: 配置 Secrets(推荐)

在 Space Settings → Repository secrets:

CLOUDFLARE_EMAIL=your-email@example.com
CLOUDFLARE_TOKEN=your-correct-api-token

这样凭据会自动预填充。

步骤 5: 访问

Space 会自动构建,几分钟后访问:

https://huggingface.co/spaces/YOUR_USERNAME/cloudflare-manager

📝 使用 Web 界面

1. 打开界面

访问 http://localhost:7860 (本地) 或你的 Space URL

2. 输入凭据

在顶部输入:

  • Cloudflare Email: 你的 Cloudflare 邮箱
  • API Token: 你的 API Token

3. 测试连接

点击 "Connection Test" 标签,然后点击 "Test Connection"

应该看到:

✓ Connected!

Account: Your Account Name
ID: abc123...

4. 使用功能

📦 管理 Pages 项目

列出项目:

  • 进入 "Pages Projects" 标签
  • 点击 "List Projects"

创建项目:

  • 输入项目名称
  • 输入分支(默认 main)
  • 点击 "Create Project"

🌐 管理域名和 Zones

列出 Zones:

  • 进入 "Domains & Zones" 标签
  • 点击 "List Zones"

创建 Zone 并获取 Nameservers:

  • 输入域名(如 example.com)
  • 点击 "Create Zone"
  • 复制显示的 Nameservers
  • 添加到你的域名注册商

示例输出:

✓ Zone created for example.com

Zone ID: abc123...

📋 Add these nameservers to your domain registrar:

   ns1.cloudflare.com
   ns2.cloudflare.com

🔗 绑定域名到 Pages

  • 进入 "Bind Domain" 标签
  • 输入项目名称
  • 输入域名
  • 点击 "Bind Domain"

⚡ 配置 Worker 路由

  • 进入 "Worker Routes" 标签
  • 输入 Zone ID
  • 输入路由模式(如 example.com/api/*
  • 输入 Worker 脚本名称
  • 点击 "Create Route"

🔧 CLI 工具

除了 Web 界面,还可以使用命令行:

快速启动向导

python3 quickstart.py

交互式菜单

python3 cloudflare_manager.py

运行示例

python3 example_usage.py

运行测试

python3 test_manager.py

💻 Python API

from cloudflare_manager import CloudflareManager, CloudflareAccount

# 1. 初始化
account = CloudflareAccount(
    email="your-email@example.com",
    token="your-correct-token"  # 正确的格式!
)
cf = CloudflareManager(account)

# 2. 创建 Pages 项目
project = cf.create_pages_project("my-site", "main")
print(f"Created: {project['subdomain']}")

# 3. 创建 Zone 获取 Nameservers
zone = cf.create_zone("example.com")
print("Nameservers:")
for ns in zone["name_servers"]:
    print(f"  {ns}")

# 4. 绑定域名
cf.add_pages_domain("my-site", "example.com")
print("Domain bound!")

# 5. 列出所有项目
projects = cf.list_pages_projects()
for p in projects:
    print(f"- {p['name']}")

# 6. 列出所有 Zones
zones = cf.list_zones()
for z in zones:
    print(f"- {z['name']}")

# 7. 创建 Worker 路由
zone_id = zones[0]['id']
cf.create_worker_route(
    zone_id=zone_id,
    pattern="example.com/api/*",
    script_name="my-worker"
)

⚠️ 常见问题

Q1: Token 无效

错误: "Invalid request headers" 或 "Invalid format for Authorization header"

原因:

  • 提供的 token 21f3fb278a15b732a4f52c95d5042d78d1a21 不是正确格式
  • 正确的 token 应该以 v1.0- 开头,且很长

解决: 按照上面的说明重新创建 token

Q2: 没有权限

错误: "Permission denied"

解决: 确保 token 有以下权限:

  • Account > Cloudflare Pages > Edit
  • Zone > DNS > Edit
  • Zone > Workers Routes > Edit

Q3: Docker 端口被占用

错误: "Port 7860 is already in use"

解决:

# 使用不同端口
docker run -d -p 8080:7860 cloudflare-manager

# 或停止占用进程
lsof -ti:7860 | xargs kill -9

Q4: gradio 模块未找到

错误: "No module named 'gradio'"

解决:

pip3 install gradio
# 或
pip3 install -r requirements.txt

📚 完整文档


✅ 检查清单

部署前检查:

  • 获取了正确格式的 API Token
  • Token 有足够的权限
  • 已安装 Docker 或 Python 3.10+
  • 端口 7860 可用
  • 已阅读文档

🎉 完成!

现在你可以:

  1. ✅ 管理 Pages 项目
  2. ✅ 部署静态网站
  3. ✅ 绑定自定义域名
  4. ✅ 获取 Nameservers
  5. ✅ 配置 Worker 路由

需要帮助? 查看完整文档或运行测试:

python3 test_manager.py

享受使用! 🚀