一个运行在 Cloudflare Workers 上的无服务器 GitHub 仓库监控系统
无需服务器,零成本运行,通过 Telegram 实时接收代码更新通知
- 👀 多维监控 - 支持无限数量 GitHub 仓库,可指定监控特定分支
- 📊 智能检测 - 自动识别新提交并过滤无关变更
- 🎨 内置仪表盘 - 无需额外部署,直接访问 Worker 域名即可管理
- 📱 响应式设计 - 完美适配桌面端和移动端
- 📈 状态概览 - 实时显示检查时间、API 状态和运行日志
- 💬 Telegram 推送 - 实时发送提交详情(Commit Hash、作者、留言、链接)
- ⏰ 定时报告 - 可选开启 Cron 定时任务执行汇总报告
- 🔐 身份验证 - 基于会话管理和 SHA-256 密码加密
- 💾 数据持久化 - 使用 Cloudflare KV 进行稳定数据存储
- 🔑 GitHub Token 支持 - 显著提升 API 调用频率限制
- 🌐 边缘计算 - 利用 Cloudflare 全球网络实现快速响应
npm install
npm run dev # 本地启动 wrangler dev
npm run typecheck # TypeScript 校验
npm run test # 跑全部测试
npm run deploy # 部署到 Cloudflare Workers需要 Node.js ≥ 20。
npm run deploy --dry-run
或 wrangler deploy --dry-run 拿到 bundle 单文件再粘贴。
🛠️ 点击展开命令行部署指南
# 安装 Wrangler CLI
npm install -g wrangler
# 登录 Cloudflare
wrangler login- 项目配置
# 创建并配置 wrangler.toml
cat > wrangler.toml << EOF
name = "github-monitor"
main = "src/index.js"
compatibility_date = "2023-01-01"
[[kv_namespaces]]
binding = "STORAGE"
id = "your-kv-namespace-id-here"
[triggers]
crons = ["*/30 * * * *"]
EOF- 创建 KV 命名空间
# 创建 KV 命名空间并获取 ID
npx wrangler kv:namespace create "GITHUB_MONITOR_KV"
# 将返回的 ID 替换到 wrangler.toml 中- 部署应用
# 部署到 Cloudflare Workers
npx wrangler deploy⚙️ 配置指南
- 首次登录与初始化
部署成功后,访问您的 Worker 域名:
https://github-monitor.your-name.workers.dev
· 🔐 默认密码: admin123
·
- 必要配置参数
在仪表盘的 系统设置 中填入以下信息:
| 参数 | 说明 | 获取方式 |
|---|---|---|
Telegram Bot Token |
机器人密钥 | 在 Telegram 联系 @BotFather 发送 /newbot 创建 |
Telegram Chat ID |
接收消息的 ID | 向您的机器人发送任意消息,然后访问 https://api.telegram.org/bot<TOKEN>/getUpdates 查看 |
GitHub Token |
(可选但推荐) API 令牌 | 在 GitHub Developer Settings 生成 Classic Token |
⚠️ GitHub Token 权限:
- 只读监控:无需特殊权限(公开仓库)或
public_repo(私有仓库)- 「同步上游」与「Fork 此仓库」功能:需要
repo或public_repo权限
ℹ️ 为什么需要 GitHub Token?
· 未认证请求: 每小时 60 次 API 调用限制 · 使用 Token 后: 每小时 5000 次 API 调用限制 · 适用场景: 频繁监控或大量仓库时必需
除了 Web 界面,系统还提供以下 REST API 端点:
| 端点 | 方法 | 描述 | 响应示例 |
|---|---|---|---|
/ |
GET |
返回 Web 管理面板 | HTML 页面 |
/check-updates |
GET |
手动触发更新检查 | {"success":true, "message":"检查完成", "checkedCount":5} |
/health |
GET |
健康检查接口 | {"status":"ok", "timestamp":"..."} |
❓ 常见问题
Q: 登录后显示 "Internal Server Error"?
A: 99% 的情况是因为没有正确绑定 KV Storage:
· 检查 Settings → Variables 中是否绑定了 KV · 确认变量名必须是 STORAGE(全大写) · 重新部署 Worker 应用
Q: 定时任务没有发送通知?
A: 请按以下步骤排查:
- ✅ Cloudflare 后台是否添加了 Cron Trigger
- ✅ Telegram Bot Token 和 Chat ID 是否正确配置
- ✅ 是否开启了"定时任务通知"开关
- ✅ 检查 Worker 日志是否有错误信息
Q: 如何重置管理员密码?
A: 如果忘记密码,可以通过以下方式重置:
- 进入 Cloudflare 后台的 KV 界面
- 找到 GITHUB_MONITOR_KV 命名空间
- 删除键名为 admin_password_hash 的条目
- 重新访问网页,密码将重置为 admin123
📄 许可证
本项目基于 MIT 许可证 开源。
如果这个项目对您有帮助,请给个 ⭐️ 星标支持!
由 Cloudflare Workers 提供支持 🌐