自助部署 PWA
Fork 模板,部署你自己的 DAO Message 实例。所有平台均免费。无论部署在哪里,消息始终端到端加密。
选哪个平台?
| 平台 | 免费额度 | 中国访问 | 一键部署 |
|---|---|---|---|
| Cloudflare Pages ⭐ | 不限带宽,500 次构建/月 | 🟢 最佳(330+ 节点) | ✅ |
| GitHub Pages | 不限(公开仓库) | 🔴 不稳定 | ✅(内置 workflow) |
| Vercel | 100 GB/月 | 🟡 尚可 | ✅ |
| Netlify | 100 GB/月 | 🟡 尚可 | ✅ |
Cloudflare Pages ⭐
两种方式二选一。
方式 A · CF Dashboard Git 集成(推荐,零代码)
⚠️ 不要用
deploy.workers.cloudflare.com/?url=...那种 Deploy Button — 它走 Worker 创建流程,会误把 PWA 当成 Worker 部署失败。
第一步:Fork 模板
打开 github.com/daomessage/securechat-pwa → 右上角 Fork → fork 到你的 GitHub
第二步:打开 CF Pages 新建页
dash.cloudflare.com → Create → Pages tab(不是 Workers tab)→ Connect to Git
第三步:授权 GitHub(做过一次就跳到第四步)
Connect GitHub → 弹窗授权 → Only select repositories → 勾选你 fork 的 securechat-pwa → Install & Authorize
第四步:创建项目
选你 fork 的仓库 → Begin setup → 配置:
| 字段 | 值 |
|---|---|
| 项目名 | 改成你想要的名字(这就是 <名称>.pages.dev) |
| Framework preset | Vite |
| Build command | npm run build |
| Build output directory | dist |
环境变量 NODE_VERSION | 22 |
第五步:Save and Deploy → 等 ~90 秒 → 打开 <名称>.pages.dev
之后每次 push 到 main 自动重新部署,PR 自动生成预览 URL。
方式 B · GitHub Actions + Wrangler
适合需要在 CI 里看部署日志、或者在部署前加测试步骤的场景。
第一步:Fork 模板(同上)
第二步:在 CF 创建空项目
CF Dashboard → Workers & Pages → Create → Pages → Direct Upload → 起个项目名 → Create project → 跳过上传
第三步:添加 GitHub Secrets
你 fork 的仓库 → Settings → Secrets and variables → Actions → New repository secret:
| Secret 名 | 取值 |
|---|---|
CF_ACCOUNT_ID | CF Dashboard 右侧栏 Account ID |
CF_API_TOKEN | API Tokens → 用 "Cloudflare Pages: Edit" 模板生成 |
第四步:触发部署
模板已内置 .github/workflows/deploy-cloudflare-pages.yml,推 main 自动触发,或手动: Actions tab → Deploy to Cloudflare Pages → Run workflow → 等 ~2 分钟
如果你已经用了方式 A(CF Dashboard Git 集成),两者会各自独立触发,可能重复部署。二选一就好。
绑定自定义域名(两种方式通用)
CF Pages 项目 → Custom domains → Set up a custom domain → 填 chat.yourname.com
如果域名在 Cloudflare DNS 里 → 自动加 CNAME;否则手动添加:
chat CNAME <你的项目名>.pages.dev5-10 分钟 SSL 自动签发。
GitHub Pages
最简单,不需要任何第三方平台账号,只用你的 GitHub。
第一步:Fork
github.com/daomessage/securechat-pwa → Fork
第二步:启用 GitHub Pages
你 fork 的仓库 → Settings → Pages → Source → "GitHub Actions"(不是 "Deploy from a branch")
第三步:触发首次部署
- Actions tab → Deploy to GitHub Pages → Run workflow,或者推任意 commit 到 main
第四步:访问你的站
https://<你的 GitHub 用户名>.github.io/securechat-pwa/workflow 自动处理 /<repo>/ 子路径,无需手动改代码。
中国大陆访问
github.io 在中国大陆经常被污染或缓慢。国内用户推荐用 Cloudflare Pages。
Vercel
第一步:点击上方按钮
跳转到 vercel.com/new/clone,Vercel 会自动帮你把模板 fork 到你的 GitHub 账号。
第二步:登录 / 注册 Vercel
用 GitHub 账号登录(推荐),Vercel 会请求 GitHub 授权。
第三步:配置项目
| 字段 | 值 |
|---|---|
| Project Name | 改成你想要的名字(这就是 <名称>.vercel.app) |
| Framework Preset | 自动识别为 Vite,保持不变 |
| Build Command | npm run build(已预填) |
| Output Directory | dist(已预填) |
无需填写任何环境变量。
第四步:点击 Deploy
等 ~60 秒。完成后跳转到项目面板,点击 <名称>.vercel.app 访问。
之后自动部署:你 GitHub 上那个 fork 仓库每次 push 到 main,Vercel 自动重新构建部署。
绑定自定义域名:项目面板 → Settings → Domains → 填入你的域名 → 按提示加 CNAME。
Netlify
第一步:点击上方按钮
跳转到 app.netlify.com/start/deploy,Netlify 会自动帮你把模板 fork 到你的 GitHub 账号。
第二步:登录 / 注册 Netlify
用 GitHub 账号登录(推荐),Netlify 会请求 GitHub 授权。
第三步:填写仓库名称
Netlify 会询问你想把 fork 取什么名字,默认是 securechat-pwa,可以改。
第四步:点击 Save & Deploy
等 ~90 秒。完成后跳转到站点面板,点击 <随机名>.netlify.app 访问。
构建配置(build command = npm run build、publish directory = dist)由仓库内的 netlify.toml 自动提供,无需手填。
之后自动部署:每次 push 到 main 自动触发重新构建。PR 自动生成预览 URL。
绑定自定义域名:站点面板 → Domain settings → Add custom domain → 填入域名 → 按提示配置 DNS。
常见问题
构建失败 — "npm ci EUSAGE" 或 lock file 不匹配 同步上游:你的 fork 页面 → Sync fork → Update branch → 重新部署。
注册/登录时出现 CORS 错误 relay 的 CORS 策略已于 2026-04-21 完全开放。如仍遇到:清浏览器缓存后刷新。
刷新子路由出现 404
- Cloudflare Pages:
public/_redirects已处理 - GitHub Pages:workflow 自动 copy
index.html → 404.html - Vercel / Netlify:平台内置 SPA rewrite 处理
iPhone Safari 无法收到推送通知 iOS 要求 PWA 先添加到主屏幕才能申请 Web Push 权限(Safari → 分享 → 添加到主屏幕)。App 会自动弹出安装引导。
如何更新到最新版本? 你的 fork 页面 → Sync fork → Update branch,托管平台自动重新构建部署。