📦huilang-me / CF-Server-Monitor
← 返回首页
一个基于 Cloudflare Workers + D1 + Durable Objects 的免费多服务器监控探针系统,支持实时监控、离线告警,到期通知,历史数据查看、延迟追踪、地图展示等功能。兼容主流Linux系统,Alpine Linux,OpenWrt,macOS,群晖 DSM、飞牛 fnOS、Windows系统。
⚖️ MIT🌐 demo.huilang.me📅 创建于 2026-05-26🔄 更新于 2026-10-29
🔗 GitHub JavaScript

📄 仓库 README

在 GitHub 查看 ↗
来自 GitHub 仓库自述文件 · 版权归原作者所有
# CF-Server-Monitor 基于 Cloudflare Workers、D1 和 Durable Objects 的轻量级多服务器监控面板。

简体中文 | English

[![Workers](https://img.shields.io/badge/Workers-2.8.7%20Beta5-f38020?style=flat-square&logo=cloudflare&logoColor=white)](version.json) [![GitHub Stars](https://img.shields.io/github/stars/huilang-me/CF-Server-Monitor?style=flat-square&logo=github)](https://github.com/huilang-me/CF-Server-Monitor/stargazers) [![GitHub Forks](https://img.shields.io/github/forks/huilang-me/CF-Server-Monitor?style=flat-square&logo=github)](https://github.com/huilang-me/CF-Server-Monitor/forks) [![License](https://img.shields.io/badge/License-MIT-16a34a?style=flat-square)](#许可证) [在线演示](https://demo.huilang.me/) · [API 文档](https://github.com/huilang-me/CF-Server-Monitor/blob/HEAD/API.md) · [Go 探针文档](https://github.com/huilang-me/cfsm-agent) · [主题开发](https://github.com/huilang-me/CF-Server-Monitor/blob/HEAD/theme-develop.md) · [主题开发 AI 提示词](https://github.com/huilang-me/CF-Server-Monitor/blob/HEAD/theme-ai-prompt.md)

项目简介

CF-Server-Monitor 是一个部署在 Cloudflare Workers 上的服务器监控系统。服务器端安装 Agent 后会单向上报指标到 Worker,数据写入 D1,并通过 Durable Objects + WebSocket 推送到前端,实现免费托管、低维护的实时监控。

支持主流 Linux 发行版、Alpine Linux、OpenWrt、macOS、群晖 DSM、飞牛 fnOS、Windows 等系统,并提供 Docker 镜像部署方式。

高安全性:Agent 仅单向上报指标,不提供 WebSSH、远程命令下发或主控通道;支持非 root 运行,可降低监控组件被利用后的影响范围。

目录

对比优势

相比传统主控式探针,CF-Server-Monitor 更适合低成本、低维护和安全优先的监控场景:

  • 免费托管:面板、API、数据库和实时推送都运行在 Cloudflare 上,按免费额度友好设计;默认 60 秒上报间隔可支持约 60 台服务器,改为 120 秒后理论上可翻倍。
  • 单向上报更安全:没有 WebSSH、没有远程命令下发、没有主控通道;Agent 只向 Worker 上报指标。
  • 功能覆盖完整:实时指标、历史图表、地图展示、离线通知、资源告警、到期提醒、主题商店、多语言和移动端适配都已内置。
  • 参数动态下发:后台可修改 Ping 节点、采集间隔、HTTP 上报间隔、WSS 上报间隔、统计网卡、流量重置日、上下行流量校正等参数,Agent 后续自动拉取并生效;Worker 地址、API_SECRET 和自动更新开关变更需要重新执行安装命令。
  • 支持非 root 安装:支持 systemd --user 的 Linux 可使用普通用户安装,探针文件写入 ~/.cf-probe/。
  • 上报时间自动校准:Go Agent 会使用 Worker 响应中的 HTTP Date 头校正样本时间和 boot_time,降低服务器本地时间错误对历史图表的影响;不会修改系统时间。

特性

模块 能力
实时监控 CPU、GPU、内存、交换分区、磁盘、磁盘 IO、网络、连接数、进程数、负载、运行时间
历史数据 7 天历史图表、长时段采样、实时网速、月流量统计与校正
网络质量 电信、联通、移动、BGP 节点延迟与丢包率追踪;三网详情开启时首页从 D1 最近 2 小时抽样最多 20 个真实点并缓存 5 分钟
多视图前台 条形图、环形图、表格、地图视图,支持桌面端和移动端
管理后台 服务器增删改查、拖拽排序、隐藏服务器、导入导出、批量删除、刷新服务器列表缓存、数据库维护
多系统 Agent 主流 Linux、Alpine Linux、OpenWrt、群晖 DSM、飞牛 fnOS、FreeBSD、macOS、Windows,支持 Docker 镜像部署;默认 Go 版本,保留 Shell/PowerShell 版本
实时推送 Durable Objects + WebSocket,Agent 上报后前端即时刷新
告警通知 离线告警、恢复通知、到期提醒、资源负载告警
多语言 前端内置中文、英文和西班牙语(拉美)切换;通知消息支持中文、英文和西班牙语;文档提供中文与英文入口
多站点 支持 GitHub Pages 静态前台和多个 Worker API 聚合展示
小组件 提供 iOS Scriptable 小组件脚本,适合移动端快速查看
安全控制 API Secret、管理员密码、JWT、Turnstile、CORS、CSP 白名单
主题生态 内置主题、Mikus 模式、主题商店、第三方主题反代与预览
额度友好 按月表轮换、历史查询采样、缓存与限流设计,适配 Cloudflare 免费额度

系统架构

flowchart LR
  Agent["Server Agent<br/>Go / Shell / PowerShell"] -->|"POST /update"| Worker["Cloudflare Worker"]
  Worker --> D1["Cloudflare D1<br/>servers / settings / history"]
  Worker <--> DO["Durable Object<br/>WebSocket broadcast"]
  Worker --> Assets["Vue Dashboard<br/>Admin Panel"]
  Browser["Browser / Mobile / Widget"] <--> Worker

核心数据流:

  1. 在管理后台添加服务器,复制安装命令。
  2. 目标服务器安装 Agent,按上报间隔向 Worker 发送指标。
  3. Worker 校验 API_SECRET,写入 D1,并通过 Durable Object 广播实时数据。
  4. 前台大盘、详情页、管理后台和 iOS 小组件读取同一套 API。

近期变化:

  • 2.8.7:优化定时任务逻辑,降低CPU负载,避免超出免费额度限制;/update 增加 512KB 请求体上限,超限直接返回 413;服务器被删除后,其 Agent 的 WSS 连接会在 2 分钟内自动断开;WSS 上报增加帧大小校验,D1 抖动时不再中断已认证会话;批量样本只保留最新 300 条。新增服务端自动发现机制自动绑定服务器ID。新增自定义UA;
  • 2.8.6:WSS前端订阅采用250毫秒批量上报,新增SMTP通知渠道,新增月度流量阈值告警,移除旧版数据库兼容性,新增Docker安装方式。
  • 2.8.5:支持自定义 Ping 节点名称;增加ICMP模式;优化WSS响应逻辑;API接口优化;原皮前端优化;新增4个ping节点。
  • 2.8.4:新增 Agent WSS 上报和 WSS 开启时段,提升实时数据推送及时性,并允许非目标时段自动改用 POST 降低 Do 时长消耗;该能力要求 Agent 升级到 v1.0.10+。新增账户Do用量展示,优化无前端订阅时的 Do 实时广播请求,降低空闲额度消耗。通知设置新增自定义 Webhook 渠道, 新增前端wss超时配置。
  • 2.8.3:新增磁盘 IO 统计,默认 Agent 切换为 Go 版本,新增服务器延迟与丢包率实时窗口。
  • 2.8.2:引入 Go Agent 支持。
  • 2.8.1:优化长时间历史查询 D1 读行,增加资源负载通知和主题商店接口优化。
  • 2.8.0:新增主题商店,支持一键切换第三方主题。
  • 2.7.x:重构数据库写入、月表轮换、通知模块、安全策略、服务器计费字段、导入导出和多项后台能力。

Go Agent 的完整更新记录见 cfsm-agent releases。

快速部署

前置要求

  • Cloudflare 账户
  • GitHub 账户
  • 一个足够复杂的 API_SECRET,同时作为 Agent 上报密钥和初始后台密码

建议优先使用「Cloudflare Workers 连接 GitHub 仓库」或「GitHub Actions 自动部署」。一键部署适合快速体验,但后续同步更新不够方便。

方式一:Cloudflare Workers 连接 GitHub 仓库

这是推荐方式,适合希望通过 Cloudflare 控制台自动构建和重新部署的用户。

  1. Fork 本仓库到自己的 GitHub 账号。
  2. 进入 Cloudflare Dashboard,打开 Workers & Pages。
  3. 创建 Worker,并选择从 GitHub 仓库导入本项目。
  4. 构建命令填写 npm run build:frontend。
  5. 部署命令使用 npx wrangler deploy。
  6. 部署完成后,在 Worker 的 Variables and Secrets 中添加 API_SECRET。

图文教程:https://huilang.me/cf-server-monitor-setup/

方式二:GitHub Actions 自动部署

适合希望把部署流程完全托管在 GitHub Actions 的用户。

  1. Fork 本仓库。
  2. 在 Cloudflare 创建 D1 数据库,名称建议为 server-monitor-db。
  3. 复制 Cloudflare Account ID。
  4. 创建 Cloudflare API Token,至少需要 Workers 编辑和 D1 部署相关权限。
  5. 在 Fork 后的 GitHub 仓库中进入 Settings -> Secrets and variables -> Actions。
  6. 添加以下 Secrets。
Secret 必填 说明
CF_API_TOKEN 是 Cloudflare API Token
CF_ACCOUNT_ID 是 Cloudflare Account ID
D1_DATABASE_ID 是 D1 数据库 ID
API_SECRET 是 Agent 上报密钥和初始后台密码
CORS_ALLOWED_ORIGINS 否 允许跨域访问 API 的来源,多个用英文逗号分隔

推送到 main 分支会自动部署,也可以在 Actions 页面手动运行 Deploy to Cloudflare Workers 工作流。

方式三:一键部署

Deploy to Cloudflare Workers

部署时请确认:

  • Build command 使用 npm run build:frontend
  • API_SECRET 改为随机强密码,不要继续使用默认值
  • 登录后台后尽快修改管理员用户名和密码

一键部署不方便长期同步上游更新,正式使用更建议迁移到方式一或方式二。

首次使用

登录后台

部署成功后访问:

https://你的 Worker 域名/admin#/admin

默认凭据:

项目 默认值
用户名 admin
密码 API_SECRET

登录后建议立即修改后台用户名和密码。后台登录密码可以和 API_SECRET 分离;服务器 Agent 上报仍使用 Cloudflare 环境变量中的 API_SECRET。

添加服务器

  1. 进入 /admin#/admin。
  2. 在服务器管理中填写服务器名称。
  3. 点击添加服务器。
  4. 点击复制按钮,选择目标系统和 Agent 版本。
  5. 在目标服务器上执行复制出的安装命令。

如果服务器数量较多,也可以在「设置 → 站点设置」中开启 自动发现:安装 Agent 时不传 -id,首次上报时服务端会自动创建服务器,名称取 -name 参数,未传则使用请求的连接来源 IP(CF-Connecting-IP)。若已存在同名服务器则不会新建也不会复用,服务端直接拒绝本次上报(返回 404),Agent 输出提示后直接退出。新建的服务器最多延迟约 2 分钟出现在首页;建号失败、或服务端未开启自动发现(空 id 上报只收到普通 404)时,同样只输出一条提示后退出,不重试、不发送通知,也不留下任何标记文件。该开关默认关闭。

自动发现开关保存后,后台「站点设置 → 自动发现」旁会出现复制按钮,可直接复制下面这种不传 -id 的 Linux 安装命令。

不传 -id 时的安装命令(Linux、OpenWrt、Synology DSM、FreeBSD、macOS):

# 名称取本机公网 IP
curl -fsSL https://raw.githubusercontent.com/huilang-me/cfsm-agent/main/install.sh | sh -s -- install -secret=SECRET -url=WORKER_URL

# 指定名称
curl -fsSL https://raw.githubusercontent.com/huilang-me/cfsm-agent/main/install.sh | sh -s -- install -secret=SECRET -url=WORKER_URL -name=hk-1

Windows(管理员 PowerShell),同样去掉 -id:

$script = "$env:TEMP\install-cf-probe.ps1"
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/huilang-me/cfsm-agent/main/install.ps1" -OutFile $script -UseBasicParsing
PowerShell -ExecutionPolicy Bypass -File $script install -secret=SECRET -url=WORKER_URL -name=hk-1

Agent 参数与安全建议

V2.8.3 起默认使用独立项目 cfsm-agent,安装后服务名为 cf-probe。新增服务器后建议直接从管理后台复制安装命令,后台会按目标系统、服务器 ID、Worker 地址和当前参数生成完整命令。

完整安装路径、日志查看、状态检查和升级行为见 https://github.com/huilang-me/cfsm-agent。

常用参数

参数 说明 默认值
-id 服务器唯一 ID 必填(开启自动发现时可省略)
-name 自动建号时的服务器名称 连接来源 IP(CF-Connecting-IP)
-secret Agent 上报密钥,需要等于 API_SECRET 必填
-url Worker 上报地址 必填
-collect_interval 本机采集间隔;0 表示不额外采样 0
-interval 上报间隔,单位秒 60
-ct / -cu / -cm / -bd 自定义网络质量测试节点,支持 host[:port] 内置节点
-reset_day 月流量重置日 1
-rx_correction 下行月流量校正,单位 GB 空
-tx_correction 上行月流量校正,单位 GB 空

-collect_interval 控制本机额外采集频率,-interval 控制上报频率。上报越频繁,Workers 请求和 D1 写入越多。

非 root 安装(推荐)

支持 systemd --user 的 Linux 环境建议使用非 root 安装。后台安装命令可选择“当前用户”或“专用 cfsm 用户”:当前用户会直接执行安装,专用用户则会自动创建并切换到 cfsm。文件保存在该用户的 ~/.cf-probe/。

普通用户安装后,如需退出登录仍保持服务运行,请由 root 执行:

loginctl enable-linger 用户名

卸载时请选择原来的安装用户。OpenWrt、Alpine/OpenRC、Synology DSM 等不支持 systemd --user 的环境,请使用对应系统命令。

Docker 部署

后台复制安装命令的目标系统支持选择 Docker,会生成如下容器命令(服务器 ID、Secret、Worker 地址已按当前服务器自动填充,镜像标签默认 latest,可在 Agent 版本栏自定义):

docker run -d --name cf-probe --restart=unless-stopped --network=host \
  -v cf-probe-data:/data \
  -e SERVER_ID=<服务器ID> -e SECRET='<API_SECRET>' -e WORKER_URL=https://<你的后台地址>/update \
  ghcr.io/huilang-me/cfsm-agent:latest

采集间隔、上报间隔、Ping 节点、网卡、流量重置日、上下行校正等运行参数由 Agent 按 SERVER_ID 从后台动态拉取,无需在命令中重复指定;更换镜像标签即回退/升级到指定版本。卸载容器:

docker rm -f cf-probe && docker volume rm cf-probe-data

配置说明

Worker 环境变量

变量 必填 说明
API_SECRET 是 Agent 上报密钥;也是首次登录后台的默认密码
API_BASE 否 前端请求的 Worker API 地址,多个用英文逗号分隔;用于多 Worker 聚合或前后端分离
CORS_ALLOWED_ORIGINS 否 允许跨域访问 API 的来源,多个用英文逗号分隔

GitH

📈 近 7 天 Star 趋势

每日新增 Star(柱)与累计 Star(线)· 数据来自 GitHub

🏆 排名变化趋势

在各榜单中的排名历史(数字越小越靠前)

📋 历史上榜记录

每次快照的详细数据
日期 榜单 排名 周期新增 总 STAR