domain-check部署教程:域名到期监控仪表盘,基于Cloudflare Workers搭建

domain-check部署教程:域名到期监控仪表盘,基于Cloudflare Workers搭建
luoli前言
domain-check 是一个基于 Cloudflare Worker + Worker KV 构建的域名到期监控仪表盘,支持自动 WHOIS 查询(含 RDAP 回退)、分组管理、到期提醒、Telegram 通知等功能。它可以帮助网站管理员轻松监控大量域名的到期时间,避免因忘记续费而丢失域名。
- 项目地址:https://github.com/yutian81/domain-check
- 开源协议:MIT
功能特点
| 功能 | 说明 |
|---|---|
| 🔐 双模式访问 | / 公开页面(只读、域名脱敏)和 /admin 管理页面(需密码、完整操作) |
| 🌐 域名管理 | 支持一级和二级域名的添加、编辑、删除、克隆 |
| ✅ 批量操作 | 复选框多选、全选、批量删除 |
| 🔍 WHOIS 自动查询 | 一级域名自动获取注册和到期信息(主源 ip.sb + 备用 RDAP) |
| 📊 可视化仪表盘 | 域名状态概览、进度条、分组展示 |
| 🔒 密码保护 | Cookie 鉴权,7 天有效期,退出登录不删除 Cookie |
| 💾 KV 存储 | 每个域名独立 key 存储,无并发竞态 |
| 📦 数据备份 | 支持数据的导出和导入 |
| 📱 Telegram 通知 | 定时检查并推送即将到期提醒 |
| 📐 响应式设计 | 支持移动端和桌面端访问 |
| 🖼️ 精美模态框 | 替换浏览器原生 alert/confirm,毛玻璃效果 |
| 💎 续期功能 | 域名卡片支持年/月续费,自动更新到期时间并记录续费周期 |
路由架构
| 路径 | 权限 | 说明 |
|---|---|---|
/ |
🔓 公开 | 域名/账号脱敏展示,不可操作 |
/admin |
🔒 需密码 | 完整管理页面,所有操作按钮 |
/login |
🔓 公开 | 登录页,成功后跳转 /admin |
/logout |
🔓 公开 | 跳转回首页,不删除 Cookie |
/api/domains |
🔒 全部需鉴权 | 域名 CRUD API |
/api/whois/<domain> |
🔓 公开 | WHOIS 查询 |
/api/config |
🔓 公开 | 前端配置(非敏感字段) |
/cron |
🔓 公开 | 手动触发到期检查 |
技术栈
| 类别 | 技术 |
|---|---|
| 运行平台 | Cloudflare Workers |
| 数据存储 | Cloudflare KV |
| 前端样式 | CSS(毛玻璃效果) |
| 开发语言 | JavaScript |
| 构建工具 | Node.js |
准备工作
在开始部署之前,需要准备以下内容:
- Cloudflare 账号 — 注册 Cloudflare 并绑定一个域名
- GitHub 账号 — 用于 Fork 仓库
- API Token — 需要具有 Worker 和 KV 权限的 API Token
部署步骤
1. 创建 KV 空间
- 登录 Cloudflare Dashboard
- 进入 Workers 和 Pages → KV → 创建命名空间
- 输入名称,例如
DOMAIN_KV,点击创建 - 创建后在 KV 名称右侧会显示一串字符,这就是 KV ID,请保存下来备用
2. 获取 API Token
- 进入 Cloudflare Dashboard → 个人资料 → 我的个人资料 → API 令牌
- 点击 创建令牌,选择 编辑 Cloudflare Workers 模板
- 在 API 令牌 设置中,确保包含以下权限:
- Account → Workers → Edit
- Account → KV Storage → Edit
- 创建后复制 API Token 保存备用
⚠️ API Token 需要具有 Worker 和 KV 的读写权限,否则部署会失败。
3. Fork 项目仓库
访问 domain-check 项目,先给项目点个 ⭐,然后点击右上角 Fork,将仓库克隆到你的 GitHub 账号下。
4. 配置 GitHub Secrets
在 Fork 的仓库中,按以下步骤设置:
- 进入仓库 Settings → Secrets and variables → Actions
- 点击 New repository secret,依次添加以下 secrets:
| Secret 名称 | 说明 | 必填 |
|---|---|---|
CF_API_TOKEN |
Cloudflare API Token(需要 Worker 和 KV 权限) | ✅ |
CF_KV_ID |
步骤 1 中创建的 KV 空间 ID | ✅ |
PASSWORD |
访问管理页的密码(默认 123123,建议修改) |
✅ |
TGID |
Telegram 机器人 ID,用于发送通知 | ❌ |
TGTOKEN |
Telegram 机器人 Token,用于发送通知 | ❌ |
5. 配置 GitHub Variables
在 Secrets and variables → Actions → Variables 选项卡中,添加以下变量:
| 变量名 | 说明 | 默认值/示例 | 必填 |
|---|---|---|---|
CF_ACCOUNT_ID |
Cloudflare 账户 ID(不是邮箱) | 见下方说明 | ✅ |
CF_CRONS |
定时检查域名到期的 cron 表达式 | 见下方说明 | ❌ |
如何获取 CF_ACCOUNT_ID:
登录 Cloudflare Dashboard,在右上角头像下拉菜单中可以看到你的账户 ID,或者从 URL 中提取:https://dash.cloudflare.com/ACCOUNT_ID/...
CF_CRONS 示例:
1 | 0 8 * * * # 每天上午 8 点检查 |
6. 运行 GitHub Actions 部署
- 进入仓库 Actions → All workflows
- 点击 自动部署到 CF worker
- 点击 Run workflow → Run workflow
- 等待 Actions 运行完成,查看运行日志
[!TIP]
本项目部署方式采用 GitHub Actions,而非 Cloudflare 网页后台直接链接仓库部署。
这是因为 CF Worker 链接仓库部署存在 bug:KV 空间绑定和定时触发器的设置完全依赖于wrangler.toml,如果wrangler.toml没有进行配置,项目在重新部署后会丢失参数,导致 KV 空间绑定以及定时器丢失。使用 GitHub Actions 可以确保相关参数配置持久化。
7. 绑定自定义域名
部署成功后:
- 点击 Actions 输出的 worker 管理后台 链接,进入 Cloudflare Workers 管理页面
- 在项目页面找到 自定义域 → 添加自定义域
- 输入你的域名(例如
domain-check.你的域名),点击 部署 - 到 Cloudflare DNS 设置中添加相应的 DNS 记录,指向
your-worker-name.your-subdomain.workers.dev
配置环境变量(可选)
在 Worker 的环境变量中,还可设置以下可选变量:
| 变量名 | 说明 | 默认值/示例值 | 必填 |
|---|---|---|---|
DAYS |
到期提醒天数 | 30 |
❌ |
SITENAME |
网站名称 | 域名到期监控 |
❌ |
ICON |
网站图标 | https://example.com/icon.png |
❌ |
BGIMG |
背景图片 | https://example.com/bg.png |
❌ |
GITHUB_URL |
GitHub 链接 | https://github.com/yutian81/domain-check |
❌ |
BLOG_URL |
博客链接 | https://blog.notett.com |
❌ |
BLOG_NAME |
博客名称 | QingYun Blog |
❌ |
使用指南
访问管理页
- 访问
https://你的域名/admin或https://你的域名/login - 输入你在 Secrets 中设置的密码登录
- 登录成功后 Cookie 有效期为 7 天,下次访问无需重新登录
添加域名
- 在管理页点击 添加域名 按钮
- 填写域名信息:
- 域名:支持一级和二级域名
- 分组:自定义分组标签
- 注册商:域名注册商名称
- 注册商地址:注册商网站链接
- 注册账号:注册商登录账号
- 点击 保存,系统会自动通过 WHOIS 查询获取注册和到期信息
批量操作
- 域名卡片右上角有 复选框,支持多选
- 点击 全选 按钮切换勾选/取消当前页所有卡片
- 点击 删除 删除所有勾选的域名
- 点击 克隆 按钮:以该卡片信息预填充添加表单(域名留空),快速添加同注册商域名
数据导入/导出
- 点击 导出 按钮导出所有域名数据为 JSON 文件
- 点击 导入 按钮上传 JSON 文件恢复数据
续期功能
域名卡片上有一个 续期 按钮,支持年/月续费,会自动更新到期时间并记录续费周期。
手动触发检查
访问 https://你的域名/cron 可手动触发一次到期检查。
更新日志
2025-07-04
- ✨ 新增续期功能:域名卡片新增「续期」按钮,支持年/月续费,自动更新到期时间并记录续费周期
- 💎 全面毛玻璃化:所有模态框(编辑弹窗、续费弹窗、消息弹窗)统一半透明毛玻璃效果,降低透明度
- 🏷️ 分组标签系统:域名卡片分组显示为彩色标签;编辑弹窗分组改为标签选择器(下拉选择+自定义输入+空格添加+标签删除)
- 🔽 智能下拉选择:注册商名称、注册商地址、注册账号 增加基于已有数据的自动补全下拉选择器
- 🔧 其他 UI 细节优化:卡片间距、标签间距、续费弹窗布局等
常见问题
部署后访问 500 错误?
确认 KV 空间 ID 和 API Token 正确,且 API Token 具有 Worker 和 KV 的读写权限。
无法登录管理页?
确认 PASSWORD Secret 已正确设置,密码与登录时输入的一致。
定时检查没有推送 Telegram 通知?
- 确认
TGID和TGTOKENSecrets 已正确设置 - 确认
CF_CRONSVariables 已正确配置 - 确认 Telegram 机器人已正确创建并授权
如何修改部署参数?
修改 GitHub Secrets 或 Variables 后,重新运行 自动部署到 CF worker Workflow 即可。
如何绑定自定义域名?
在 Workers 管理后台 → 自定义域 → 添加自定义域,然后到 Cloudflare DNS 设置中添加相应的 DNS 记录。









