用 GitHub Release Monitor 自动追踪开源项目更新:从零到部署的完整指南
“
你是否也常常在浏览器里反复刷新某个 GitHub 仓库,只为等那条「Release v2.3.0」?
本文手把手带你用 GitHub Release Monitor 把这件重复、耗时、还容易遗漏的小事自动化。全文 9000+ 字,含 Docker 一行启动、手动部署、常见坑排查与 FAQ,照着做 30 分钟就能上线。
一、这东西到底能帮我做什么?
一句话:把「追踪开源项目的新版本」这件事变成「收到一封邮件通知」。
二、核心能力速览
三、30 秒看懂技术栈
-
前端:Next.js 14 + TypeScript + Tailwind CSS + ShadCN UI -
后端:同一套 Next.js 的 App Router,无需额外服务器 -
邮件:Nodemailer,支持 STARTTLS / SSL -
认证:iron-session 加密 cookie,无需数据库 -
打包:Docker 镜像 ghcr.io/iamspido/github-release-monitor:latest
“
如果你只关心“跑起来”,直接跳到「Docker Compose 部署」即可;想深入源码再看「手动部署」。
四、Docker Compose 部署(官方推荐,含自动 HTTPS)
1. 准备条件
-
一台能装 Docker 和 Docker Compose 的 Linux 服务器(Ubuntu 22.04 演示) -
一个域名,例如 releases.example.com
解析到服务器 IP -
80/443 端口未被占用(Traefik 会自动申请 Let’s Encrypt 证书)
2. 下载示例配置
git clone https://github.com/iamspido/github-release-monitor.git
cd github-release-monitor/example
目录结构:
example
├── traefik/ # 反向代理 + 自动 HTTPS
├── smtp/ # 本地 SMTP relay(可选)
└── github-release-monitor/ # 主程序
3. 配置主程序
进入主程序目录,编辑 .env
:
cd github-release-monitor
cp env.example .env
nano .env
最少需要改 4 处:
“
如果你用自带的 SMTP relay,MAIL_HOST / MAIL_PORT 保持默认即可。
4. 配置 Traefik
进入 example/traefik/compose.yaml
:
command:
- "--certificatesresolvers.letsencrypt.acme.email=you@example.com"
把邮箱换成自己的,证书到期自动续期。
5. 配置 SMTP Relay(可选但推荐)
进入 example/smtp/compose.yaml
:
environment:
- POSTFIX_myhostname=example.com
- OPENDKIM_DOMAINS=example.com=mail
域名与 MAIL_FROM_ADDRESS
对应,减少进垃圾箱概率。
6. 启动服务
按顺序启动:
# 1. 反向代理网络
docker compose -f traefik/compose.yaml up -d
# 2. SMTP
docker compose -f smtp/compose.yaml up -d
# 3. 主程序
docker compose -f github-release-monitor/compose.yaml up -d
浏览器打开 https://releases.example.com
,输入用户名密码即可。
五、Docker 单行启动(无 HTTPS,本地测试)
如果你只是本地尝鲜,一条命令:
mkdir -p data && sudo chown -R 1001:1001 data
docker run -d \
-p 8080:3000 \
-v "$PWD/data:/app/data" \
--env-file .env \
--name github-release-monitor \
ghcr.io/iamspido/github-release-monitor:latest
访问 http://localhost:8080
。
六、手动部署(源码跑起来)
适用场景:
-
想改 UI 或加功能 -
公司内网无法拉镜像 -
想跑在 ARM、OpenWrt 等特殊环境
步骤 1:克隆代码
git clone https://github.com/iamspido/github-release-monitor.git
cd github-release-monitor
步骤 2:安装依赖
npm install
步骤 3:准备数据目录
mkdir data
sudo chown $(whoami) data
步骤 4:写 .env
复制示例并填写:
cp .env.example .env
nano .env
必填项与 Docker 部分相同,不再赘述。
步骤 5:启动
开发模式(热更新):
npm run dev
生产模式:
npm run build
npm run start
默认监听 :3000
。
七、界面速通:第一次登录后做什么?
-
添加仓库
主页右上角「Add Repository」→ 输入facebook/react
这类格式 → 保存。
系统立刻查询一次,如有最新 release 会立即发邮件(可关闭)。 -
全局过滤器
Settings → Global Filters:-
Stable:稳定版 -
Pre-release:预发布 -
Draft:草稿
按你的口味开关。
-
-
仓库级过滤
对单个仓库点「Edit」→ Override Global → 只勾rc
,于是只有v2.0.0-rc.1
会提醒你。 -
测试邮件
Settings → Diagnostics → Send Test Email,确认 SMTP 通不通。 -
导入导出
Settings → Data → Export JSON,换机器时直接拖进去即可。
八、FAQ:你可能遇到的 12 个问题
九、常见场景配置示例
场景 1:只关注稳定版
-
Global Filters:仅勾选 Stable -
所有仓库用 Global 即可 -
好处:邮箱安静,不被 alpha/beta 打扰
场景 2:前端团队关注 Next.js Canary
-
添加 vercel/next.js
-
Override → Pre-release 打勾 → Tags 填 canary
-
于是 v14.0.5-canary.6
会提醒,而v14.0.4
不会
场景 3:运维组内部共享列表
-
管理员 A 把常用 30 个库添加完 -
Settings → Export JSON → 存成 team-repos.json
-
新同事入职:Import JSON → 10 秒完成同步
十、故障排查清单(收藏备用)
十一、扩展阅读:如何自己魔改
-
换主题色:改 tailwind.config.js
→ 重新编译 -
加 Webhook 通知:在 src/lib/notifications.ts
里新增 provider -
接入企业微信:把 SMTP 换成企业微信的「邮件机器人」地址即可 -
跑在 NAS:群晖 DSM 7 直接装 Docker Compose,网络选 host 模式
十二、小结
GitHub Release Monitor 把「盯版本」这件事做到了极简:
-
对开发者:再也不用写脚本轮询 GitHub API -
对团队:共享列表、零配置迁移 -
对运维:一条 Docker Compose 搞定 HTTPS、SMTP、备份
照着本文 30 分钟搭好,把节省下来的时间留给写代码吧。