适用版本: 前后端分离架构
难度等级: ★★★☆☆(中等)
预计耗时: 30 ~ 60 分钟
官方网站: https://nodeget.com
🔍 什么是 NodeGet?
如果你有多台 VPS,或者跑着几个小项目,大概率遭遇过这样的场景:服务突然挂了,完全不知道是内存爆了、磁盘满了,还是流量打满了——因为根本没有监控。
NodeGet 就是为了解决这个痛点而生的。它是一款由 NodeSeek 社区 开发者团队开源的服务器监控管理工具,使用 Rust 语言编写,定位是"下一代服务器探针"。
但 NodeGet 不只是一个普通探针。用官方的话说:「探针只是其微不足道的功能之一。」它更像是 Nezha 探针 + 服务器管理面板的结合体,塞入了相当多的进阶功能,同时把 Agent 端的资源占用控制到了同类项目的第一梯队。
核心特性
| 特性 | 说明 |
|---|---|
| 🦀 Rust 底层 | 高性能、低占用,Agent 体积与运行时内存均属同类最优水准 |
| 🔌 完全前后端分离 | 后端只提供 API,前端可自由部署到 Cloudflare Pages / GitHub Pages 等静态托管 |
| 🔑 细粒度 Token 权限 | 为公开展示页、Dashboard、API 调用分配不同权限,安全隔离 |
| 🌐 Agent 原生多主控 | 一个 Agent 可同时上报给多个 Server,互不干扰,适合高级玩家 |
| ⚙️ JS Worker 可编程 | 内建 JS 运行时(基于 QuickJS),支持在服务端运行自定义逻辑,扩展性极强 |
| 🗃️ KV 数据存储 | 类 Cloudflare Workers KV 的键值存储系统,支持任意 JSON 数据 |
| 🔒 极致网络安全 | 对外网络请求仅限 Agent↔Server 必要通信,不会向外泄露数据 |
| 💾 数据库可选 | 小规模部署用 SQLite 即可,大规模可接 PostgreSQL |
与同类项目的区别
目前常见的探针项目(如 Nezha、Komari)通常是"前后端一体"——前端和后端跑在同一个服务器进程里,前端访问流量会直接打到你的 VPS 上。
NodeGet 的设计不同:公开展示页面是纯静态前端,独立部署到 CDN(如 Cloudflare Pages),通过 WebSocket 直连后端 API。这样做的好处非常明显:
- 展示页面本身享受全球 CDN 加速,访客体验好
- VPS 只承受 Agent 上报流量,而不是所有访客流量
- 前端和后端完全解耦,可以换主题、换面板而不动后端
适合哪些人?
- 有 1 台或多台 VPS 想集中监控状态的用户
- 想把监控面板做成公开展示页(status page)分享给他人的站长
- 喜欢折腾、希望通过 Worker 和插件扩展功能的进阶玩家
- 对数据隐私有要求、不想把数据托管给第三方平台的用户
如果你目前在用 Nezha 或 Komari,NodeGet 并非要取代它们,完全可以并行运行。
📋 架构概览
用户浏览器
│
▼
Cloudflare Pages(前端 Dashboard)
│ WebSocket (wss://)
▼
Nginx 反向代理(HTTPS 网关)
│ HTTP (127.0.0.1:2211)
▼
NodeGet Server(后端主控,运行于 VPS)
│
▼
NodeGet Agent(各被监控节点)
| 组件 | 部署位置 | 说明 |
|---|---|---|
| Dashboard(前端) | Cloudflare Pages | 免费全球 CDN,无需服务器 |
| Server(后端主控) | 您的 VPS(Ubuntu) | 数据汇聚与存储中心 |
| Agent(探针) | 被监控的各台机器 | 采集并上报监控指标 |
阶段一:在 Cloudflare Pages 部署前端 Dashboard
此阶段无需 VPS,全程在浏览器中操作。
第 1 步:Fork 前端仓库
- 登录您的 GitHub 账号。
- 访问官方仓库:NodeSeekDev/NodeGet-board
- 点击右上角的 Fork → Create fork,将代码复制到您自己的账号下。
第 2 步:创建 Cloudflare Pages 项目
- 登录 Cloudflare 控制台。
- 点击左侧菜单 Workers 和 Pages。
- 点击右上角蓝色 创建 按钮。
- 在顶部务必切换到 Pages 选项卡(默认是 Workers,容易选错)。
- 点击 连接到 Git,授权并选中您刚刚 Fork 的
NodeGet-board仓库,点击 开始设置。
第 3 步:填写构建参数(关键)
| 参数 | 填写值 |
|---|---|
| 框架预设 | Vue |
| 构建命令 | pnpm run build |
| 构建输出目录 | dist |
| 环境变量名 | NODE_VERSION |
| 环境变量值 | 20 |
⚠️ 注意:
NODE_VERSION=20这个环境变量必须填写,否则 Cloudflare 会使用旧版 Node.js 导致编译失败。
第 4 步:部署并记录前端地址
点击 保存并部署,等待 1 ~ 2 分钟编译完成后,Cloudflare 会为您分配一个专属域名,例如:
https://nodeget-board.pages.dev
请将此地址复制保存,后续步骤中会用到。
阶段二:在 VPS 上安装后端 Server
系统要求:Ubuntu 20.04 / 22.04 / 24.04 & Deabin 12 /13 ,已开放 2211 端口(或自定义端口)。
第 1 步:执行一键安装脚本
SSH 登录您的服务器,将下方命令中的域名替换为阶段一获取的 Cloudflare 前端地址,然后执行:
dashboard_url=https://nodeget-board.pages.dev \
bash <(curl -sL https://install.nodeget.com) install-server
第 2 步:按照提示逐步回答(避坑指南)
脚本运行过程中会出现以下交互问题,请严格按照下表操作:
| 交互提示 | 推荐操作 | 说明 |
|---|---|---|
请输入 WS 监听地址 (默认 0.0.0.0:2211) |
直接回车 | 使用默认端口即可 |
请输入 Server UUID (默认自动生成) |
直接回车 | 自动生成,安装完成后记录此值 |
请输入 Postgres 数据库 URL (留空则选择sqlite) |
直接回车 | 使用轻量级 SQLite,无需额外数据库 |
是否自动生成自签名 TLS 证书 (y/n, 默认n) |
输入 n 回车 |
TLS 由 Nginx 负责,Server 保持纯 HTTP |
是否利用 cloudflare tunnel 创建快速预览链接 |
输入 n 回车 |
我们使用自己的域名,无需此功能 |
⚠️ 特别注意: 数据库选项必须直接回车(使用 SQLite),不要粘贴任何 Postgres 连接字符串。TLS 证书选项必须选
n,否则后续 Nginx 配置会出现 SSL 冲突。
第 3 步:验证 Server 运行状态
systemctl status nodeget-server
看到绿色的 active (running) 即代表安装成功。
第 4 步:记录 Server UUID
后续连接前端时需要用到 UUID,可通过以下命令查看:
cat /etc/nodeget-server.toml | grep server_uuid
阶段三:配置 Nginx 反向代理与 HTTPS
此步骤的目的:让前端通过安全的
wss://协议与后端建立 WebSocket 连接。
前提: 您需要有一个已解析到本台 VPS IP 的域名(例如n.example.com)。
第 1 步:安装 Nginx 和 Certbot
sudo apt update
sudo apt install -y nginx certbot python3-certbot-nginx
第 2 步:创建 Nginx 配置文件
sudo nano /etc/nginx/sites-available/nodeget
将以下内容粘贴进去,并将 n.example.com 替换为您实际的域名:
server {
listen 80;
server_name n.example.com; # 替换为您的后端域名
location /nodeget/rpc {
proxy_pass http://127.0.0.1:2211;
# WebSocket 长连接必备配置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
# 透传客户端真实 IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
保存并退出:Ctrl+O → Enter → Ctrl+X
第 3 步:启用配置并申请 HTTPS 证书
# 建立软链接,激活配置
sudo ln -s /etc/nginx/sites-available/nodeget /etc/nginx/sites-enabled/
# 测试配置文件语法
sudo nginx -t
# 重启 Nginx
sudo systemctl restart nginx
# 自动申请并配置 Let's Encrypt 证书
sudo certbot --nginx -d n.example.com
Certbot 申请过程中:
- 输入您的邮箱地址(用于证书到期提醒)
- 输入
A同意服务条款 - 输入
N拒绝接收推广邮件
Certbot 会自动修改 Nginx 配置以支持 HTTPS,完成后后端 WebSocket 地址变为:
https://n.example.com/nodeget/rpc
阶段四:连接前后端,完成初始化
-
打开浏览器,访问阶段一获取的前端面板地址(例如
https://nodeget-board.pages.dev)。 -
页面弹出连接配置对话框,填写以下信息:
字段 填写值 主控 URL https://n.example.com/nodeget/rpc(您的后端域名)Token 阶段二第 4 步中记录的 server_uuid值 -
点击 连接,面板成功加载,部署完成!
阶段五:在被监控节点安装 Agent
在需要监控的其他服务器上执行以下命令(将 UUID 替换为您的 server_uuid):
server_url=https://n.example.com/nodeget/rpc \
server_uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
bash <(curl -sL https://install.nodeget.com) install-agent
Agent 安装完成后,节点会自动出现在 Dashboard 中。
阶段六: 主题
主题一
这个主题有些花哨,纳斯达克+航空
Demo 预览: https://wynnget.pages.dev/
Github: https://github.com/0xUnixIO/NodeGet-StatusShow
点击我一键部署
主题二
这个主题比较简约一些,同时后端有一些定制 需要用镜像去统计在线人数
Server的Docker镜像: https://hub.docker.com/repository/docker/nnnnnio/nodeget/general
Demo 预览: https://wyng.pages.dev/
GITHUB地址:https://github.com/0xUnixIO/NGSS
点击我一键部署
主题三
https://github.com/3257085208/NIE-Theme-NodeGet
主题四
https://nodeget-liquidstatusshow.pages.dev/
预览
常见问题排查
Dashboard 显示"连接失败"
- 检查 Nginx 是否正常运行:
sudo systemctl status nginx - 检查 Server 是否正常运行:
sudo systemctl status nodeget-server - 确认防火墙已放行 80/443 端口:
sudo ufw allow 80 && sudo ufw allow 443 - 确认域名 DNS 已正确解析:
ping n.example.com
证书申请失败
- 确认域名已解析到当前 VPS 的 IP 地址
- 确认 80 端口未被占用:
sudo lsof -i :80
Server 启动失败
查看详细日志:
journalctl -u nodeget-server -n 50 --no-pager
证书到期自动续签
Certbot 安装后会自动创建定时任务,可手动测试续签流程:
sudo certbot renew --dry-run
升级与维护
更新 Server 端
bash <(curl -sL https://install.nodeget.com) update-server
更新前端 Dashboard
前往 GitHub 您 Fork 的仓库,点击 Sync fork 同步上游更新,Cloudflare Pages 会自动触发重新构建。
查看 Server 运行日志
journalctl -u nodeget-server -f
安全建议
- 建议为 Dashboard 配置 Cloudflare Access 或在前端面板设置访问密码,避免面板暴露在公网。
- 定期检查并更新 NodeGet Server 版本以获取安全修复。
- 若 VPS 有防火墙,建议只对外开放 80/443 端口,将 2211 端口限制为仅本机访问(
127.0.0.1)。
# UFW 防火墙配置示例
sudo ufw allow 22 # SSH
sudo ufw allow 80 # HTTP
sudo ufw allow 443 # HTTPS
sudo ufw deny 2211 # 禁止外部直接访问 NodeGet 原始端口
sudo ufw enable
文档版本:v1.0 | 参考官方:https://nodeget.com
评论区