roim-picx Cloudflare page 部署教程
📋 前置条件
- 一个 GitHub 账号
- 一个 Cloudflare 账号
- 本地已安装 Node.js(v18+)和 pnpm
第一步:Fork 项目到你的 GitHub
- 访问项目仓库:
https://github.com/roimdev/roim-picx - 点击右上角的 Fork 按钮
- 将项目 Fork 到你自己的 GitHub 账户
第二步:注册并登录 Cloudflare
- 访问 Cloudflare Dashboard
- 如果没有账号,点击注册并完成邮箱验证
- 登录你的 Cloudflare 账户
第三步:创建 R2 存储桶
R2 用于存储上传的图片文件。
步骤:
- 在 Cloudflare Dashboard 左侧菜单,找到 R2 对象存储
- 如果是首次使用,需要先 开通 R2 服务(免费套餐包含 10GB 存储)
- 点击 创建存储桶
- 输入存储桶名称,例如:
picx-imgs - 选择区域(选择离你最近的区域)
- 默认存储类:标准
- 点击 创建存储桶
第四步:创建 KV 命名空间
KV 用于会话管理和临时数据存储。
步骤:
- 在 Cloudflare Dashboard 左侧菜单,找到 存储和数据库 → Workers KV
- 点击 创建命名空间
- 输入命名空间名称,例如:
picx-kv - 点击 添加
第五步:创建 D1 数据库
D1 用于存储用户信息、图片元数据、统计信息等结构化数据。
步骤:
- 在 Cloudflare Dashboard 左侧菜单,找到 存储和数据库 → D1 SQL 数据库
- 点击 创建数据库
- 输入数据库名称,例如:
picx-db - 数据位置:(选择离你最近的区域或自动)
- 点击 创建
[!IMPORTANT]
记住你的数据库名称和 Database ID,后面需要用到
第六步:创建 Pages 项目
步骤:
- 在 Cloudflare Dashboard 左侧菜单,找到 计算和AI → Workers & Pages
- 点击 创建应用程序 → 想要部署 Pages?开始使用 点击开始使用
- 选择 导入现有 Git 存储库
- 授权 Cloudflare 访问你的 GitHub
- 选择你 Fork 的
roim-picx仓库 → 点击开始设置
第七步:配置构建设置
在创建 Pages 项目时,需要配置构建命令和输出目录:
| 配置项 | 值 |
|---|---|
| 框架预设 | 选择 Vue |
| 构建命令 | npm run build |
| 构建输出目录 | dist |
| 根目录 | 留空 |
第八步:配置环境变量
在 Pages 项目的 设置 → 变量和机密 中添加以下变量:
[!TIP]
变量类型都为文本如果只是个人使用,可以先只配置
ALLOW_TOKEN_LOGIN=true,使用 Token 登录即可
必填变量
| 变量名 | 示例值 | 说明 |
|---|---|---|
BASE_URL | https://your-project.pages.dev | 你的 Pages 访问域名或你自己的域名 |
PICX_AUTH_TOKEN | 随机生成一个强密码 | 管理员 Token,用于 API 认证 |
可选变量(Token 登录)
| 变量名 | 示例值 | 说明 |
|---|---|---|
ALLOW_TOKEN_LOGIN | true | 是否允许使用 Token 直接登录 |
STORAGE_TYPE | R2 | R2 或 HF(默认值R2) |
可选变量(GitHub OAuth 登录)
| 变量名 | 示例值 | 说明 |
|---|---|---|
GITHUB_CLIENT_ID | 你的 GitHub App Client ID | GitHub OAuth 客户端 ID |
GITHUB_CLIENT_SECRET | 你的 GitHub App Client Secret | GitHub OAuth 客户端密钥 |
VITE_GITHUB_CLIENT_ID | 同上,用于前端 | 与 GITHUB_CLIENT_ID 相同 |
GITHUB_OWNER | * | 允许登录的用户,* 表示所有人 |
ADMIN_USERS | yourname | 管理员用户名,逗号分隔 |
第九步:绑定 R2、KV、D1 服务
步骤:
- 进入你的 Pages 项目
- 点击 设置 → 绑定
- 分别添加以下绑定:
R2 绑定
| 设置项 | 值 |
|---|---|
| 变量名 | PICX |
| R2 存储桶 | 选择你创建的存储桶 |
KV 绑定
| 设置项 | 值 |
|---|---|
| 变量名 | XK |
| KV 命名空间 | 选择你创建的命名空间 |
D1 绑定
| 设置项 | 值 |
|---|---|
| 变量名 | DB |
| D1 数据库 | 选择你创建的数据库 |
[!CAUTION]
变量名必须完全匹配!
- R2 绑定变量名必须是
PICX- KV 绑定变量名必须是
XK- D1 绑定变量名必须是
DB如果变量名不匹配,项目将无法正常工作!除非你修改了项目代码中的变量名
第十步:初始化 D1 数据库
需要在本地执行数据库迁移脚本来创建表结构。
步骤:
- 克隆你 Fork 的项目到本地:
1 | git clone https://github.com/你的用户名/roim-picx.git |
- 安装依赖:
1 | pnpm install |
- 登录 Cloudflare CLI:
1 | npx wrangler login |
这会打开浏览器让你授权。
- 复制项目根目录下的文件
wrangler.toml.example重命名为wrangler.toml
1 | [[d1_databases]] |
只留下d1_databases部分其余删除,并将database_id与database_name的值替换为你刚刚创建D1数据库的名称与ID
- 执行数据库迁移(将
picx-db替换为你的数据库名):
1 | npx wrangler d1 migrations apply picx-db --remote |
| name | status |
|---|---|
| 0001_init.sql | ✅ |
| 0002_steam_login.sql | ✅ |
| 0003_google_login.sql | ✅ |
| 0004_add_storage_type.sql | ✅ |
| 0005_add_email.sql | ✅ |
| 0006_system_settings.sql | ✅ |
| 0007_add_albums.sql | ✅ |
| 0008_add_nsfw.sql | ✅ |
| 0009_optimize_performance.sql | ✅ |
| 0010_api_keys.sql | ✅ |
观察日志输出,是否成功迁移
第十一步:触发部署
- 回到 Cloudflare Pages 项目页面
- 点击 部署
- 在所有部署中的最新一条部署的末尾点击 重新部署
等待构建完成后,你就可以通过 https://你的项目名.pages.dev 访问了!
第十二步:验证部署
- 访问你的 Pages 地址
- 使用你设置的
PICX_AUTH_TOKEN登录 - 尝试上传一张图片
- 确认图片可以正常显示和管理
[!TIP]
如果你的环境变量BASE_URL与cloudflare提供的域名一致,那么图片可以显示如果
BASE_URL为你的自己的域名,需要前往 自定义域 设置你自己的域名,设置完后等待DNS同步,图片就可以正常显示
可选配置:自定义域名
- 在 Pages 项目中点击 自定义域
- 添加你的自定义域名
- 按照提示配置 DNS 记录
- 更新
BASE_URL环境变量为你的自定义域名
可选配置:GitHub OAuth 登录
如果你想启用 GitHub 登录功能:
1. 创建 GitHub OAuth App
- 访问 GitHub Developer Settings
- 点击 OAuth Apps → New OAuth App
- 填写信息:
- Application name:
roim-picx - Homepage URL:
https://你的域名 - Authorization callback URL:
https://你的域名/auth
- Application name:
- 点击 Register application
- 记录 Client ID
- 点击 Generate a new client secret 记录 Client secret
2. 配置环境变量
在 Cloudflare Pages 添加:
| 变量名 | 示例值 | 说明 |
|---|---|---|
GITHUB_CLIENT_ID | 你的 GitHub App Client ID | GitHub OAuth 客户端 ID |
GITHUB_CLIENT_SECRET | 你的 GitHub App Client Secret | GitHub OAuth 客户端密钥 |
VITE_GITHUB_CLIENT_ID | 同上,用于前端 | 与 GITHUB_CLIENT_ID 相同 |
GITHUB_OWNER | * | 允许登录的用户,* 表示所有人 |
ADMIN_USERS | yourname (Github名称) | 管理员用户名,逗号分隔 |
添加后需重新部署