前言

哪吒监控(Nezha Monitoring)是一款开源的、轻量级的服务器监控工具,支持多种指标监控、状态通知等功能。本文部署哪吒监控将使用1panel面板+Openresty+Docker的方式进行部署。

准备工作

  1. 已安装1panel面板的服务器(本文以Debian环境为例)
  2. 一个域名(用于访问哪吒监控面板)
  3. 确保服务器已开放相应端口

域名解析与Cloudflare设置

在开始部署哪吒监控之前,我们需要先设置域名解析和CDN服务。本文以域名托管在Cloudflare(小黄云)上为例:

域名解析

  1. 登录你的Cloudflare账户
  2. 选择你的域名(以xyuns.cc为例)
  3. 进入DNS > 记录页面
  4. 点击添加记录,添加一条A记录:
    • 类型:A
    • 名称:tzdata(或其他你希望的子域名前缀)
    • IPv4地址:你服务器的IP地址
    • 代理状态:确保云图标为橙色(即代理状态为“已代理”)
    • TTL:自动

最终得到的域名将是tzdata.xyuns.cc

配置Cloudflare必要功能

  1. 登录你的Cloudflare账户
  2. 选择域名xyuns.cc
  3. 进入「域名设置」->网络
  4. 确保以下设置已启用:
    • 开启WebSockets
    • 开启gRPC
    • SSL/TLS模式选择「完全(严格)」

这些设置对于哪吒监控的WebSocket和gRPC通信是必不可少的,可以确保监控数据的正常传输和实时刷新。

服务器安装Dashboard

1. 准备环境(Debian系统)

在Debian系统下,我们首先需要安装必要的环境:

安装Openresty

在1panel中安装Openresty非常简单,只需要几个点击即可完成:

  1. 登录1panel控制面板
  2. 点击左侧菜单栏的应用商店
  3. 在搜索框中输入”Openresty”
  4. 找到Openresty应用,点击安装
  5. 按照提示设置参数并完成安装

安装完成后,Openresty将自动启动并运行

安装UFW防火墙

1
2
3
4
5
6
7
sudo apt install -y ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 加1panel管理端口放行(根据你安装1panel时选择的端口进行修改)
sudo ufw allow 8888/tcp
sudo ufw enable

注意:请确保将1panel的管理端口添加到防火墙例外规则中,否则启用防火墙后将无法访问1panel控制面板。端口号请根据你实际的安装情况进行修改。

2. 安装Dashboard

在服务器中,运行以下安装脚本:

1
2
# 国外版本
curl -L https://raw.githubusercontent.com/nezhahq/scripts/refs/heads/main/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh

如果你的服务器位于中国大陆,可以使用镜像:

1
2
# 国内版本
curl -L https://gitee.com/naibahq/scripts/raw/main/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh

3. 配置Dashboard

以Docker安装为例:

安装界面

安装过程中按提示输入以下信息:

  • 站点标题:输入你想要的站点名称
  • 暴露端口:直接默认8008即可
  • nezha-agent连接地址:替换为自己的域名,例如tzdata.xyuns.cc:443
  • 是否希望通过TLS连接Agent?:输入y并回车继续
  • 选择后台语言:选择中文简体

修改配置

4. 设置反向代理

安装完成后,我们需要配置反向代理来使用域名访问哪吒监控面板。在1panel中操作如下:

  1. 在1panel控制面板中点击网站->创建->反向代理
  2. 输入主域名(如tzdata.xyuns.cc
  3. 输入代理地址为127.0.0.1:8008
  4. 点击确认创建

创建反向代理

  1. 点击刚添加的域名所在的网站配置

点击网站配置

  1. 开启HTTPS并配置证书

  2. 点击网站配置文件

点击网站配置文件

在最下面添加以下配置:

1
2
3
4
upstream dashboard {
keepalive 512;
server 127.0.0.1:8008;
}
  1. 点击保存并重载

5. 优化反向代理配置

为了哪吒监控能够正常工作,我们需要进一步优化反向代理配置:

  1. 进入网站目录

  2. 编辑以下配置文件:

    1
    /opt/1panel/apps/openresty/openresty/www/sites/你输入的主域名/proxy/root.conf
  3. 将配置文件内容替换为以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
location ^~ / {
proxy_pass http://127.0.0.1:8008;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header nz-realip $http_cf_connecting_ip;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_buffer_size 128k;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 0;
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
proxy_ssl_server_name off;
proxy_ssl_name $proxy_host;
add_header Strict-Transport-Security "max-age=31536000";
}

underscores_in_headers on;
set_real_ip_from 0.0.0.0/0; # CDN 回源 IP 地址段
real_ip_header CF-Connecting-IP; # CDN 私有 header,此处为 CloudFlare 默认

# gRPC 服务
location ^~ /proto.NezhaService/ {
grpc_set_header Host $host;
grpc_set_header nz-realip $http_CF_Connecting_IP;
grpc_read_timeout 600s;
grpc_send_timeout 600s;
grpc_socket_keepalive on;
client_max_body_size 10m;
grpc_buffer_size 4m;
grpc_pass grpc://dashboard;
}

# WebSocket 服务
location ~* ^/api/v1/ws/(server|terminal|file)(.*)$ {
proxy_set_header Host $host;
proxy_set_header nz-realip $http_cf_connecting_ip;
proxy_set_header Origin https://$host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_pass http://127.0.0.1:8008;
}
  1. 保存并重载

6. 编辑哪吒监控容器配置

完成反向代理配置后,还需要编辑哪吒监控的容器配置:

  1. 在1panel面板中进入容器页面
  2. 找到nezha-dashboard容器
  3. 点击更多->编辑

编辑容器

  1. 对容器进行以下修改:
    • 端口:将服务器下的8008改为127.0.0.1:8008
    • 网络:选择1panel-network
    • IPv4 地址:根据实际网段进行修改(可在容器->网络中查看对应网段)

修改容器网络和端口

  1. 点击确认
  2. 点击重构镜像并部署

完成以上所有配置后,访问你设置的域名,即可进入哪吒监控面板。
多这个步骤是因为Linux 防火墙 ufw 无法禁用 Docker 端口映射,设置完后8008端口就无法访问了,提高安全性。