部署
GitPigeon 是单租户的:每人为自己的博客部署一份。各平台共用同一份核心代码,只需换入口。
前置准备
- 一个 GitHub 仓库(用来存评论,可以和你博客仓库分开)
- 一个 Fine-grained PAT(见 GitHub 配置)
- 一个 Cloudflare Turnstile Site Key / Secret Key
- 一个发件方式:Resend 或 MailPort(见 邮件配置)
Vercel
- 导入本仓库
- 在 Project Settings → Environment Variables 填入 环境变量
- Framework Preset 选 Other,Build Command 留空,Output Directory 留空
- 部署完成后访问
/api/health自检
Netlify
- 导入本仓库
netlify.toml已配置好publish = "public"与 functions 目录- 在 Site settings → Environment variables 填入变量
- 部署后访问
/api/health
Cloudflare Workers
- 执行
npm run build生成public/embed.js与public/review.js - 用
wrangler deploy部署,wrangler.toml已声明静态资源目录 - 用
wrangler secret put逐项写入敏感变量 - 访问
https://<worker>.workers.dev/api/health
Cloudflare Pages
functions/api/[[path]].ts 已把 /api/* 转发到共享路由,public/_routes.json 限定只有 /api/* 走函数,其余走静态资源。
- 在 Cloudflare Dashboard → Workers & Pages → Create → Pages,连接本仓库
- Build command 填
npm run build,Build output directory 填public - 在 Settings → Environment variables 填入 环境变量
- 部署后访问
https://<project>.pages.dev/api/health
注意事项:
- Pages 的环境变量在改动后需要重新部署才生效
- 若你的博客也在 Pages 上,注意本系统的
/api/*与博客自身的 worker 路由不要冲突 - Pages 免费版函数有每日请求上限,作为评论系统通常足够
本地运行(不推荐用于生产)
本地方式适合调试与内网自用,不推荐作为生产部署:缺少 TLS、没有边缘缓存、进程需要常驻,且与平台 Git 集成无关。
- 执行
npm run build - 复制
.env.example为.env并填写 - 执行
npm run serve:local
脚本会打包 dev-server.mjs 并用 Node 内置 HTTP 服务启动,默认端口 8787,可用 PORT 覆盖:
本地模式使用 Node 的 Web Request / Response 适配层,行为与边缘平台一致,但不具备平台级缓存与鉴权能力。生产请使用上文的 Vercel / Netlify / Workers / Pages。
部署后自检
访问 /api/health,确认:
status为okgit.readable为true(PAT 能读到评论仓库)mail.configured为true(若开启了审核)sameRepoWarning为null(若你选择不同仓库)