EdgeChat 是一个基于 Cloudflare 全家桶(Workers + D1 + R2 + KV)的现代团队聊天系统,支持公开/私有群组、私信、实时消息、文件上传和管理后台
EdgeChat 详细部署教程
EdgeChat 是一个基于 Cloudflare 全家桶(Workers + D1 + R2 + KV)的现代团队聊天系统,支持公开/私有群组、私信、实时消息、文件上传和管理后台。本教程将引导你完成从零开始的全流程部署。
一、部署前准备
1.1 必备资源
- Cloudflare 账号(免费套餐即可)
- GitHub 账号(用于自动部署)
- 域名(可选,用于绑定自定义域名)
- Node.js 环境(用于本地开发和手动部署)
1.2 Cloudflare 服务开通
在 Cloudflare Dashboard 中依次开通以下服务:
- Workers & Pages - 主计算服务
- D1 数据库 - 存储用户、消息、群组等数据
- R2 对象存储 - 存储文件上传和头像
- KV 存储 - 用于会话缓存和临时数据
二、部署方式选择
EdgeChat 支持三种部署方式,推荐优先使用 GitHub Actions 自动部署。
| 部署方式 | 适用场景 | 维护复杂度 |
|---|---|---|
| GitHub Actions(推荐) | 生产环境、长期维护 | 低(推送即部署) |
| 本地手动部署 | 开发测试、快速验证 | 中 |
| Docker 本地部署 | 本地模拟、离线测试 | 中 |
三、GitHub Actions 自动部署(推荐)
3.1 Fork 仓库
- 访问 EdgeChat 项目主页
- 点击右上角 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 触发部署
- 自动触发:推送代码到
master或main分支 - 手动触发:进入 Actions 页面,选择
Deploy Worker工作流,点击Run workflow
部署完成后,Cloudflare Worker 会分配一个 *.workers.dev 域名,可以直接访问使用。
四、本地手动部署
4.1 克隆代码并安装依赖
1 | # 克隆你的 Fork 仓库 |
4.2 配置 Cloudflare 凭证
在项目根目录创建 .env 文件(或设置环境变量):
1 | CLOUDFLARE_API_TOKEN=你的API令牌 |
4.3 初始化 D1 数据库
1 | # 创建 D1 数据库(在 Cloudflare 控制台或通过 Wrangler) |
在 wrangler.toml 中配置 D1 绑定:
1 | [[d1_databases]] |
4.4 创建 R2 存储桶
1 | # 创建 R2 存储桶 |
在 wrangler.toml 中添加 R2 绑定:
1 | [[r2_buckets]] |
4.5 执行数据库迁移
1 | # 应用数据库表结构(首次部署) |
4.6 构建并部署
1 | # 构建前端资源 |
五、Docker 本地部署(开发/测试)
项目提供了 Docker 支持,适合在本地环境中快速启动完整服务。
5.1 使用 Docker Compose
1 | # 启动所有服务 |
5.2 手动 Docker 构建
1 | # 构建镜像 |
详细 Docker 配置参考项目根目录的
DOCKER.md文件。
六、部署后配置
6.1 首次访问设置
- 访问分配的 Worker URL(如
https://你的子域名.workers.dev) - 系统默认无用户,需通过 管理后台 创建第一个管理员用户
- 管理后台地址通常为
/admin(具体路径查看部署后提示)
6.2 管理员后台操作
- 用户管理:创建用户、设置角色、启用/封禁账号(支持永久或定时封禁)
- 群组管理:创建公开/私有群组
- 邀请注册:生成注册邀请链接(系统不开放自助注册)
- 网站设置:自定义站点名称、Logo 等
6.3 绑定自定义域名(可选)
- 在 Cloudflare Dashboard → Workers → 你的 Worker → 触发器
- 添加自定义域名(需在 Cloudflare DNS 中已解析)
- 配置 SSL/TLS 证书(Cloudflare 自动提供)
七、高级功能:Telegram 双向桥接
EdgeChat 支持与 Telegram 群组双向消息同步,实现跨平台聊天。
7.1 准备工作
- 一个 Telegram Bot Token(通过 @BotFather 创建)
- Telegram 群组 ID(将 Bot 加入群组后获取)
7.2 在管理后台配置
- 进入管理后台 → 群组设置
- 选择要绑定的 EdgeChat 群组
- 填写 Telegram Bot Token 和群组 ID
- 保存后,两侧消息自动实时同步
消息同步是双向的:EdgeChat 成员消息 → Telegram 群组,Telegram 群组消息 → EdgeChat 群组。
八、常见问题与维护
Q1:部署失败,提示 D1 或 R2 未绑定
- 确认在 Cloudflare Dashboard 中已创建 D1 数据库和 R2 存储桶
- 检查
wrangler.toml中的database_id和bucket_name是否正确
Q2:文件上传失败
- 检查 R2 存储桶权限和 CORS 配置
- 确认 Worker 绑定的 R2 存储桶名称与配置文件一致
Q3:如何更新部署?
- GitHub Actions:推送代码到主分支或手动触发工作流
- 手动部署:拉取最新代码 →
npm run build→npm run deploy
Q4:如何备份数据?
- D1 数据库:使用
wrangler d1 export命令导出 - R2 文件:使用 R2 控制台或 S3 兼容工具同步
九、项目结构与扩展
EdgeChat 的核心代码结构清晰,便于二次开发:
1 | edgechat/ |
十、参考资源
- 在线演示:https://edgechat-demo.wcjxxgaq.workers.dev
- 项目文档:https://echat.azora.top
- Telegram 社区:项目 README 中的 Telegram 链接
- 技术细节:项目根目录的
TECHNICAL.md文件
通过以上步骤,你可以在 Cloudflare 免费额度内快速部署一个功能完整的团队聊天系统,无需管理服务器,数据完全归属自己。如需进一步定制或遇到问题,可查阅官方文档或在 GitHub 提交 Issue。


