面板示例:https://vps-monitor.abo-vendor289.workers.dev/
前端:
后台:
VPS端:
这是一个部署在 Cloudflare Workers 上的简单 VPS 监控面板,使用 Cloudflare D1 数据库存储数据。本指南将引导你通过 Cloudflare 网页控制面板 完成部署,无需使用命令行工具。
- 一个 Cloudflare 账户。
你需要一个 D1 数据库来存储面板数据(服务器列表、API 密钥、监控数据等)。
- 登录 Cloudflare 控制面板。
- 在左侧菜单中,找到并点击
存储和数据库。 - 在下拉菜单中,选择
D1 SQL 数据库。 - 点击
创建数据库。 - 为数据库命名(例如
vps-monitor-db),然后点击创建。 - 重要:初始化数据库表
- 数据库创建后,你会看到数据库的概览页面。点击
控制台标签页。 - 复制下面的 SQL 命令,粘贴到控制台的输入框中,然后点击
执行:
- 数据库创建后,你会看到数据库的概览页面。点击
CREATE TABLE IF NOT EXISTS admin_credentials (
username TEXT PRIMARY KEY,
password_hash TEXT NOT NULL,
created_at INTEGER NOT NULL,
last_login INTEGER,
failed_attempts INTEGER DEFAULT 0,
locked_until INTEGER DEFAULT NULL,
must_change_password INTEGER DEFAULT 0,
password_changed_at INTEGER DEFAULT NULL
);
CREATE TABLE IF NOT EXISTS servers (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
api_key TEXT NOT NULL UNIQUE,
created_at INTEGER NOT NULL,
sort_order INTEGER,
last_notified_down_at INTEGER DEFAULT NULL
);
CREATE TABLE IF NOT EXISTS metrics (
server_id TEXT PRIMARY KEY,
timestamp INTEGER,
cpu TEXT,
memory TEXT,
disk TEXT,
network TEXT,
uptime INTEGER,
FOREIGN KEY(server_id) REFERENCES servers(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS monitored_sites (
id TEXT PRIMARY KEY,
url TEXT NOT NULL UNIQUE,
name TEXT,
added_at INTEGER NOT NULL,
last_checked INTEGER,
last_status TEXT DEFAULT 'PENDING',
last_status_code INTEGER,
last_response_time_ms INTEGER,
sort_order INTEGER,
last_notified_down_at INTEGER DEFAULT NULL
);
CREATE TABLE IF NOT EXISTS site_status_history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
site_id TEXT NOT NULL,
timestamp INTEGER NOT NULL,
status TEXT NOT NULL,
status_code INTEGER,
response_time_ms INTEGER,
FOREIGN KEY(site_id) REFERENCES monitored_sites(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_site_status_history_site_id_timestamp ON site_status_history (site_id, timestamp DESC);
CREATE TABLE IF NOT EXISTS telegram_config (
id INTEGER PRIMARY KEY CHECK (id = 1),
bot_token TEXT,
chat_id TEXT,
enable_notifications INTEGER DEFAULT 0,
updated_at INTEGER
);
INSERT OR IGNORE INTO telegram_config (id, bot_token, chat_id, enable_notifications, updated_at) VALUES (1, NULL, NULL, 0, NULL);
CREATE TABLE IF NOT EXISTS app_config (
key TEXT PRIMARY KEY,
value TEXT
);
INSERT OR IGNORE INTO app_config (key, value) VALUES ('vps_report_interval_seconds', '60');
- 正常会看到
此查询已成功执行。响应时间 1090 毫秒,查询时间 0.24 毫秒,现在你的数据库表结构已经准备好了。
接下来,创建 Worker 并将代码部署上去。
- 在左侧菜单中,点击
计算(Workers),选择Workers & Pages。 - 在概览页面,点击
创建。 - 选择
Start with Hello World!点击开始使用。 - 为你的 Worker 命名(例如
vps-monitor-worker),确保名称可用。 - 点击
部署。 - 部署完成后,点击
编辑代码进入 Worker 编辑器。 - 删除编辑器中现有的所有代码。
- 打开本仓库的
worker.js文件,复制其全部内容。 - 将复制的代码粘贴到 Cloudflare Worker 编辑器中。
- 点击编辑器右上角的
部署按钮。
Worker 需要访问你之前创建的 D1 数据库。
- 在 Worker 的管理页面(编辑代码页面上方有 Worker 名称,点击它可以返回管理页面),选择
绑定标签页。 - 选择
D1数据库。 - 在
变量名称处输入DB(必须大写)。 - 在
D1 数据库下拉菜单中,选择你之前创建的数据库 (例如vps-monitor-db)。 - 点击
部署。
在 设置 → 变量和机密 中添加以下环境变量,以增加安全性:
- 变量名:
JWT_SECRET,类型:密钥, 值:任意30位左右的随机字符串 - 添加完保存并部署
- 在 Worker 的管理页面选择
设置标签页。 - 在设置页面中,选择
触发事件子菜单。 - 点击
添加,选择Cron触发器。 - 选择
计划,执行 Worker 的频率选择小时,下面的框填入1(即每整点检测一次网站)。 - 点击
添加。
部署和绑定完成后,你的监控面板应该可以通过 Worker 的 URL 访问了。
- 在设置页面你会看到一个
.workers.dev的 URL,例如vps-monitor.abo-vendor289.workers.dev。 - 在浏览器中打开这个 URL,你应该能看到监控面板的前端界面。
- 访问你的 Worker URL。
- 点击页面右上角的
登录或直接访问/login路径 (例如https://vps-monitor.abo-vendor289.workers.dev/login)。 - 使用凭据登录:
- 用户名:
admin - 密码:
monitor2025!
- 用户名:
- 登录后,立即修改密码!!!
- 登录后台后,你应该会看到管理界面。
- 找到添加服务器的选项。
- 输入服务器的名称和可选的描述。
- 点击
保存。 - 面板会自动生成一个唯一的
服务器 ID和API 密钥。请记下这个 服务器ID 和 API 密钥,部署 Agent 时需要用到。
Agent 是一个需要在你的 VPS 上运行的脚本,用于收集状态信息并发送回面板。
有两种方式安装Agent脚本:
第二种是:下载脚本并运行:
wget https://raw.githubusercontent.com/kadidalax/cf-vps-monitor/main/cf-vps-monitor.sh -O cf-vps-monitor.sh && chmod +x cf-vps-monitor.sh && ./cf-vps-monitor.sh
或者下载脚本并运行:
curl -O https://raw.githubusercontent.com/kadidalax/cf-vps-monitor/main/cf-vps-monitor.sh && chmod +x cf-vps-monitor.sh && ./cf-vps-monitor.sh
- 安装需要
服务器IDAPI密钥和你的worker网址 - 可以在后台点击
查看密钥来获取上述三个参数 - 按照提示输入安装完成后,Agent 会开始定期向你的面板发送数据。你应该能在面板上看到对应服务器的状态更新。
安装脚本本身也提供了管理功能:
- 安装服务:
- 卸载服务:
- 查看状态:
- 查看日志:
- 停止服务:
- 重启服务:
- 修改配置:
- 登录后台后,你应该会看到管理界面。
- 点击
添加监控网站。 - 输入
网站名称(可选)和网站URL 如(https://example.com)。 - 点击
保存。
- BotFather创建bot并获取
Bot Token。 @userinfobot获取自己的ID。- 将上述两项分别填入。
- 启用通知,点击
保存Telegram设置。
- Worker 和 D1 每日配额: Cloudflare Worker 和 D1 免费额度有限。详情请查阅 Cloudflare 文档。
- 安全性: 默认密码非常不安全 ,请务必在首次登录后修改。Agent 使用的 API 密钥也应妥善保管。
- 错误处理: 如果面板或 Agent 遇到问题,可以检查 Worker 的日志(在 Cloudflare 控制面板 Worker 页面)和 Agent 的日志。
- 以上所有内容和代码均为AI生成,出现问题请直接拿着代码找AI吧。




