使用 Argo 隧道的哪吒服务端
Documentation: English version | 中文版
网络
选项将 gRPC
开关打开面板域名加上 https://
开头,回调地址再加上 /oauth2/callback
结尾
Argo 隧道认证方式有 json 和 token,使用两个方式其中之一。推荐前者,理由脚本会处理好所有的 Argo 隧道参数和路径,后者需要到 Cloudflare 官网手动设置,容易出错。
proto.NezhaService
镜像 fscarmen/argo-nezha:latest
, 支持 amd64 和 arm64 架构
用到的变量 | 变量名 | 是否必须 | 备注 |
---|---|---|---|
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 | |
REVERSE_PROXY_MODE | 否 | 默认使用 Caddy 应用来反代,这时可以不填写该变量;如需 Nginx 或 gRPCwebProxy 反代,请设置该值为 nginx 或 grpcwebproxy |
|
ARGO_AUTH | 是 | Json: 从 https://fscarmen.cloudflare.now.cc 获取的 Argo Json Token: 从 Cloudflare 官网获取 |
|
ARGO_DOMAIN | 是 | Argo 域名 | |
NO_AUTO_RENEW | 否 | 默认不需要该变量,即每天定时同步在线最新的备份和还原脚本。如不需要该功能,设置此变量,并赋值为 1 |
|
DASHBOARD_VERSION | 否 | 指定面板的版本,以 v0.00.00 的格式,后续将固定在该版本不会升级,不填则使用默认的 v0.20.13 |
Koyeb
docker run -dit \
--name nezha_dashboard \
--pull always \
--restart always \
-e GH_USER=<填 github 用户名> \
-e GH_EMAIL=<填 github 邮箱> \
-e GH_PAT=<填获取的> \
-e GH_REPO=<填自定义的> \
-e GH_CLIENTID=<填获取的> \
-e GH_CLIENTSECRET=<填获取的> \
-e ARGO_AUTH='<填获取的 Argo json 或者 token>' \
-e ARGO_DOMAIN=<填自定义的> \
-e GH_BACKUP_USER=<选填,选填,选填! 如与 GH_USER 一致,可以不要该环境变量> \
-e REVERSE_PROXY_MODE=<选填,选填,选填! 如想用 Nginx 或 gRPCwebProxy 替代 Caddy 反代的话,请设置该变量并赋值为 `nginx` 或 `grpcwebproxy`> \
-e NO_AUTO_RENEW=<选填,选填,选填! 如果不需要自动在线同步最新的 backup.sh 和 restore.sh,请设置该变量并赋值为 `1`> \
-e DASHBOARD_VERSION=<选填,选填,选填! 指定面板的版本,以 `v0.00.00` 的格式,后续将固定在该版本不会升级,不填则使用默认的 `v0.20.13`> \
fscarmen/argo-nezha
version: '3.8'
networks:
nezha-dashboard:
name: nezha-dashboard
services:
argo-nezha:
image: fscarmen/argo-nezha
pull_policy: always
container_name: nezha_dashboard
restart: always
networks:
- nezha-dashboard
environment:
- GH_USER=<填 github 用户名>
- GH_EMAIL=<<填 github 邮箱>
- GH_PAT=<填获取的>
- GH_REPO=<填自定义的>
- GH_CLIENTID=<填获取的>
- GH_CLIENTSECRET=<填获取的>
- ARGO_AUTH=<填获取的 Argo json 或者 token>
- ARGO_DOMAIN=<填自定义的>
- GH_BACKUP_USER=<选填,选填,选填! 如与 GH_USER 一致,可以不要该环境变量>
- REVERSE_PROXY_MODE=<选填,选填,选填! 如想用 Nginx 或 gRPCwebProxy 替代 Caddy 反代的话,请设置该变量并赋值为 `nginx` 或 `grpcwebproxy`>
- NO_AUTO_RENEW=<选填,选填,选填! 如果不需要自动在线同步最新的 backup.sh 和 restore.sh,请设置该变量并赋值为 `1`>
- DASHBOARD_VERSION=<选填,选填,选填! 指定面板的版本,以 `v0.00.00` 的格式,后续将固定在该版本不会升级,不填则使用默认的 `v0.20.13`>
bash <(wget -qO- https://raw.githubusercontent.com/fscarmen2/Argo-Nezha-Service-Container/main/dashboard.sh)
通过gRPC传输,无需额外配置。使用面板给到的安装方式,举例
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh install_agent nezha.seales.nom.za 443 eAxO9IF519fKFODlW0 --tls
<file path>/cloudflared access ssh --hostname nezha.seales.nom.za/<GH_CLIENTID>
方法一: 把 Github 备份库里的 README.md
文件内容改为 backup
方法二: ssh 进去后,容器版本运行 /dashboard/backup.sh
; 非容器版本运行 /opt/nezha/dashboard/backup.sh
ssh 进去后,容器版本运行 /dashboard/renew.sh
; 非容器版本运行 /opt/nezha/dashboard/renew.sh
README.md
,定时服务会每分钟检测更新,并把上次同步的文件名记录在本地 /dbfile
处以与在线的文件内容作比对下图为以还原文件名为 dashboard-2023-04-23-13:08:37.tar.gz
作示例
bash /dashboard/restore.sh <文件名>
/dashboard
文件夹,压缩备份为 dashboard.tar.gz
文件
tar czvf dashboard.tar.gz /dashboard
dashboard.tar.gz
/dashboard/
|-- app # 哪吒面板主程序
|-- argo.json # Argo 隧道 json 文件,记录着使用隧道的信息
|-- argo.yml # Argo 隧道 yml 文件,用于在一同隧道下,根据不同域名来分流 web, gRPC 和 ssh 协议的作用
|-- backup.sh # 备份数据脚本
|-- restore.sh # 还原备份脚本
|-- renew.sh # 在线更新备份和还原文件的脚本
|-- dbfile # 记录最新的还原或备份文件名
|-- resource # 面板主题、语言和旗帜等资料的文件夹
|-- data
| |-- config.yaml # 哪吒面板的配置,如 Github OAuth2 / gRPC 域名 / 端口 / 是否启用 TLS 等信息
| `-- sqlite.db # SQLite 数据库文件,记录着面板设置的所有 severs 和 cron 等信息
|-- entrypoint.sh # 主脚本,容器运行后执行
|-- nezha.csr # SSL/TLS 证书签名请求
|-- nezha.key # SSL/TLS 证书的私钥信息
|-- nezha.pem # SSL/TLS 证书文件
|-- cloudflared # Cloudflare Argo 隧道主程序
|-- grpcwebproxy # gRPC 反代主程序
|-- caddy # Caddy 主程序
|-- Caddyfile # Caddy 配置文件
`-- nezha-agent # 哪吒客户端,用于监控本地 localhost