CF Vibe SDK 部署手册
TL;DR
在 Hostinger VPS (srv1247016) 上克隆 VibeSDK 源码,通过 npm run setup 交互配置 Cloudflare 资源,最终部署为 CF Workers。用户通过 GitHub OAuth 登录,用自然语言生成 Web 应用。
现状:✅ 已部署到 vibe.gottenergy.com。GitHub OAuth 登录正常。缺 Google AI key(代码生成不可用)、Workers for Platforms(自动部署不可用)。
🎯 背景:为什么需要这个
- 需求:老师要求部署 Cloudflare 官方的 AI 代码生成平台,用于快速生成内部工具或客户页面
- 卡点:VibeSDK 需要 Node v22+、Bun、Workers Paid Plan。Ubuntu 22.04 自带 Node v18 不够
- 约束:部署到 Gott Energy 的 Cloudflare 账号下,使用 gottenergy.com 子域
✅ 前置条件
- Cloudflare Workers Paid Plan($5/月)
- CF API Token(Containers/D1/R2/KV/Workers Scripts/Workers Routes 权限)
- GitHub OAuth App(Client ID + Secret)
- 域名 vibe.gottenergy.com
- Hostinger VPS SSH 访问
🏗️ 最终架构
用户浏览器 → vibe.gottenergy.com
→ CF Workers (vibesdk-production)
→ D1 数据库 (vibesdk-db)
→ R2 存储 (vibesdk-templates)
→ KV (vibesdk-vibecoderstore-local)
→ CF Containers (standard-3, 沙箱预览)
→ GitHub OAuth (登录)
🛠️ 部署步骤
第 1 步:环境准备(Hostinger VPS)
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install 22
node --version # v22.23.1为什么用 nvm 而不是 apt
Ubuntu 22.04 的 apt 只有 Node v18。VibeSDK 要求 v22+。
第 2 步:克隆并安装依赖
cd /opt
git clone https://github.com/cloudflare/vibesdk.git
cd vibesdk
npm install -g bun
bun install为什么用 Bun 而不是 npm
VibeSDK 官方推荐 Bun。npm 10 和 Node 18 的组合在处理
npm:rolldown-viteoverride 时会报EOVERRIDE错误。Bun 原生支持该语法。
第 3 步:交互式配置
npm run setup按提示填入:
| 配置项 | 值 |
|---|---|
| Cloudflare Account ID | 填对应Account |
| CF API Token | VibeSDK Token(Containers/D1/R2/KV/Workers Edit) |
| Custom Domain | vibe.gottenergy.com |
| Remote Resources | Y |
| Production Deploy | Y |
| AI Gateway | Y(默认 URL) |
| AI Provider | 选AI服务商,填key |
| GOOGLE_CLIENT_ID | 可选 |
| GITHUB_CLIENT_ID | GitHub OAuth App Client ID |
| GITHUB_CLIENT_SECRET | GitHub OAuth App Client Secret |
| GITHUB_EXPORTER_CLIENT_ID | GitHub Export OAuth App Client ID |
| GITHUB_EXPORTER_CLIENT_SECRET | GitHub Export OAuth App Client Secret |
两个 GitHub OAuth App 的区别
主 OAuth(登录用):Callback
https://vibe.gottenergy.com/api/auth/callback/githubExporter OAuth(导出代码):Callbackhttps://vibe.gottenergy.com/api/auth/callback/github-export
第 4 步:Token 权限问题
Setup 过程中需要:
- CF Token IP 限制需同时添加 IPv4 + IPv6:
145.223.73.35/32和2a02:4780:2d:4b6e::1/128 - 远程 D1 迁移需要 Token:
export CLOUDFLARE_API_TOKEN=... && cd /opt/vibesdk && bun run db:migrate:remote - 部署时需 Zone 级
Workers Routes → Edit权限
第 5 步:部署上线
cd /opt/vibesdk && npm run deploy部署会自动:
- 构建 Worker + 前端
- 推送容器镜像到 CF Registry
- 上传模板到 R2
- 同步 D1 数据库
- 创建 Worker Routes
↩️ 回滚 / 卸载
- 删除 Worker:CF Dashboard → Workers & Pages → vibesdk-production → Delete
- 删除资源:D1 vibesdk-db、R2 vibesdk-templates、KV vibesdk-vibecoderstore-local
- 删除 Token:CF Dashboard → API Tokens → VibeSDK → Delete
- 清理 VPS:
rm -rf /opt/vibesdk - 回滚后验证:访问 vibe.gottenergy.com 应返回 404/522
🔍 验证方法
- 打开
https://vibe.gottenergy.com - 点击 “Sign in with GitHub” → GitHub 授权 → 进入主界面
- 输入自然语言描述(如 “Build a hello world page”)→ 生成代码 → 预览
🕳️ 踩过的坑
坑 1:npm 版本不兼容
现象:
npm ERR! Invalid comparator: npm:rolldown-vite@7.1.13根因:npm 9.2 不支持npm:协议语法 解决:升级 npm 或直接用 Bun
坑 2:CF Token IP 校验失败
现象:
Cannot use the access token from location: 2a02:4780:2d:4b6e::1根因:Token 只设了 IPv4,VPS 请求走 IPv6 解决:Token IP 限制同时加 IPv4 + IPv6
坑 3:远程 D1 迁移失败
现象:
CLOUDLARE_API_TOKEN environment variable not set根因:setup 脚本未把 Token 传给子进程 解决:手动export CLOUDLARE_API_TOKEN=... && bun run db:migrate:remote
坑 4:部署时 Workers Routes 403
现象:
Authentication error [code: 10000]根因:Token 缺 Zone 级 Workers Routes 权限 解决:Token 加 Zone → gottenergy.com → Workers Routes → Edit
⚠️ 已知限制 / 副作用
- Google AI key 未配,AI 代码生成功能不可用
- Workers for Platforms 未开通,Dispatch 功能不可用(用户生成的 app 不能一键部署到独立域名)
ALLOWED_EMAIL目前为空,任何人能用 GitHub 登录。建议设白名单- 代码生成后的项目存储在 CF D1/R2 上,不会推送到用户 GitHub(除非用了 Exporter 功能)
🔒 安全 & 成本速查
- Token 权限:Containers/D1/R2/KV/Workers Scripts/Workers Routes 全部 Edit
- Token IP 限制:145.223.73.35/32 + 2a02:4780:2d:4b6e::1/128
- 月度成本:Workers Paid $5 + 按量(Container 标准实例空闲零费用)
📌 待办 / 未来优化方向
- 配 Google AI key 启用代码生成
- 开通 Workers for Platforms 启用自动部署
- 设 ALLOWED_EMAIL 白名单
- 监控 CF 账单(Container 按 CPU 计费)
📋 速查命令合集
cd /opt/vibesdk
npm run dev # 本地开发
npm run deploy # 生产部署
bun run db:migrate:remote # 远程 D1 迁移📝 更新日志
| 日期 | 改动 | 原因 |
|---|---|---|
| 2026-07-10 | 首次创建,完成部署 | 老师要求 |