Loading... ## 环境建议 1. 一台可以连接公网的VPS,防火墙和安全策略需要放行8008和5555端口,否则会无法访问和无法接收数据。单核512MB内存的服务器配置就足以满足大多数使用场景 2. 域名(本教程基于过CDN,所以我建议你后端再解析一个域名) ## 获取Github/Jihulab的Client ID和密钥 哪吒监控接入Github、Gitlab、Jihulab、Gitee作为后台管理员账号 * 首先我们需要新建一个验证应用,以Github为例,登录Github后,打开 [https://github.com/settings/developers](https://github.com/settings/developers) ,依次选择“OAuth Apps” - “New OAuth App” `Application name` - 随意填写 `Homepage URL` - 填写面板的访问域名,如:"[https://cdn.example.com](https://cdn.example.com/)" `Authorization callback URL` - 填写回调地址,如:"[https://cdn.example.com/oauth2/callback](https://cdn.example.com/oauth2/callback)" * 点击“Register application” * 保存页面中的Client ID,然后点击 “Generate a new client secret“,创建一个新的Client Secret,新建的密钥仅会显示一次,请妥善保存 * JihuLab的应用创建入口为:[https://jihulab.com/-/profile/applications](https://jihulab.com/-/profile/applications) * `Redirect URL` 中应填入回调地址 * 在下方`范围`中勾选 `read_user` 和 `read_api` * 创建完成后,保存好应用程序ID和密码 ## 一键脚本无脑安装 ``` curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh ``` * 这玩意是基于Docker部署的,安装很快,安装完成跟随提示输入以下内容: `OAuth提供商` - Github,Gitlab,Jihulab,Gitee(看你的喜好,我建议Github) `Client ID` - 之前保存的Client ID `Client Secret` - 之前保存的密钥 `用户名` - 如果是Github,那就是你在GitHub的名字 `站点标题` - 你随意,你写“轻关易道,通商宽衣”完全没问题 `访问端口` - 公开访问端口,默认8008,反正到时候要反代,无所谓的,保持默认就行 `Agent的通信端口` - Agent与Dashboard的通信端口,默认5555,同样的,保持默认,使用反代 ## 反向代理 创建一个网站,用你想给别人开放的那个域名(反代的目的是为了让它支持HTTPS) Nginx的反向代理配置: ``` #PROXY-START/ location / { proxy_pass http://127.0.0.1:8008; proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; } location ~ ^/(ws|terminal/.+)$ { proxy_pass http://127.0.0.1:8008; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $http_host; } #PROXY-END/ ``` Caddy的反向代理配置: ``` proxy /ws http://ip:8008 { websocket header_upstream -Origin } proxy /terminal/* http://ip:8008 { websocket header_upstream -Origin } ``` ## 反代gRPC的5555端口 创建一个新的站点,也就是你刚刚解析的第二个域名,这个网站是用来让Agent和Dashboard通讯的,不是用来看的(你的CDN要允许80、443传输gRPC) Nginx配置: ``` server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name agent.example.com; # 你的 Agent 连接 Dashboard 的域名 ssl_certificate /data/letsencrypt/fullchain.pem; # 你的域名证书路径 ssl_certificate_key /data/letsencrypt/key.pem; # 你的域名私钥路径 underscores_in_headers on; location / { grpc_read_timeout 300s; grpc_send_timeout 300s; grpc_pass grpc://localhost:5555; } } ``` Caddy配置: ``` data.example.com:443 { # 你的 Agent 连接 Dashboard 的域名 reverse_proxy { to localhost:5555 transport http { versions h2c 2 } } } ``` Dashboard 面板端配置 * 首先登录面板进入管理后台 打开设置页面,在 `未接入CDN的面板服务器域名/IP` 中填入上一步在 Nginx 或 Caddy 中配置的域名 比如 `data.example.com` ,并保存。 * 然后在面板服务器中,打开 /opt/nezha/dashboard/data/config.yaml 文件,将 `proxygrpcport` 修改为 Nginx 或 Caddy 监听的端口,比如上一步设置的 `443` ;因为我们在 Nginx 或 Caddy 中开启了 SSL/TLS,所以需要将 `tls` 设置为 `true` ;修改完成后重启面板。 Agent 端配置 * 登录面板管理后台,复制一键安装命令,在对应的服务器上面执行一键安装命令重新安装 agent 端即可。 开启 Cloudflare CDN(可选) 根据 Cloudflare gRPC 的要求:gRPC 服务必须侦听 443 端口 且必须支持 TLS 和 HTTP/2。 所以如果需要开启 CDN,必须在配置 Nginx 或者 Caddy 反向代理 gRPC 时使用 443 端口,并配置证书(Caddy 会自动申请并配置证书)。 * 登录 Cloudflare,选择使用的域名。打开 `网络` 选项将 `gRPC` 开关打开,打开 `DNS` 选项,找到 Nginx 或 Caddy 反代 gRPC 配置的域名的解析记录,打开橙色云启用 CDN。 正文到此结束 本文作者:咕咕 本文链接:https://blog.imgugu.ink/archives/36/ 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。 最后修改:2022 年 06 月 09 日 © 允许规范转载 打赏 赞赏作者 赞 0 如果觉得我的文章对你有用,请随意赞赏