把 VPS 探针面板放到 Cloudflare Workers:CF-Server-Monitor 部署记录
我手上的 VPS 不算多,但分散在不同商家和地区,偶尔还是要看一下在线状态、负载和流量。传统探针一般需要单独准备一台主控服务器,有些还把 WebSSH、命令执行和文件管理全塞进面板里。功能很多,权限也很大。
最近看到 CF-Server-Monitor,它把面板和数据接口放在 Cloudflare Workers 上,监控端只需要在 VPS 上运行一段脚本。客户端负责采集和上报数据,没有 WebSSH,也不能从面板向 VPS 下发任意命令。对我来说,这种边界反而更合适:探针就老老实实做探针。
它和普通探针有什么不同
CF-Server-Monitor 的服务端主要用了 Cloudflare Workers、D1 和 Durable Objects。自己不需要再准备一台 VPS 跑面板,部署完成后直接访问 Workers 地址即可。
客户端会定时上报这些信息:
- CPU、内存、Swap、磁盘和系统负载
- 上传、下载速度以及月度流量
- 系统、架构、CPU 和 GPU 信息
- 进程数、TCP/UDP 连接数
- IPv4、IPv6 地址
- 到电信、联通、移动等测试节点的延迟和丢包
这里所说的“没有远程控制”,是指它没有远程 Shell、WebSSH 和任意命令执行。新版面板可以调整上报间隔、Ping 模式、流量重置日等有限参数,但这些都是客户端预先定义好的配置项,不是把一段命令传过去执行。
Fork 后部署到 Cloudflare
我用的是项目推荐的 GitHub 部署方式。先打开项目仓库:
https://github.com/huilang-me/CF-Server-Monitor
Fork 到自己的 GitHub 账号,然后进入 Cloudflare 控制台:
- 打开 Workers & Pages。
- 选择 Create application。
- 选择 Continue with GitHub,连接刚才 Fork 的仓库。
- 项目名可以填写
cf-server-monitor。 - Build command 填写
npm run build:frontend。 - Deploy command 填写
npx wrangler deploy --keep-vars。
项目的 wrangler.toml 已经声明了 D1 绑定 DB 和 Durable Object 绑定 METRICS_BROADCASTER。部署前要确认 Cloudflare 账号里已经创建 D1 数据库,并把实际的数据库 ID 填入配置;数据库名称默认是 server-monitor-db。Durable Object 则由 Wrangler 按配置部署。
第一次部署后,再到 Worker 的 Settings → Variables and Secrets 添加:
API_SECRET=换成一段足够长的随机字符串API_SECRET 是必填项,用于探针认证,同时也是后台的默认密码。后台默认用户名是 admin,也可以再增加:
API_USER_NAME=你自己的后台用户名配置保存后重新部署一次,然后访问:
https://你的项目.你的子域.workers.dev/admin能正常进入后台,服务端就算搭好了。如果国内网络访问默认的 workers.dev 不稳定,可以再给 Worker 绑定自己的域名。
给 VPS 安装客户端
先在后台添加一台服务器,面板会为它生成 SERVER_ID、密钥和对应的安装命令。Linux 使用 systemd 时,命令大致如下:
curl -sL https://你的项目.你的子域.workers.dev/install.sh | bash -s install \ -id=<SERVER_ID> \ -secret=<SECRET> \ -url=<WORKER_URL>执行完成后,脚本会安装并启动 systemd 服务。过一会刷新面板,就能看到这台 VPS 的状态。
项目也提供了 Alpine、OpenWrt、macOS 和 Windows 版本的安装脚本。实际使用时不要自己照抄上面的占位符,直接复制后台为对应服务器生成的命令,少填错几个参数。
虽然安装很方便,但 curl | bash 本质上是下载脚本后直接执行。我会先打开自己 Worker 返回的 install.sh 看一遍,再到 VPS 上运行。另外,安装命令里带有服务器密钥,不要贴到公开日志、聊天记录或工单里。
使用时需要注意的地方
这个项目目前默认每 60 秒上报一次。间隔越短,Workers 请求和 D1 写入越多,没必要为了面板上的曲线更丝滑,把免费额度白白消耗掉。
历史数据目前只保留 7 天,它更适合看 VPS 是否在线、当前负载和近期流量,不是长期监控和日志分析系统。
还有一点我比较认同:探针默认不会自动升级。服务端更新可以同步 Fork 后重新部署,VPS 上的客户端则需要自己重新执行安装或升级命令。这样麻烦一点,但至少不会在我不知情的时候自动替换服务器上正在运行的脚本。
CF-Server-Monitor 不是一个 VPS 主控面板,它做的事情很明确:客户端采集状态,单向上报给放在 Cloudflare 上的面板。没有远程终端,也没有顺手再塞进一堆管理功能。对于只是想看几台机器是否正常的人来说,这样已经够用了。
最后放一下我自己的服务器探针页面:status.qiui.org。陆陆续续养了不少小鸡,放在一个页面里看着还挺有成就感。
以上。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!




















