家里云使用 cf tunnel 搭建哪吒探针


共计 3856 个字符,预计需要花费 10 分钟才能阅读完成。

本教程使用 cf tunnel 搭建哪吒探针,只需要使用一个域名,面板和客户端均可以使用 docker 进行安装。先来两张效果图:

家里云使用 cf tunnel 搭建哪吒探针

/>

家里云使用 cf tunnel 搭建哪吒探针

/>

如果你还没使用过 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

家里云使用 cf tunnel 搭建哪吒探针

/>

Application name 随意填写,Homepage URL 填写自己的域名,Authorization callback URL 即回调地址,在域名后添加 /oauth2/callback。当然如果不想用域名,使用 ip + 端口也是可以的。

家里云使用 cf tunnel 搭建哪吒探针

/>

注册后进入应用页面,点击 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 一键安装客户端的命令。

家里云使用 cf tunnel 搭建哪吒探针

/>

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:清朝云网络工作室

阅读剩余
THE END