【Docker】Docker+ NPM 安装哪吒面板
编辑
5
2025-10-14
背景
Nginx Proxy Manager 运行在一个名为: "Nginx" 的网络里,我想要将「哪吒面板」安装在 Docker 中,并使用 NPM 进行反向代理,同时希望 Agent 能通过反代后的域名和443端口进行连接。
安装
services:
nezha:
image: registry.cn-shanghai.aliyuncs.com/naibahq/nezha-dashboard:latest
container_name: nezha
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- /home/nezha/dashboard:/dashboard/data
networks:
- nginx
networks:
nginx:
external: true
NPM 配置
Details
注: 必须开启 Websockets Support
SSL
注: 必须开启 HTTP/2 Support,否则 Agent 连接不上 Dashboard
Advance
underscores_in_headers on;
location ^~ /proto.NezhaService/ {
grpc_set_header Host $host;
grpc_set_header nz-realip $remote_addr;
grpc_read_timeout 600s;
grpc_send_timeout 600s;
grpc_socket_keepalive on;
client_max_body_size 10m;
grpc_buffer_size 4m;
grpc_pass grpc://nezha:8008;
}
注: underscores_in_headers on;
必不可少,否则 Agent 连接不上 Dashboard
Dashboard 配置
注: 这里的端口号必不可少,否则使用后台的生成的 Agent 命令 连接不上 Dashboard
Dashboard 添加三网测速
后台服务添加
补充
容易出问题的点,是在使用 NPM 设置错误的时候,grpc 连不上。因为 NPM 的 Location 默认只支持 HTTP/HTTPS 两种 Scheme,要像支持 grpc 只能在 Advance 里面手动设置,需要注意的是必须启用 HTTP/2 Support,否则即使 Advance 设置正确, Agent 也是连接不上 Dashboard 的。
调试 grpc 连接,可以在控制台输入
curl https://xxxx/proto.NezhaService/ -H "Content-Type:application/grpc" -X POST -v
一切正常的话,输出类似于
root@ubuntu:~# curl https://xxxxxx/proto.NezhaService/ -H "Content-Type:application/grpc" -X POST -v
* Host xxxx:443 was resolved.
* IPv6: (none)
* IPv4: xxxx
* Trying xxxx:443...
* Connected to xxxxx (xxxxx) port 443
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
- 0
- 0
-
赞助
微信
-
分享