视频版部署教程
https://www.bilibili.com/video/BV19wrXY2ESM/
准备
在开始部署之前,需要在 Cloudflare 控制台完成以下准备工作:
创建 D1 数据库
- 登录 Cloudflare 控制台
- 选择 “存储与数据库” -> “D1 SQL 数据库”
- 创建一个数据库(例如:moemail)
- 记录下数据库名称和数据库 ID,后续配置需要用到
创建 KV 命名空间
- 登录 Cloudflare 控制台
- 选择 “存储与数据库” -> “KV”
- 创建一个 KV 命名空间(例如:moemail)
- 记录下命名空间 ID,后续配置需要用到
创建 Pages 项目
- 登录 Cloudflare 控制台
- 选择 “Workers 和 Pages”
- 点击 “创建” 并选择 “Pages” 标签
- 选择 “使用直接上传创建”
- 点击 “上传资产”
- 输入项目名称
WARNING
注意:项目名称必须为 moemail,否则无法正常部署
- 输入项目名称后,点击 “创建项目” 即可,不需要上传任何文件以及点击“部署站点”,之后我们会通过 本地运行Wrangler 或者通过 Github Actions 自动部署
为 Pages 项目添加 AUTH 认证相关的 SECRETS
- 在 Overview 中选择刚刚创建的 Pages 项目
- 在 Settings 中选择变量和机密
- 添加 AUTH_GITHUB_ID, AUTH_GITHUB_SECRET, AUTH_SECRET
本地 Wrangler 部署
- 创建
.env文件
bash
cp .env.example .env在
.env文件中设置环境变量运行部署脚本
bash
pnpm dlx tsx ./scripts/deploy/index.tsGithub Actions 部署
本项目可使用 GitHub Actions 实现自动化部署。支持以下触发方式:
- 自动触发:推送新的 tag 时自动触发部署流程
- 手动触发:在 GitHub Actions 页面手动触发部署流程
部署步骤
- 在 GitHub 仓库设置中添加以下 Secrets:
| 环境变量 | 说明 |
|---|---|
CLOUDFLARE_API_TOKEN | Cloudflare API 令牌 |
CLOUDFLARE_ACCOUNT_ID | Cloudflare 账户 ID |
AUTH_GITHUB_ID | GitHub OAuth App ID |
AUTH_GITHUB_SECRET | GitHub OAuth App Secret |
AUTH_SECRET | NextAuth Secret,用来加密 session,请设置一个随机字符串 |
CUSTOM_DOMAIN | 网站自定义域名,用于访问 MoeMail(可选) |
PROJECT_NAME | Cloudflare Pages 项目名(可选,默认 moemail) |
DATABASE_NAME | D1 数据库名称(可选,默认 moemail-db) |
KV_NAMESPACE_NAME | Cloudflare KV namespace 名称,用于存储网站配置(可选,默认 moemail-kv) |
选择触发方式:
方式一:推送 tag 触发
bash# 创建新的 tag git tag v1.0.0bash# 推送 tag 到远程仓库 git push origin v1.0.0方式二:手动触发
- 进入仓库的 Actions 页面
- 选择 "Deploy" workflow
- 点击 "Run workflow"
部署进度可以在仓库的 Actions 标签页查看
注意事项
- 确保所有 Secrets 都已正确设置
- 使用 tag 触发时,tag 必须以
v开头(例如:v1.0.0)
环境变量
本项目使用以下环境变量:
认证相关
AUTH_GITHUB_ID: GitHub OAuth App IDAUTH_GITHUB_SECRET: GitHub OAuth App SecretAUTH_SECRET: NextAuth Secret,用来加密 session,请设置一个随机字符串
Cloudflare 配置
CLOUDFLARE_API_TOKEN: Cloudflare API TokenCLOUDFLARE_ACCOUNT_ID: Cloudflare Account IDDATABASE_NAME: D1 数据库名称DATABASE_ID: D1 数据库 ID(可选,如果不填,则会自动通过 Cloudflare API 获取)KV_NAMESPACE_NAME: Cloudflare KV namespace 名称,用于存储网站配置KV_NAMESPACE_ID: Cloudflare KV namespace ID,用于存储网站配置(可选,如果不填,则会自动通过 Cloudflare API 获取)CUSTOM_DOMAIN: 网站自定义域名,如 moemail.app(可选,如果不填,则会使用 Cloudflare Pages 默认域名)PROJECT_NAME: Cloudflare Pages 项目名(可选,如果不填,则为 moemail)
Github OAuth App 配置
- 登录 Github Developer 创建一个新的 OAuth App
- 生成一个新的
Client ID和Client Secret - 设置
Application name为<your-app-name> - 设置
Homepage URL为https://<your-domain> - 设置
Authorization callback URL为https://<your-domain>/api/auth/callback/github
Cloudflare 邮件路由配置
为了使邮箱域名生效,还需要在 Cloudflare 控制台配置邮件路由,将收到的邮件转发给 Email Worker 处理。
选择您的域名
点击左侧菜单的 "电子邮件" -> "电子邮件路由"
如果显示 “电子邮件路由当前被禁用,没有在路由电子邮件”,请点击 "启用电子邮件路由"

点击后,会提示你添加电子邮件路由 DNS 记录,点击 “添加记录并启用” 即可

配置路由规则:

- Catch-all 地址: 启用 "Catch-all"
- 编辑 Catch-all 地址
- 操作: 选择 "发送到 Worker"
- 目标位置: 选择刚刚部署的 "email-receiver-worker"
- 保存
注意事项
- 确保域名的 DNS 托管在 Cloudflare
- Email Worker 必须已经部署成功
- 如果 Catch-All 状态不可用(一直 loading),请点击“路由规则”旁边的“目标地址”,进去绑定一个邮箱
