EdgeChat 详细部署教程

EdgeChat 是一个基于 Cloudflare 全家桶(Workers + D1 + R2 + KV)的现代团队聊天系统,支持公开/私有群组、私信、实时消息、文件上传和管理后台。本教程将引导你完成从零开始的全流程部署。


一、部署前准备

1.1 必备资源

  • Cloudflare 账号(免费套餐即可)
  • GitHub 账号(用于自动部署)
  • 域名(可选,用于绑定自定义域名)
  • Node.js 环境(用于本地开发和手动部署)

1.2 Cloudflare 服务开通

在 Cloudflare Dashboard 中依次开通以下服务:

  1. Workers & Pages - 主计算服务
  2. D1 数据库 - 存储用户、消息、群组等数据
  3. R2 对象存储 - 存储文件上传和头像
  4. KV 存储 - 用于会话缓存和临时数据

二、部署方式选择

EdgeChat 支持三种部署方式,推荐优先使用 GitHub Actions 自动部署

部署方式 适用场景 维护复杂度
GitHub Actions(推荐) 生产环境、长期维护 低(推送即部署)
本地手动部署 开发测试、快速验证
Docker 本地部署 本地模拟、离线测试

三、GitHub Actions 自动部署(推荐)

3.1 Fork 仓库

  1. 访问 EdgeChat 项目主页
  2. 点击右上角 Fork,将仓库复制到你的 GitHub 账号下

3.2 配置 Cloudflare API 凭证

在你的 GitHub 仓库设置中添加以下 Secrets(路径:Settings → Secrets and variables → Actions):

Secret 名称 说明 获取方式
CLOUDFLARE_API_TOKEN Cloudflare API 令牌 Cloudflare Dashboard → 我的个人资料 → API 令牌 → 创建令牌(选择“编辑 Cloudflare Workers”模板)
CLOUDFLARE_ACCOUNT_ID Cloudflare 账户 ID Cloudflare Dashboard 右侧“账户 ID”

3.3 (可选)配置加密密钥

系统使用 AES-256-GCM 对消息和附件进行服务端加密。如需自定义密钥,创建 Repository Secret EDGECHAT_ENCRYPTION_KEYRING

1
{"activeKeyId":"v1","keys":{"v1":"BASE64_ENCODED_32_BYTE_KEY"}}

注意:首次部署时若未提供,系统会自动生成随机密钥并长期使用。服务端加密不是端到端加密,Worker 运行环境和部署方仍位于信任边界内。

3.4 触发部署

  • 自动触发:推送代码到 mastermain 分支
  • 手动触发:进入 Actions 页面,选择 Deploy Worker 工作流,点击 Run workflow

部署完成后,Cloudflare Worker 会分配一个 *.workers.dev 域名,可以直接访问使用。


四、本地手动部署

4.1 克隆代码并安装依赖

1
2
3
4
5
6
# 克隆你的 Fork 仓库
git clone https://github.com/你的用户名/Edgechat.git
cd Edgechat

# 安装依赖
npm install

4.2 配置 Cloudflare 凭证

在项目根目录创建 .env 文件(或设置环境变量):

1
2
CLOUDFLARE_API_TOKEN=你的API令牌
CLOUDFLARE_ACCOUNT_ID=你的账户ID

4.3 初始化 D1 数据库

1
2
3
4
# 创建 D1 数据库(在 Cloudflare 控制台或通过 Wrangler)
npx wrangler d1 create edgechat-db

# 将输出的 database_id 和 database_name 填入 wrangler.toml

wrangler.toml 中配置 D1 绑定:

1
2
3
4
[[d1_databases]]
binding = "DB"
database_name = "edgechat-db"
database_id = "你的数据库ID"

4.4 创建 R2 存储桶

1
2
# 创建 R2 存储桶
npx wrangler r2 bucket create edgechat-uploads

wrangler.toml 中添加 R2 绑定:

1
2
3
[[r2_buckets]]
binding = "BUCKET"
bucket_name = "edgechat-uploads"

4.5 执行数据库迁移

1
2
3
4
# 应用数据库表结构(首次部署)
npx wrangler d1 execute edgechat-db --file=./worker/schema.sql

# 如需增量迁移,执行 migrations/ 目录下的文件

4.6 构建并部署

1
2
3
4
5
# 构建前端资源
npm run build

# 部署到 Cloudflare Workers
npm run deploy

五、Docker 本地部署(开发/测试)

项目提供了 Docker 支持,适合在本地环境中快速启动完整服务。

5.1 使用 Docker Compose

1
2
3
4
5
# 启动所有服务
docker-compose up -d

# 查看日志
docker-compose logs -f

5.2 手动 Docker 构建

1
2
3
4
5
6
7
8
# 构建镜像
docker build -t edgechat .

# 运行容器(需要配置环境变量)
docker run -p 8787:8787 \
-e CLOUDFLARE_API_TOKEN=你的令牌 \
-e CLOUDFLARE_ACCOUNT_ID=你的账户ID \
edgechat

详细 Docker 配置参考项目根目录的 DOCKER.md 文件。


六、部署后配置

6.1 首次访问设置

  1. 访问分配的 Worker URL(如 https://你的子域名.workers.dev
  2. 系统默认无用户,需通过 管理后台 创建第一个管理员用户
  3. 管理后台地址通常为 /admin(具体路径查看部署后提示)

6.2 管理员后台操作

  • 用户管理:创建用户、设置角色、启用/封禁账号(支持永久或定时封禁)
  • 群组管理:创建公开/私有群组
  • 邀请注册:生成注册邀请链接(系统不开放自助注册)
  • 网站设置:自定义站点名称、Logo 等

6.3 绑定自定义域名(可选)

  1. 在 Cloudflare Dashboard → Workers → 你的 Worker → 触发器
  2. 添加自定义域名(需在 Cloudflare DNS 中已解析)
  3. 配置 SSL/TLS 证书(Cloudflare 自动提供)

七、高级功能:Telegram 双向桥接

EdgeChat 支持与 Telegram 群组双向消息同步,实现跨平台聊天。

7.1 准备工作

  • 一个 Telegram Bot Token(通过 @BotFather 创建)
  • Telegram 群组 ID(将 Bot 加入群组后获取)

7.2 在管理后台配置

  1. 进入管理后台 → 群组设置
  2. 选择要绑定的 EdgeChat 群组
  3. 填写 Telegram Bot Token 和群组 ID
  4. 保存后,两侧消息自动实时同步

消息同步是双向的:EdgeChat 成员消息 → Telegram 群组,Telegram 群组消息 → EdgeChat 群组。


八、常见问题与维护

Q1:部署失败,提示 D1 或 R2 未绑定

  • 确认在 Cloudflare Dashboard 中已创建 D1 数据库和 R2 存储桶
  • 检查 wrangler.toml 中的 database_idbucket_name 是否正确

Q2:文件上传失败

  • 检查 R2 存储桶权限和 CORS 配置
  • 确认 Worker 绑定的 R2 存储桶名称与配置文件一致

Q3:如何更新部署?

  • GitHub Actions:推送代码到主分支或手动触发工作流
  • 手动部署:拉取最新代码 → npm run buildnpm run deploy

Q4:如何备份数据?

  • D1 数据库:使用 wrangler d1 export 命令导出
  • R2 文件:使用 R2 控制台或 S3 兼容工具同步

九、项目结构与扩展

EdgeChat 的核心代码结构清晰,便于二次开发:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
edgechat/
├── frontend/ # Vue 3 前端源码
│ ├── src/
│ │ ├── api.js # API 调用封装
│ │ ├── store.js # Pinia 状态管理
│ │ ├── ws.js # WebSocket 实时消息
│ │ └── pages/ # 页面组件
├── worker/ # Cloudflare Worker 后端
│ ├── src/
│ │ ├── api/ # REST API 路由
│ │ ├── do/ # Durable Objects(实时会话)
│ │ ├── auth.js # 认证逻辑
│ │ └── db.js # D1 数据库操作
│ └── schema.sql # 数据库表结构
└── wrangler.toml # Cloudflare 配置文件

十、参考资源


通过以上步骤,你可以在 Cloudflare 免费额度内快速部署一个功能完整的团队聊天系统,无需管理服务器,数据完全归属自己。如需进一步定制或遇到问题,可查阅官方文档或在 GitHub 提交 Issue。