哪吒 v1 部署笔记

哪吒 v1 部署笔记

本文部署非官方版本,是 yumusb 大佬修改的版本,只需要一个域名,使用 cf argo 隧道反代。本文讲解部署全过程,不含哪吒面板的进阶设置,如有需要请参考官方文档。

相关资源

必须一个 cf 账号并注册 cf 隧道;必须一个 github 账号;必须一个托管在 cf 上的域名,下文以 222333.xyz 为例;一台 vps,内存最好不要低于 512m

准备工作

Github 准备

  • fork 上文列出的仓库 https://github.com/yumusb/nezha-new
  • 设置 Github auth (非必须步骤,但是考虑安全性,建议设置)
    • 登录 Github 后,依次点击:右上角图像 → settings → 左下角 Developer settings → 左上角 OAuth Apps → 右上角 New OAuth App 新建一个 OAuth 认证程序
    • 依次填写以下内容,其他保持默认:
    • Application name = 随意
    • Homepage URL = https://你计划用于登录面板的域名,完整示例:https://nezha.222333.xyz
    • Authorization callback URL = 哪吒面板认证回调地址,以 https 开头,在 https://你计划用于登录面板的域名 后面加上 /api/v1/oauth2/callback,完整示例:https://nezha.222333.xyz/api/v1/oauth2/callback
    • 记录 Client ID
    • 生成一个 Client secrets 并记录

CF 准备

  • 访问 Cloudflare One
  • 依次点击:左侧 网络 → Tunnels → 创建隧道,隧道类型选择 Cloudflared,下一步,依次填写:
  • 隧道名称:随意,如 Nezha-V1
  • 获取隧道 token:一串以 ey 开头的很长的一段字符串,记录下来
  • 添加公共主机名
    • 子域名 = 随意,示例:nezha
    • 域 = 选择你托管的域名,例如 222333.xyz
    • 路径 = 留空
    • 服务类型 = HTTP
    • URL = nginx:80

开始部署

  • 登录 vps,安装 docker 环境
1
sudo wget -qO- https://get.docker.com/ | bash
  • 执行命令 docker --version 验证 docker 环境是否安装成功
  • 执行以下命令克隆项目到 vps
1
git clone https://github.com/yumusb/nezha-new.git  
  • 通过 ssh 自带的 sftp 工具,进入 /root/nezha-new 目录,编辑以下文件并保存
    • .env 文件
1
2
3
4
5
6
7
8
TUNNEL_TOKEN=eyJhIjoiMWFmODZjMzNiY  # 改为 cf 隧道的 token 值
TELEGRAM_BOT_TOKEN=7654321:ABCDEFG # 改为你自己的tg机器人token
TELEGRAM_CHAT_ID=7654321 # 改为你自己的tg机器人id
GITHUB_USER=xxx # 改为你自己的github用户名
GITHUB_TOKEN=xxxxx # 改为你自己的github token
# 设置一个私有仓库用于存放备份,并将下面的GIT_REMOTE_URL 改为你的私有库,不要漏掉 .git
GIT_REMOTE_URL=https://github.com/xxx/xxx.git
CRON_SCHEDULE=0 */4 * * * # 4小时自动备份一次,无需修改
  • compose.yml 文件,将最后一段的 # 全部删除,以开启 自动备份
1
2
3
4
5
6
7
8
9
10
# backup:
# image: ghcr.io/yumusb/autobackup:latest
# restart: always
# volumes:
# - ./:/app
# environment:
# - GITHUB_USER
# - GITHUB_TOKEN
# - GIT_REMOTE_URL
# - CRON_SCHEDULE
  • 依次执行以下命令
1
2
3
cd /root/nezha-new
docker compose pull
docker compose up -d
  • 进入 /root/nezha-new/data 目录 cd /root/nezha-new/data,修改 config.yaml 文件,在最后面加入以下内容,保存
1
2
3
4
5
6
7
8
9
oauth2:
GitHub:
clientid: "xxxxxxxxxx" # 改为你创建的Github auth app的 Client ID,不要漏掉""
clientsecret: "xxxxxxxxxx" # 改为你创建的 Client secrets,不要漏掉""
endpoint:
authurl: "https://github.com/login/oauth/authorize"
tokenurl: "https://github.com/login/oauth/access_token"
userinfourl: "https://api.github.com/user"
useridpath: "id"
  • 依次运行一下命令,重启 docker 并检查 docker 运行状态
1
2
sudo service docker restart
sudo service docker status

基础设置

  • 访问 https://nezha.222333.xyz,进入面板
  • 首次登录输入默认的用户名(admin)和密码(admin)
  • 依次点击 右上角头像 → 个人信息 → 更新个人资料,修改用户名和密码
  • 点击 Oauth2 bindings 下面 github bind,绑定 github 登录
  • 重新登录哪吒面板,点击 右上角头像 → 系统设置,往下拉,找到 Agent对接地址【域名/IP:端口】,填写 nezha.222333.xyz:443(即你的哪吒面板域名:443 端口),并勾选 Agent 使用 TLS 连接
  • 访问 https://nezha.222333.xyz/dashboard,点击安装命令,选择对应系统,会生成 agent 客户端的一键安装脚本
  • ssh 登录需要监控的 vps,粘贴上面生成的 agent 脚本,回车执行即可

image.png

需要注意的几点

  • 系统设置里的 真实IP请求头 建议保持默认,不要修改,网上的教程大多数是修改为 CF-Connecting-IPnz-realip,修改后会导致哪吒自带的 web应用防火墙 拦截你的 ip 导致无法访问面板。坏处是不设置真实 ip 请求头会导致无法识别访问者的真实 ip。由于我的教程已经开启了 github auth 验证,可以在个人信息设置中 禁止使用密码登录,而只使用 github 登录,安全性有保障,真实 IP 请求头的设置就并非必要了
  • 如果你因为设置了真实 IP 请求头而导致无法访问,不要急,ssh 登录部署面板的 vps,执行一下命令清理全部用户,从而重置设置
1
2
3
sudo apt install sqlite3  # 安装 sqlite3
sqlite3 –version # 查看sqlite3是否已经安装并显示版本号
sqlite3 /root/nezha-new/data/sqlite.db "DELETE FROM users;" # 删除所有用户
  • 关于自动生成的 agent 命令,v0 和 v1 完全不同,v0 会对每个 agent 客户机生成一个 token,而 v1 只有一个 agent token,所有被监控端都使用一个 token,因此你可以将生成的安装命令保存起来,直接在新的 agent 机器上安装。我推荐的 electerm 工具支持批量执行命令,先将需要安装的 vps 全部登录,然后在底部输入 agent 安装脚本,点击回车,即可在所有客户机上全部安装
  • 安装 v1 的 agent 前,需要先卸载 v0 版本的 agent
1
2
cd /opt/nezha/agent && ./nezha-agent service uninstall
rm -rf /opt/nezha/agent/

#cloudflare #github #面板 #docker