域名解析

面板域名以nezha.a.com为例

Cloudflare中添加A记录nezha.a.com指向Dashboard 服务器 IP,开启小黄云。a.com域名设置页面——网络,选择开启WebSockets 和 gRPC ;SSL/TLS模式选择完全(严格)。

哪吒搭建

1
2
3
sudo mkdir -p /opt/nezha && cd /opt/nezha
nano docker-compose.yml
docker compose up -d

docker-compose.yml文件:

1
2
3
4
5
6
7
8
9
services:
dashboard:
container_name: nezha-dashboard
image: ghcr.io/nezhahq/nezha:latest
restart: unless-stopped
volumes:
- ./dashboard/data:/dashboard/data
ports:
- 8008:8008

反代设置

反代设置代码来源:https://misaka.es/archives/42.html

1panel面板中新建反向代理网站,网站 —— 创建网站 —— 反向代理,主域名填写nezha.a.com,代理地址填写127.0.0.1:8008

证书页面自行设置Acme账户、DNS账户为nezha.a.com申请证书。

网站页面点击nezha.a.com进入网站设置,开启https。

点击配置文件,最下方添加以下代码,保存并重载。
image

1
2
3
4
5
# upstream 配置
upstream dashboard {
keepalive 512;
server 127.0.0.1:8008;
}

打开网站 —— 反向代理 —— 源文,使用以下代码替换原内容,点击确认。至此,反向代理设置完成。
image

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;
}

面板设置

登录到 Dashboard 配置界面https://nezha.a.com/dashboard,初始用户名、密码均为admin,登录后立即进入管理页面点击头像 —— 个人信息 —— 更新个人资料修改用户名和密码。

点击头像 —— 系统设置,填写站点名称、设置语言,Agent对接地址【域名/IP:端口】填写nezha.a.com:443,勾选Agent 使用 TLS 连接,点击确认即可。

添加TCP-Ping延迟测试:

全国各省份三网 TCP-Ping IPv4 地址:https://www.nodeseek.com/post-68572-1

全国各省份三网 TCP-Ping IPv6 地址:https://www.nodeseek.com/post-129987-1

以浙江移动为例,服务页面创建服务,名称:浙江移动,目标:zj-cm-v4.ip.zstaticcdn.com:80,类型:TCPing

添加telegram通知:

通知页面点击“+”,创建通知,名称自定,URL填写https://api.telegram.org/bot<你的机器人Token>/sendMessage?chat_id=<你的用户ID>&text=#NEZHA#,将 <你的机器人Token><你的用户ID> 替换为实际值。

获取 URL 参数
获取机器人 Token:与 @BotFather 对话,发送/newbot创建新机器人,获取 Token。
获取用户 ID:与 @userinfobot 对话,获取你的用户 ID。
与机器人对话:先与新创建的机器人发送一条消息,确保机器人可以发送消息给你。

分组——通知,页面点击“+”,编辑通知分组,名称自定,通知勾选提前创建的telegram通知,确认即可。

警报规则参考哪吒官方文档,以离线通知为例:

通知——警报规则,点击“+”,创建警报规则,名称:离线通知,规则:[{"Type": "offline", "Duration": 10}],通知组:勾选

telegram通知,启用:勾选,点击确认。

面板设置完成,可至服务器页面,点击安装命令,根据系统选择安装命令前往被控vps运行。

注:被控端禁用网页SSH

1
sed -i 's/disable_command_execute: false/disable_command_execute: true/' /opt/nezha/agent/config.yml && systemctl restart nezha-agent

接入微软登录

原wiki地址 https://nezha.wiki/guide/q14.html

补充微软登陆

1
2
3
4
5
6
7
8
9
10
11
oauth2:
Microsoft:
clientid: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
clientsecret: "XXXXX"
endpoint:
authurl: "https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize"
tokenurl: "https://login.microsoftonline.com/consumers/oauth2/v2.0/token"
scopes:
- "User.Read"
userinfourl: "https://graph.microsoft.com/v1.0/me"
useridpath: "id"

配置格式如上,需要自己注册应用以获得clientid、clientsecret

  1. 注册
    https://entra.microsoft.com/#view/Microsoft_AAD_RegisteredApps/CreateApplicationBlade/quickStartType/null/isMSAApp/false
    输入项:
    名称 – 随便写
    受支持的帐户类型 – 仅 Microsoft 个人帐户
    重定向 URI (可选) – WEB https://xx.com/api/v1/oauth2/callback
  2. 获得clientid
    https://entra.microsoft.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade/quickStartType~/null/sourceType/Microsoft_AAD_IAM
    在最左边 所有应用程序 找到自己刚才注册的 点进去
    概述页面有个 应用程序(客户端) ID,这个就是。
  3. 获得clientsecret
    uS3yGRHdgnCIGTAi9IVkpS
    提交后会出现 一个 值,复制,后续会不可见。
  4. 修改配置文件 并且 重启 面板服务
  5. 在个人信息里面绑定即可