根据 CF-Server-Monitor 的官方仓库,这是一个基于 Cloudflare Workers、D1 和 Durable Objects 的免费、轻量级多服务器监控探针系统。以下是基于其文档整理的完整部署与使用教程。

🧭 核心特点与架构

CF-Server-Monitor 与传统的“主控-被控”式监控系统(如 ServerStatus)不同,其核心优势在于免费托管、单向上报和高安全性

核心架构

  1. 服务端(面板):部署在 Cloudflare Workers 上,使用 D1 数据库 存储历史数据,并通过 Durable Objects + WebSocket 实现实时数据推送。
  2. 客户端(Agent):安装在被监控的服务器上(支持 Linux、Windows、macOS、OpenWrt 等)。Agent 只单向上报 CPU、内存、磁盘、网络流量等指标,不提供 WebSSH、远程命令下发等控制功能,降低了安全风险。
  3. 前端:一个 Vue 3 构建的响应式仪表盘,支持实时数据、历史图表、地图视图和移动端适配。

对比传统探针

  • 成本:充分利用 Cloudflare 免费额度(Workers 每天 10 万次请求,D1 数据库免费额度)。
  • 安全:单向数据上报,没有主动控制通道,Agent 可非 root 运行。
  • 维护:无需自己维护服务器和数据库,主要维护 Worker 脚本即可。

📦 部署步骤

部署主要分为服务端(Cloudflare)和客户端(被监控服务器)两部分。

1. 前置准备

  • 一个 Cloudflare 账户
  • 一个 GitHub 账户(推荐用于自动部署)。
  • 生成一个足够复杂的 API_SECRET(强密码),它将作为 Agent 上报的密钥和首次登录后台的密码。

2. 部署服务端(推荐方式:GitHub Actions)

这是最方便、也便于后续更新的方式。

  1. Fork 仓库:将本项目 Fork 到你的 GitHub 账户。
  2. 创建 Cloudflare D1 数据库
    • 进入 Cloudflare Dashboard,进入“Workers & Pages” -> “D1”。
    • 创建一个新的 D1 数据库,名称建议为 server-monitor-db
  3. 配置 GitHub Secrets:在你 Fork 的仓库中,进入 Settings -> Secrets and variables -> Actions,添加以下 Secrets:
    • CF_API_TOKEN:你的 Cloudflare API Token(需具备 Workers 和 D1 编辑权限)。
    • CF_ACCOUNT_ID:你的 Cloudflare 账户 ID。
    • D1_DATABASE_ID:你刚才创建的 D1 数据库 ID。
    • API_SECRET:你设置的强密码。
  4. 触发部署:将代码推送到 main 分支,或手动在 Actions 页面运行 Deploy to Cloudflare Workers 工作流。首次部署会自动完成数据库初始化。

其他部署方式

  • Cloudflare Workers 连接 GitHub:在 Cloudflare 面板中选择从 GitHub 仓库导入并自动构建。
  • 一键部署:使用 Deploy with Workers 按钮快速体验,但不易后续更新。

3. 首次登录与配置

  1. 部署成功后,访问你的 Worker 域名(如 https://你的项目名.workers.dev)。
  2. 点击右上角“管理后台”,或直接访问 /admin#/admin
  3. 默认用户名 admin,密码为你在 API_SECRET 中设置的值。登录后请立即修改后台密码
  4. 在管理后台的“全局设置”中,你可以配置站点标题、背景图、通知渠道(Telegram、企业微信等)、监控阈值等。

4. 添加被监控服务器

  1. 在管理后台中,点击“添加服务器”,填写一个名称。
  2. 添加后,点击服务器列表右侧的“复制安装命令”按钮。
  3. 选择目标服务器的系统和 Agent 版本(默认推荐 Go 版本)。
  4. 在目标服务器上以 root 或具有 sudo 权限的用户执行该命令。
    • 安全建议:对于支持 systemd --user 的 Linux,建议使用非 root 用户安装,命令会有所不同。可参考文档中的“非 root 安装”部分。
  5. 等待约一分钟,Agent 开始上报数据,前台即可看到新服务器的监控信息。

⚙️ 核心功能与配置

1. 监控与展示

  • 实时仪表盘:显示所有服务器的在线状态、CPU、内存、磁盘、网络流量等。
  • 服务器详情页:查看 7 天历史图表、实时网速、月流量统计、网络质量(延迟/丢包)。
  • 多视图:支持卡片、列表、地图等多种展示方式。

2. 通知与告警

在管理后台的“通知设置”中,你可以配置:

  • 渠道:支持 Telegram、企业微信、飞书、钉钉、Bark、Server酱、自定义 Webhook 等多种渠道。
  • 告警类型
    • 离线告警:服务器离线达到设定阈值后通知,恢复时发送恢复通知。
    • 资源负载告警:CPU、内存、磁盘使用率或上下行速率超过阈值时告警。
    • 到期提醒:服务器到期前 1-7 天每日提醒。

3. Agent 参数(高级)

Agent 安装命令中已包含基本参数。常用可调参数包括:

  • -interval:上报间隔(秒),默认 60。增加间隔可降低 Worker 用量。
  • -reset_day:月流量重置日期,默认 1 号。
  • -ct/-cu/-cm:自定义电信/联通/移动的 Ping 检测节点。

4. 安全与权限

  • API_SECRET:Worker 环境变量,用于 Agent 上报验证。
  • 后台 JWT:管理员登录后签发,用于后续管理请求和 WebSocket 实时连接认证。
  • CORS 与 CSP:可配置允许跨域访问的来源和内容安全策略白名单。
  • Turnstile:可为公开页面启用 Cloudflare Turnstile 人机验证。

🔧 升级与维护

  • 升级 Worker:如果通过 Fork 部署,同步上游仓库(Sync fork)即可触发 Actions 重新部署。

  • 升级 Agent:在目标服务器上直接重新执行新的安装命令即可完成升级,旧配置会被保留。

    1
    2
    # Linux / macOS 通用升级命令
    curl -fsSL https://raw.githubusercontent.com/huilang-me/cfsm-agent/main/install.sh | sh -s -- install
  • 卸载 Agent:执行相同的安装脚本,但参数改为 uninstall

  • 数据库维护:后台提供“数据库管理”功能,可执行升级表结构或清空历史数据。

❓ 常见问题与排查

  • 部署后返回 API_SECRET is required:说明 Worker 未读取到环境变量。需在 Cloudflare Dashboard 的 Worker 设置中,重新添加 API_SECRET 变量并保存,触发重新部署。
  • Agent 没有上报数据:先确认服务器能访问 Worker URL。可临时在 Agent 安装命令后追加 -debug=1 开启调试日志,检查后再移除。
  • 忘记后台密码:直接进入 Cloudflare D1 数据库的 setting 表,将 password 字段修改为旧版 MD5 兼容值 e10adc3949ba59abbe56e057f20f883e(对应密码 123456),再用此密码登录后台重设。
  • 国内服务器无法上报:建议绑定自定义域名到 Worker。如无法绑定,可尝试通过修改 /etc/hosts 指向可用的 Cloudflare CDN IP。

总结

CF-Server-Monitor 是一个利用 Cloudflare 生态构建的零成本、高安全性监控解决方案。部署的核心是通过 GitHub Actions 或 Cloudflare 面板将服务端部署到 Workers,然后在各服务器上执行自动生成的安装命令。日常使用中,你可以通过其直观的仪表盘进行监控,并配置多渠道告警。项目对 Cloudflare 免费额度友好,适合个人开发者、小型团队或需要轻量级监控的场景。