[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82102":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":14,"stars7d":15,"stars30d":16,"stars90d":13,"forks30d":13,"starsTrendScore":17,"compositeScore":18,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":8,"pushedAt":8,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":13,"starSnapshotCount":13,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},82102,"CF-Server-Monitor","huilang-me\u002FCF-Server-Monitor","huilang-me",null,"JavaScript",74,53,21,0,4,49,52,23,5.2,false,"main",true,[],"2026-06-12 02:04:23","# CF-Server-Monitor-Pro\n\n**版本：V1.3**\n\n一个基于 Cloudflare Workers + D1 的多服务器监控探针系统，支持实时监控、历史数据查看、延迟追踪、地图展示等功能。\n\n本项目基于[CF-Server-Monitor-Pro](https:\u002F\u002Fgithub.com\u002Fa63414262\u002FCF-Server-Monitor-Pro)深度二次开发\n\n## ✨ 功能特点\n\n- 📊 **实时监控**：CPU、内存、磁盘、网络、进程数、连接数\n- 📈 **历史图表**：支持 1\u002F3\u002F6\u002F12\u002F24 小时历史数据查看\n- 🌍 **全球地图**：可视化展示服务器分布\n- 🔔 **离线告警**：支持 Telegram 和企业微信通知\n- 🎨 **多主题**：2 种预设主题 + 自定义 CSS\n- 📱 **响应式**：支持桌面端和移动端\n- 🔄 **自动部署**：GitHub Actions 一键部署\n- 🗺️ **延迟追踪**：国内电信\u002F联通\u002F移动\u002F字节延迟监测\n- 🔒 **服务器隐藏**：可设置特定服务器对非登录用户隐藏\n- ↕️ **拖拽排序**：后台拖拽调整服务器显示顺序\n\n## 📁 项目结构\n\n```\nserver-monitor\u002F\n├── public\u002F\n│   └── install.sh              # 一键安装脚本（含卸载）\n├── src\u002F\n│   ├── index.js                # 主入口 - 路由分发\n│   ├── database\u002F\n│   │   └── schema.js           # 数据库初始化、历史数据存储\n│   ├── middleware\u002F\n│   │   └── auth.js             # 认证中间件\n│   ├── handlers\u002F\n│   │   ├── admin.js            # 后台管理 API\n│   │   ├── admin-ui.js         # 后台管理界面\n│   │   ├── update.js           # 数据上报处理\n│   │   ├── dashboard.js        # 前台大盘首页\n│   │   └── server-detail.js    # 服务器详情页（24h历史）\n│   ├── services\u002F\n│   │   └── notification.js     # 通知服务\n│   ├── utils\u002F\n│   │   ├── format.js           # 格式化工具\n│   │   └── settings.js         # 设置管理\n│   └── themes\u002F\n│       └── styles.js           # 主题样式\n├── package.json\n├── wrangler.toml\n└── .github\u002F\n    └── workflows\u002F\n        └── deploy.yml          # GitHub Actions 自动部署\n```\n\n## 🚀 快速开始\n\n### 前置要求\n\n- [Cloudflare 账户](https:\u002F\u002Fdash.cloudflare.com\u002F)\n- [GitHub 账户](https:\u002F\u002Fgithub.com\u002F)\n\n### 第一步：Fork 项目\n\n点击右上角 **Fork** 按钮，将项目 Fork 到你的 GitHub 账户。\n\n### 第二步：创建 D1 数据库\n\n1. 登录 [Cloudflare 控制台](https:\u002F\u002Fdash.cloudflare.com\u002F)\n2. 进入 **Workers & Pages** → **D1 SQL Database**\n3. 点击 **Create database**\n4. 数据库名称填写：`server-monitor-db`\n5. 点击 **Create**\n6. 记录下生成的 **Database ID**，稍后会用到\n\n### 第三步：获取 Cloudflare 配置\n\n#### 获取 Account ID\n\n**方式一：从右侧面板获取**\n\n1. 打开 [Cloudflare Dashboard](https:\u002F\u002Fdash.cloudflare.com\u002F)\n2. 在右侧面板找到 **Account ID**\n3. 复制保存\n\n**方式二：从 URL 中获取**\n\n- 登录后访问任意 Cloudflare 页面，例如 `https:\u002F\u002Fdash.cloudflare.com\u002Ff81d307ba09470a84732724694435c9c4c4c\u002Fworkers-and-pages`\n- URL 中 `dash.cloudflare.com\u002F` 之后的那串字符就是 Account ID\n- 以上例子中，`f81d307ba09470a84732724694435c9c4c4c` 就是 Account ID\n\n#### 获取 API Token\n\n1. 打开 [API Tokens 页面](https:\u002F\u002Fdash.cloudflare.com\u002Fprofile\u002Fapi-tokens)\n2. 点击 **Create Token\u002F创建令牌**\n3. 选择（ **Edit Cloudflare Workers\u002F编辑 Cloudflare Workers** ）模板\n4. 在 **Account Resources\u002F帐户资源** 选择你的账户\n5. 点击 **Continue to summary\u002F继续以显示摘要**→ **Create Token\u002F创建令牌**\n6. 复制生成的 Token（只显示一次！）\n\n### 第四步：配置 GitHub Secrets\n\n1. 打开你 Fork 的 GitHub 仓库\n2. 进入 **Settings** → **Secrets and variables** → **Actions**\n3. 点击 **New repository secret**，依次添加以下 4 个密钥：\n\n| Secret 名称        | 值                         | 说明                |\n| ---------------- | ------------------------- | ----------------- |\n| `CF_API_TOKEN`   | 第三步获取的 Token              | Cloudflare API 令牌 |\n| `CF_ACCOUNT_ID`  | 第三步获取的 ID                 | Cloudflare 账户 ID  |\n| `API_USER_NAME`  | 自定义用户名（如 `admin`）         | 管理后台用户名           |\n| `API_SECRET`     | 自定义密码（如 `MyMonitor2024!`） | 探针认证密钥 & 管理后台密码   |\n| `D1_DATABASE_ID` | 第二步获取的 Database ID        | D1 数据库 ID         |\n\n### 第五步：部署\n\n#### 方式一：自动部署\n\n推送代码到 `main` 分支即可自动部署：\n\n```bash\n# 克隆你 Fork 的仓库\ngit clone https:\u002F\u002Fgithub.com\u002F你的用户名\u002FCF-Server-Monitor-Pro.git\ncd CF-Server-Monitor-Pro\n\n# 可选：修改配置后提交\ngit add .\ngit commit -m \"Initial setup\"\ngit push origin main\n```\n\n推送后，GitHub Actions 会自动部署。在仓库的 **Actions** 标签页可查看部署进度。\n\n#### 方式二：手动部署\n\n也可以通过 GitHub Actions 手动触发部署：\n\n1. 进入你的 GitHub 仓库页面\n2. 点击顶部的 **Actions** 标签\n3. 在左侧工作流列表中选择 **Deploy to Cloudflare Workers**\n4. 点击右侧的 **Run workflow** 按钮\n5. 选择分支（默认选择 `main`）\n6. 点击 **Run workflow** 开始部署\n\n部署进度可在 **Actions** 标签页中查看。\n\n### 第六步：访问管理后台\n\n部署成功后，访问管理后台：\n\n```\nhttps:\u002F\u002F你的项目名.你的子域.workers.dev\u002Fadmin\n```\n\n- 用户名：你设置的 `API_USER_NAME`\n- 密码：你设置的 `API_SECRET`\n\n> **提示**：项目名和子域可以在 Cloudflare Workers & Pages 页面找到。\n\n## 🖥️ 添加服务器监控\n\n### 在管理后台添加服务器\n\n1. 进入管理后台 `\u002Fadmin`\n2. 在\"服务器名称\"输入框填写名称\n3. 点击 **+ 添加服务器**\n4. 点击新服务器旁的 **📋** 按钮复制安装命令\n\n### 在目标服务器上安装探针\n\n```bash\n# 粘贴从管理后台复制的命令，类似：\ncurl -sL https:\u002F\u002F你的项目.你的子域.workers.dev\u002Finstall.sh | bash -s install \u003CSERVER_ID> \u003CSECRET> \u003CWORKER_URL> [INTERVAL]\n```\n\n**参数说明：**\n\n| 参数           | 说明              | 默认值  |\n| ------------ | --------------- | ---- |\n| `SERVER_ID`  | 服务器唯一标识符（必填）    | -    |\n| `SECRET`     | API 认证密钥（必填）    | -    |\n| `WORKER_URL` | Worker 上报地址（必填） | -    |\n| `INTERVAL`   | 数据上报间隔（秒）       | `60` |\n\n**示例：**\n\n```bash\n# 默认60秒上报间隔\ncurl -sL https:\u002F\u002Fexample.workers.dev\u002Finstall.sh | bash -s install abc123 secret https:\u002F\u002Fexample.workers.dev\u002Fupdate\n\n# 30秒上报间隔（更实时）\ncurl -sL https:\u002F\u002Fexample.workers.dev\u002Finstall.sh | bash -s install abc123 secret https:\u002F\u002Fexample.workers.dev\u002Fupdate 30\n\n# 120秒上报间隔（节省资源）\ncurl -sL https:\u002F\u002Fexample.workers.dev\u002Finstall.sh | bash -s install abc123 secret https:\u002F\u002Fexample.workers.dev\u002Fupdate 120\n```\n\n> **注意**：上报间隔越短，数据越实时，但会增加 API 调用和数据库存储。建议根据服务器数量和网络状况选择合适的间隔。\n\n支持的系统：Ubuntu \u002F Debian \u002F CentOS \u002F RHEL \u002F Fedora \u002F Rocky \u002F AlmaLinux\n\n### 卸载探针\n\n```bash\ncurl -sL https:\u002F\u002F你的项目.你的子域.workers.dev\u002Finstall.sh | bash -s uninstall\n```\n\n## 📊 使用说明\n\n### 前台大盘\n\n访问 `https:\u002F\u002F你的项目.你的子域.workers.dev\u002F` 查看：\n\n- **卡片视图**：服务器状态概览（含实时网速和本月流量）\n- **表格视图**：详细数据列表（含本月累计流量）\n- **地图视图**：全球服务器分布\n- **过滤器**：按国家筛选服务器\n\n### 服务器详情\n\n点击任意服务器卡片进入详情页：\n\n- 实时 CPU\u002F内存\u002F磁盘\u002F网络\n- 1\u002F3\u002F6\u002F12\u002F24 小时历史趋势图\n- 鼠标悬停查看具体时间点的数值\n- 国内三大运营商延迟追踪\n\n### 主题切换\n\n管理后台支持 2 种主题：\n\n1. 默认黑色终端\n2. 白色终端\n3. 完全自定义 CSS\n\n### 拖拽排序\n\n在管理后台的服务器列表中，可以通过拖拽调整服务器的显示顺序：\n\n1. 进入管理后台 `\u002Fadmin`\n2. 找到服务器列表最左侧的 `⋮⋮` 拖拽手柄\n3. 按住拖拽手柄上下拖动调整顺序\n4. 松开鼠标后自动保存排序\n5. 首页会按此排序显示服务器\n\n> **分组排序**：分组的顺序由该分组内第一个出现的服务器位置决定。\n\n### 服务器隐藏\n\n可以将特定服务器设置为对非登录用户隐藏：\n\n1. 进入管理后台 `\u002Fadmin`\n2. 点击服务器行右侧的 **✏️ 编辑** 按钮\n3. 勾选 **Hide from Public** 选项\n4. 点击 **保存**\n\n> **隐藏效果**：\n> - 非登录状态下，首页不显示该服务器\n> - 非登录状态下，直接访问该服务器详情页返回 404\n> - 非登录状态下，所有相关 API 接口也无法访问该服务器数据\n> - 登录管理员后可正常查看所有服务器\n\n## 🔔 离线告警配置\n\n在管理后台 → 全局设置中配置：\n\n**Telegram 告警：**\n\n1. 创建 Telegram Bot（通过 [@BotFather](https:\u002F\u002Ft.me\u002FBotFather)）\n2. 获取 Bot Token\n3. 获取 Chat ID（通过 [@userinfobot](https:\u002F\u002Ft.me\u002Fuserinfobot)）\n4. 填入后台设置并开启\n\n**企业微信告警：**\n\n1. 创建群机器人，获取 Webhook URL\n2. 填入 Bot Token 字段\n3. Chat ID 留空\n\n## 📸 界面预览\n\n\u003Cimg width=\"1903\" height=\"1341\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F77344b37-c7ce-4bff-b820-cbd0b4b26579\" \u002F>\n\u003Cimg width=\"1907\" height=\"683\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F48cf2f27-66d2-4b39-a5d3-ea9c5d5bb908\" \u002F>\n\u003Cimg width=\"1788\" height=\"876\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F658e68e9-f858-408b-a603-537e55625701\" \u002F>\n\u003Cimg width=\"1788\" height=\"1724\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Ff2c1fc38-ecd9-48be-8fea-fbb5ff3aad51\" \u002F>\n\u003Cimg width=\"1788\" height=\"1126\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fe28da6fb-915b-4417-a25c-faa7b3b11656\" \u002F>\n\u003Cimg width=\"1788\" height=\"1480\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F4069d509-6ac9-4fa1-ade2-8eac43dbf6db\" \u002F>\n\u003Cimg width=\"1875\" height=\"723\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fa806179f-8cb0-4713-b774-2741cb094a6f\" \u002F>\n\n白色主题\n\n\u003Cimg width=\"1788\" height=\"1268\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fa229d14e-6099-4863-ad3d-3202fe2add58\" \u002F>\n\u003Cimg width=\"1904\" height=\"671\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F48767b1b-f85e-48af-bd4f-cbe61c01d020\" \u002F>\n\u003Cimg width=\"1788\" height=\"876\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fd8abbeb3-bb66-4be6-9d56-5cb42a579950\" \u002F>\n\u003Cimg width=\"1788\" height=\"1126\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F9b4b9f4a-0e62-4ae6-87dc-e8c5a5306975\" \u002F>\n\u003Cimg width=\"1904\" height=\"788\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fd0d53cf2-1d3d-4463-8b11-b92ca4eef8a3\" \u002F>\n\u003Cimg width=\"1903\" height=\"705\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Facc08244-c0f1-438b-88cc-871879be09b7\" \u002F>\n\n\n## 🛠️ 本地开发\n\n```bash\n# 安装依赖\nnpm install\n   ```\n# 创建 D1 数据库\nnpx wrangler d1 create server-monitor-db\n\n# 更新 wrangler.toml 中的 database_id\n\n# 前端依赖\nnpm run build:frontend\n\n# 启动本地开发服务器\nnpm run dev\n\n# 导入测试数据\n见 \u002Ftest\u002FREADME.md 中的说明\n\n# 部署\nnpm run deploy\n```\n\n## 📝 环境变量说明\n\n| 变量               | 说明                                     | 必需 |\n| ---------------- | -------------------------------------- | -- |\n| `API_SECRET`     | 探针认证密钥 + 管理后台密码                        | ✅  |\n| `D1_DATABASE_ID` | Cloudflare D1 数据库 ID                   | ✅  |\n| `CF_API_TOKEN`   | Cloudflare API Token（仅 GitHub Actions） | ✅  |\n| `CF_ACCOUNT_ID`  | Cloudflare 账户 ID（仅 GitHub Actions）     | ✅  |\n\n## ❓ 常见问题\n\n**Q: 部署后访问 404？**\nA: 确认 `wrangler.toml` 中的 `database_id` 已正确配置，且 D1 数据库已创建。\n\n**Q: 探针安装后不显示数据？**\nA: 检查服务器是否能访问 Worker URL，查看探针日志：`journalctl -u cf-probe -f`\n\n**Q: 如何更换 API\\_SECRET？**\nA: 更新 GitHub Secrets 中的 `API_SECRET`，重新部署，并在所有服务器上重新安装探针。\n\n**Q: D1 数据库免费额度够用吗？**\nA: Cloudflare D1 免费版提供 5GB 存储和 50 亿次读取\u002F月，足以支持大量服务器监控。\n\n## 📄 许可证\n\nMIT License\n\n## 🙏 致谢\n\n- [CF-Server-Monitor-Pro](https:\u002F\u002Fgithub.com\u002Fa63414262\u002FCF-Server-Monitor-Pro)\n- [Cloudflare Workers](https:\u002F\u002Fworkers.cloudflare.com\u002F)\n- [Chart.js](https:\u002F\u002Fwww.chartjs.org\u002F)\n- [Leaflet](https:\u002F\u002Fleafletjs.com\u002F)\n\n","CF-Server-Monitor 是一个基于 Cloudflare Workers 和 D1 数据库的多服务器监控系统，能够实时监测 CPU、内存、磁盘等关键指标，并支持历史数据查看、延迟追踪及全球地图展示。其核心功能包括实时监控、历史图表、全球地图可视化、离线告警（通过 Telegram 和企业微信）、自定义主题和响应式设计。此外，项目还提供了自动部署脚本和拖拽排序等便捷管理工具。适用于需要对多台服务器进行集中管理和监控的企业或个人开发者，尤其适合那些希望利用 Cloudflare 生态优势构建高效监控解决方案的用户。",2,"2026-06-11 04:07:44","CREATED_QUERY"]