家里云使用 cf tunnel 搭建哪吒探针
共计 3856 个字符,预计需要花费 10 分钟才能阅读完成。
本教程使用 cf tunnel 搭建哪吒探针,只需要使用一个域名,面板和客户端均可以使用 docker 进行安装。先来两张效果图:
/>
/>
如果你还没使用过 cf tunnel,可以参考 Cloudflare tunnel 内网穿透简单使用。当然,我这里使用的是配置文件的方式,可能有些许不同,但是界面上可以一样的操作。
1. tunnel以及nginx配置
由于哪吒探针需要使用 grpc,所以需要在 tunnel 和 nginx 中都做一些特殊的配置。
tunnel: xxxx
credentials-file: xxxx
protocol: http2
ingress:
- hostname: "<<域名>>"
service: https://localhost
originRequest:
httpHostHeader: <<域名>>
originServerName: <<域名>>
http2Origin: true
noTLSVerify: true
这里配置的目的是,grpc 调用需要开启 http2,所以需要配置 http2Origin: true
。另外,grpc 的调用需要 tls,所以需要请求 https,所以可能还需要配置忽略证书 noTLSVerify: true
。
不知道是不是我这里配置特殊的缘故,其实这一条我这里不是非常必要的。因为我本地使用 acme 配置了真实的证书,并且 nginx 配置了 http2。
server {
listen 80;
listen 443 ssl;
listen [::]:443 ssl;
# 开启 http2
http2 on;
server_name <<域名>>;
ssl_certificate /etc/nginx/conf.d/xxx.cer;
ssl_certificate_key /etc/nginx/conf.d/xxx.key;
access_log /var/log/nginx/nezha-dash.access.log main;
error_log /var/log/nginx/nezha-dash.error.log notice;
# 抄的教程,不配以下内容似乎不能获取到数据
ssl_stapling on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
underscores_in_headers on;
keepalive_time 24h;
keepalive_requests 100000;
keepalive_timeout 120s;
# 需不需要看自己
#if ($server_port != '443') { rewrite ^(.*)$ https://$host:443$1 permanent; }
# 面板
location / {
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://127.0.0.1:8098/;
}
# 探针请求地址
location /proto.NezhaService {
grpc_read_timeout 300s;
grpc_send_timeout 300s;
grpc_socket_keepalive on;
grpc_pass grpc://grpcservers;
}
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream grpcservers {
server localhost:5555;
keepalive 512;
}
nginx 配置这里需要填写自己实际域名和证书地址,如果配置了忽略验证证书,那么证书可以随便放。
2. 获取 Client ID 和密钥
哪吒监控接入 Github、Gitlab、Gitee 作为后台管理员账号,这里以 github 为例,首先需要获取 Client ID 和密钥。
首先打开 https://github.com/settings/developers,依次选择 OAuth Apps
- New OAuth App
。
/>
Application name
随意填写,Homepage URL
填写自己的域名,Authorization callback URL
即回调地址,在域名后添加 /oauth2/callback
。当然如果不想用域名,使用 ip + 端口也是可以的。
/>
注册后进入应用页面,点击 Generate a new client secret
会生成一个密钥,这个密钥仅显示一次,注意保存。
3. 面板配置及安装
安装前首先需要配置。
mkdir -p /home/docker/nezha/data && cd /home/docker/nezha/data
然后创建 config.yaml
。
AvgPingCount: 2
Cover: 0
DDNS:
AccessID: ""
AccessSecret: ""
Enable: false
MaxRetries: 3
Provider: webhook
WebhookHeaders: ""
WebhookMethod: POST
WebhookRequestBody: ""
WebhookURL: ""
Debug: false
DisableSwitchTemplateInFrontend: true
EnableIPChangeNotification: false
EnablePlainIPInNotification: false
# 这里填写
GRPCHost: <<自己的域名>>
GRPCPort: 5555
HTTPPort: 80
IPChangeNotificationTag: default
IgnoredIPNotification: ""
IgnoredIPNotificationServerIDs: {}
Language: zh-CN
Location: Asia/Shanghai
MaxTCPPingValue: 1000
Oauth2:
Admin: <<Github用户名>>
ClientID: <<Client ID>>
ClientSecret: <<Client secrets>>
Endpoint: ""
Type: github
# 这里需要设置为 443
ProxyGRPCPort: 443
Site:
Brand: <<网站标题>>
CookieName: nezha-dashboard
CustomCode: ""
DashboardTheme: default
Theme: default
ViewPassword: ""
# 这里需要设置为 true
TLS: true
然后使用 compose 进行安装,你想直接 docker run
就用 gpt 转一下吧。
version: '3'
services:
nezha-dashboard:
image: whoer/nezha-dashboard
container_name: nezha-dashboard
restart: unless-stopped
volumes:
- /home/docker/nezha/data:/dashboard/data
ports:
- 8098:80
- 5555:5555
此时应该可以访问面板了,但是没有数据。需要登录到后台进行新增服务器,然后就可以看见 linux 一键安装客户端的命令。
/>
4. 探针安装
可以直接使用后台提供的命令一键安装,也可以使用 docker 进行安装,复制后台提供参数即可。
docker run -d \
--name nezha-agent \
--restart unless-stopped \
--network host \
whoer/nezha-agent --tls -s tz.153224.xyz:443 -p 3yzqxFOAgCUI9K3r1Y
上面这个镜像不能获取到真实的操作系统,如果想自定义操作系统还可以使用其他的镜像。
docker run -d \
--name='nezha-agent' \
-e domain=tz.153224.xyz \
-e port=443 \
-e secret=3yzqxFOAgCUI9K3r1Y \
-e platform=ubuntu \
-e version=20.04 \
-e args="--tls" \
--net=host \
--restart unless-stopped \
redamancy2319/nezha-agent
还可以使用下面这个镜像,不过这个镜像我一般是在 pass 平台使用的,因为很多平台需要你镜像对外提供服务,而这个镜像封装了一个博客网站。
docker run -d \
--name='nezha-agent' \
-e nginx_port=18080 \
-e domain=tz.153224.xyz \
-e port=443 \
-e secret=test \
-e platform=debian \
-e version=20.04 \
-e args="--tls" \
--net=host \
--restart unless-stopped \
hausen1012/nezha-agent
提醒:本文发布于135天前,文中所关联的信息可能已发生改变,请知悉!
Tips:清朝云网络工作室