星辰
星辰
Published on 2023-11-22 / 19 Visits
0
0

使用 Argo Tunnel + Koyeb 部署探针应用

1 方案特色

项目地址:https://github.com/fscarmen2/Argo-Nezha-Service-Container

  • 适用范围更广 --- 只要能连通网络,就能安装哪吒服务端,如 Nas 虚拟机 , Container PaaS 等

  • Argo 隧道突破需要公网入口的限制 --- 传统的哪吒需要有两个公网端口,一个用于面板的访问,另一个用于客户端上报数据,本项目借用 Cloudflare Argo 隧道,使用内网穿透的办法

  • IPv4 / v6 具备更高的灵活性 --- 传统哪吒需要处理服务端和客户端的 IPv4/v6 兼容性问题,还需要通过 warp 等工具来解决不对应的情况。然而,本项目可以完全不需要考虑这些问题,可以任意对接,更加方便和简便

  • 一条 Argo 隧道分流多个域名和协议 --- 建立一条内网穿透的 Argo 隧道,即可分流三个域名(hostname)和协议(protocal),分别用于面板的访问(http),客户端上报数据(tcp)和 ssh(可选)

  • GrpcWebProxy 反向代理的 gRPC 数据端口 --- 配上证书做 tls 终结,然后 Argo 的隧道配置用 https 服务指向这个反向代理,启用 http2 回源,grpc(nezha)->GrpcWebProxy->h2(argo)->cf cdn edge->agent

  • 每天自动备份 --- 北京时间每天 4 时 0 分自动备份整个哪吒面板文件夹到指定的 github 私库,包括面板主题,面板设置,探针数据和隧道信息,备份保留近 5 天数据;鉴于内容十分重要,必须要放在私库

  • 每天自动更新面板 -- 北京时间每天 4 时 0 分自动检测最新的官方面板版本,有升级时自动更新

  • 手/自一体还原备份 --- 每分钟检测一次在线还原文件的内容,遇到有更新立刻还原

  • 默认内置本机探针 --- 能很方便的监控自身服务器信息

  • 数据更安全 --- Argo 隧道使用 TLS 加密通信,可以将应用程序流量安全地传输到 Cloudflare 网络,提高了应用程序的安全性和可靠性。此外,Argo Tunnel 也可以防止 IP 泄露和 DDoS 攻击等网络威胁

2 环境准备

💡 前提条件:域名需托管于 CloudFlare DNS 解析服务

2.1 打开 CloudFlare gRPC 转发

image.png

2.2 获取 GitHub 应用认证授权

访问:https://github.com/settings/applications/new

image.png

image.png

2.3 获取 GitHub 仓库访问授权

访问获取 github 的 PAT (Personal Access Token): https://github.com/settings/tokens/new
image.png

2.4 创建 GitHub 探针面板备份仓库

访问创建用于备份的私有仓库: https://github.com/new

image.png

2.5 获取 Argo 认证 Json

访问 Cloudflare Json 生成网获取 Argo 隧道 json 信息: https://fscarmen.cloudflare.now.cc
image.png

3 环境部署

访问 Koyeb ,开始部署应用。

3.1 环境变量

变量名

是否必须

备注

GH_USER

github 的用户名,用于面板管理授权

GH_CLIENTID

在 github 上申请

GH_CLIENTSECRET

在 github 上申请

GH_BACKUP_USER

在 github 上备份哪吒服务端数据库的 github 用户名,不填则与面板管理授权的账户 GH_USER 一致

GH_REPO

在 github 上备份哪吒服务端数据库文件的 github 库

GH_EMAIL

github 的邮箱,用于备份的 git 推送到远程库

GH_PAT

github 的 PAT

ARGO_AUTH

Json: 从 https://fscarmen.cloudflare.now.cc 获取的 Argo JsonToken: 从 Cloudflare 官网获取

ARGO_DOMAIN

Argo 域名

3.2 部署应用

image.png

image.png

image.png

稍等一会即可部署成功:

image.png

4 访问应用

4.1 前台访问

使用探针面板域名可直接访问到面板:https://probe.astralor.com/

image.png

4.2 后台访问

点击右上角登陆,使用 GitHub 账号登陆后台:

image.png

image.png

5 常见问题

5.1 运行中出现 Deployment failed

如果运行过程中,突然某天收到邮件提示部署失败,则大概率是项目:fscarmen2/Argo-Nezha-Service-Container 出现了不可兼容的更新,如:环境变量名称改变。

需要再次访问项目地址:fscarmen2/Argo-Nezha-Service-Container

查看环境变量说明是否出现了不一致,并调整 koyeb 部署。

问题原因:该项目会每天自动更新面板,北京时间每天 4 时 0 分自动检测最新的官方面板版本,有升级时自动更新,如果环境变量出现改变,则面板将部署失败。


Comment