手里但凡有两三台云服务器或者闲置 VPS 的朋友,多半都琢磨过搭个集中监控面板。以往大家的默认选择几乎都是哪吒监控(Nezha),但现在去搜索引擎一搜,排在前面的教程十有八九还停留在 v0 或者 v1 时代:通篇教你注册 GitHub OAuth 应用、去安全组死磕 5555 端口、在反向代理里手动配置长连接与 gRPC 分流。如果你拿那些旧教程对照最新的程序,第一步就会卡住——不仅配置文件结构大改,连后台操作逻辑和通信端口都对不上号。
哪吒监控在演进到 v2 架构后,整体设计收敛得非常干净。本文基于 2026 年 11 月 3 日的实测环境编写,面板版本为 Dashboard v2.6.1,探针为 Agent v2.4.0。在新版中,面板与探针之间的通信协议得到重构,网页前端管理和后端探针上报统一收敛到了单个 8008 端口;用户认证也回归了最直观的本地账号密码体系,不再强行绑定第三方 OAuth。这篇文章不讲虚的架构理论,只记录一条经过实机验证、能在十分钟内把面板立起来并连通第一台探针的最短路径。
成品长这样
在开始敲命令之前,先看看搭建完成后的最终形态。当面板部署成功并接入探针之后,访问面板前端主页,就能看到整洁的服务器监控仪表盘。页面上方汇总了接入的服务器总数、实时在线节点数;卡片区域则直观刷新着目标机器的实时 CPU 占用率、内存使用量、虚拟内存、网络实时上下行速率以及出入站累计总流量。
准备工作
正式开工前,你需要确认好两样东西:
第一,准备一台作为「中央控制台」的 VPS。这台机器是探针汇总数据的接收端,推荐选用 Debian 11/12 或 Ubuntu 22.04/24.04 系统。机器配置不需要很高,单核 CPU、512MB 内存起步的微型机器就足够流畅支撑几十台探针的日常轮询。服务器上需要提前装好 Docker 以及 Docker Compose 插件。如果机器还没有 Docker 环境,建议通过 Docker 官方脚本一键安装完毕。
第二,处理网络防火墙与安全组规则。你必须在云服务商后台控制台(如腾讯云、阿里云的安全组,或者甲骨文云的子网入站规则)以及机器本身的防火墙(如 ufw 或 nftables)中,明确放行 TCP 8008 端口。这个端口是 v2 面板对外提供全部服务的心脏通道。
第一步:Docker Compose 部署面板
为了后续维护、数据迁移以及一键升级的便利,推荐全程采用 Docker Compose 来运行哪吒面板。所有配置与运行状态通过本地目录挂载持久化,避免容器重建导致数据丢失。
-
创建专属工作目录并建立
docker-compose.yml配置文件:mkdir -p /opt/nezha && cd /opt/nezha cat <<'EOF' > docker-compose.yml services: dashboard: image: ghcr.io/nezhahq/nezha container_name: nezha-dashboard restart: always volumes: - ./data:/dashboard/data ports: - "8008:8008" EOF这里的配置非常简单纯粹:拉取官方维护的
ghcr.io/nezhahq/nezha镜像,将容器内的/dashboard/data目录挂载到宿主机当前目录下的./data,并把容器内部服务的 8008 端口无缝映射至宿主机的 8008 端口。 -
在当前目录下启动容器:
docker compose up -d
Docker 会自动从镜像仓库拉取最新的面板文件并转入后台执行。如果是国内网络环境拉取 GitHub 容器镜像较慢,可以适当配置镜像加速源或通过代理中转。
-
检查容器运行状态与输出日志:
docker compose logs -f
观察控制台刷出的日志输出,当看到类似于
Dashboard::START ON :8008的提示字样时,说明面板核心进程已经成功完成自检并在指定端口就绪。
数据持久化说明:容器首次启动时,程序会自动在刚才映射的 ./data 目录内初始化生成两个核心文件:config.yaml(面板各项运行参数)和 sqlite.db(节点信息、监控历史等所有业务数据库)。这就是哪吒面板的全部家当。后续如果要备份迁移,只需要整体打包这一个 data 目录即可,完全不需要额外配置外部独立的数据库实例。
注意端口规范:许多老用户习惯性地在防火墙里开 5555 端口,这是 v1 版本的旧机制。v2 版本已彻底改用统一的 8008 端口复用处理 Web 页面与探针数据流。如果你按照老教程去放行 5555 端口,不仅毫无作用,还会给服务器凭空增加不必要的外部暴露面。
第二步:登录并改密码
面板服务启动后,使用本地电脑的浏览器访问 http://你的服务器公网IP:8008。初次打开网页时,映入眼帘的是一个干净的空仪表盘界面。点击右上角的「Login」或者登录按钮,就会弹出身份鉴权窗口。
在登录弹窗中输入系统内置的默认账号与密码:
- 用户名:
admin - 密码:
admin
高危安全警告:admin / admin 是全网皆知的公开默认凭证。只要你的机器 IP 被公网扫描器探测到开启了 8008 端口,任何人都能直接登录后台接管你的面板。登录之后的第一件事,必须是进入个人中心或者系统设置页面,立刻修改默认用户名,并设置一个足够复杂的强密码。绝对不能带着默认密码裸奔过夜,否则你的整套服务器资产拓扑和配置信息就等于拱手送人。
第三步:接入第一台探针
面板修改完密码后,接下来需要把目标服务器作为客户端接入进来。这里以接入第一台 Linux 服务器为例进行演示。
哪吒 v2 提供了非常省心的自动化接入方式,也保留了手动注入环境变量的底层部署机制:
方法一:一键自动化安装(推荐)
点击后台导航栏进入「Server」管理页面。在页面的右上角,可以看到一个明显的「Installation command」按钮。点击该按钮后,在弹出的窗口中挑选被监控服务器对应的操作系统和架构类型(例如 Linux x86_64 或 ARM64),面板会自动为你拼装好一段带有动态接入凭证的 Shell 命令。复制整行命令,通过 SSH 登录到你需要监控的 VPS 终端上,以 root 权限粘贴并回车执行。脚本会自动下载对应的 Agent 二进制包并注册为系统常驻服务。
方法二:手动环境变量配置方式
如果你是在特种环境(如仅允许容器部署的轻量环境、Docker 部署 Agent,或者自建自动化运维配置脚本),也可以直接下载 Agent 独立二进制并使用环境变量来引导启动。在手动模式下,核心只需要保证向进程传递三个环境变量:
export NZ_SERVER="面板服务器公网IP:8008" export NZ_CLIENT_SECRET="从 data/config.yaml 中读取的 agent_secret_key" export NZ_TLS="false"
关于这三个参数的实测说明:
NZ_SERVER:填入你的面板对外可访问的公网 IP 搭配 8008 端口。如果你前面套了带有正规证书的域名反向代理,这里写域名和对应代理端口。NZ_CLIENT_SECRET:探针接入通信秘钥。它记录在面板服务器的./data/config.yaml文件中,键名为agent_secret_key。NZ_TLS:TLS 传输加密开关。由于我们当前演示的是直接暴露 8008 端口的直连模式,没有挂载 SSL 证书,因此这里必须明确声明为false。如果没配证书却误填了true,探针会因为证书校验握手失败而拒绝建立连接。
探针安装并在被监控端启动后,一般只需等待 3 至 5 秒刷新后台页面,Server 列表中就会刷新出对应的节点状态,同时显示出当前的探针运行版本(如 v2.4.0)。退回面板首页,该机器的各项监控数据卡片也会立刻点亮。
踩坑实录
根据大量新用户的实际部署反馈,哪吒 v2 在部署过程中最容易踩中以下三个典型陷阱:
1. 照搬旧版教程,纠结 5555 端口与 gRPC 独立路由
这是新手犯错率最高的地方。哪吒 v1 时代需要把 5555 端口作为 gRPC 专属数据通道,很多人因此养成了配 Nginx 时折腾 grpc_pass 的习惯。到了 v2 版本,通信框架全部整合进 8008 端口,客户端与服务端的流量统一走 HTTP/gRPC 多路复用。不需要再寻找所谓的「gRPC 通信地址」,也不要在面板服务器上额外放行 5555 端口,认准 8008 即可。
2. 泄露 agent_secret_key 导致面板被随意注册
在面板的 data/config.yaml 配置文件中,有一个名为 agent_secret_key 的字段。这个密钥是面板验证探针身份的总钥匙。只要掌握了这个 Key 和你的面板地址,公网上的任何人都能够向你的面板注册虚假服务器、恶意刷屏甚至制造垃圾上报流量。如果你在部署遇到问题时截图发群或公开寻求帮助,千万记得提前把 config.yaml 里的各类秘钥字符串做打码遮盖处理。
3. 忘记后台管理员密码盲目推倒重装
如果在改完密码后不小心遗忘了登录密码,完全没必要把整个容器和数据库删掉重装。因为哪吒的数据都老老实实躺在 ./data/sqlite.db 里面。遇到这种情况,只需先执行 docker compose down 停止容器,备份好 data 目录,然后借助官方文档提供的命令行重置指令修改账号,或者使用 SQLite 客户端直接覆写管理员记录即可,原有已经接入的数十台机器配置完全不受影响。
升级与备份
完成部署后,后续的日常维护非常轻量省心:
关于版本升级:由于数据和应用逻辑完全剥离,后续如果官方发布了面板的新版本镜像,你只需要在 /opt/nezha 目录下依次执行:
docker compose pull docker compose up -d
Docker 会自动拉取最新的镜像并平滑重建容器。容器启动后会自动检测挂载的 ./data/sqlite.db 并执行增量迁移,原本所有的历史数据、告警规则和服务器分组均会完好保留。
关于系统备份:哪吒没有复杂的分布式存储。你只需要编写一个简单的定点定时任务,用 tar 命令把 /opt/nezha/data 这个目录打包压缩,并推送到异地对象存储或自己的备份 VPS 即可。即使面板所在的 VPS 彻底宕机,只要手握这份 data 备份包,换一台新机器直接挂载启动,两分钟就能让整个监控系统原地复活。