全面解析 serv00 四合一脚本搭建与保活

全面解析 serv00 四合一脚本搭建与保活

eooce 大佬已经有非常完善的 #serv00 搭建脚本,包括无交互、有交互两种方式,并给出了通过 #vps #保活 的方法和一键脚本,详见 项目仓库。而我个人的习惯需要 socks5 协议给 cf 节点做反代,因此在老王脚本的基础上做了一些修改,现将这些 修改版脚本 做一个简单的说明,相关文件在 我的仓库

我修改的脚本全部为 vmess+ws / vmess+ws+argo / hy2 / socsk5 四协议,没有 tuic 协议,需要在 serv 上开启两个 tcp 端口(vmess 和 socks5)和一个 udp 端口(hy2)


无交互一键安装方式

1
2
3
4
5
VMESS_PORT=填vmess端口 HY2_PORT=填hy2端口 SOCKS_PORT=填socks5端口 \
SOCKS_USER=\"填sock5用户名\" SOCKS_PASS=\"填socks5密码\" \
ARGO_DOMAIN=填argo域名 ARGO_AUTH=\"填argo的token或json\" \
NEZHA_SERVER=填哪吒面板域名 NEZHA_PORT=填哪吒agent通信端口 NEZHA_KEY=填哪吒agnet密钥 \
bash <(curl -Ls https://raw.githubusercontent.com/yutian81/serv00-ct8-ssh/main/vps_sb00_alive/sb00-sk5.sh)

一键安装,无需任何交互,安装完成后会生成节点链接

交互式安装方式

1
curl -s https://raw.githubusercontent.com/yutian81/serv00-ct8-ssh/main/sb_serv00_socks.sh -o sb00.sh && bash sb00.sh  

根据提示输入相关参数,安装完成后会生成节点链接

如果使用交互式安装方式,脚本会在工作目录 /home/${USERNAME}/logs 目录下生成自动生成 两个可执行脚本一个配置文件,用于一键远程重启相关进程,而无需在服务器掉线时重新安装节点脚本

文件名 用途
nezha.sh 重启哪吒进程的脚本
argo.sh 重启 argo 隧道进程的脚本
config.json singbox 内核配置文件,重启 singbox 内核需要

节点保活

这里提到的所有保活方式都基于使用了我的 交互式脚本 安装节点的情况,不支持其他人的节点脚本。当然,你可以 fork 我的仓库后自定修改自行适配

方式一:SSH 连接手动启动

如果你是纯小白,不会用 github #action 和 vps 保活,那么推荐这种方式,最简单

如果你已经使用我的 交互式脚本 安装好了节点,但是服务器重启或者杀掉了后台进程及 corn 任务导致节点或哪吒掉线,打开 ssh 工具连上掉线的服务器,输入 bash sb00.sh,回车,进入到脚本主菜单,选择 4,即可重启所有进程,重新恢复连接

image.png

主菜单选项 2 为卸载或清理服务器,进入后,选择 1,仅卸载 singbox、哪吒、argo;选择 2,将会把服务器重置为初始状态;选择 0,返回到主菜单

方式二:GitHub Action 自动保活

action 保活和 cm 教程一样,action 代码也来自于 cm,需要设置 action 的仓库机密变量,变量名:ACCOUNTS_JSON,变量值示例:

1
2
3
4
5
[
{"username": "用户名1", "password": "密码1", "panel": "panel3.serv00.com", "ssh": "s3.serv00.com"},
{"username": "用户名2", "password": "密码2", "panel": "panel8.serv00.com", "ssh": "s8.serv00.com"},
{"username": "用户名3", "password": "密码3", "panel": "panel9.serv00.com", "ssh": "s9.serv00.com"}
]

最后一组数组后面没有 ,

具体教程可以看 cm博客教程的保活章节,这里不赘述

设置好后 手动执行一次 action,之后 GitHub 会每 4 小时自定登录一次服务器,检查 corn 任务是否存在,如果不存在,会自动重新添加 corn 任务,然后 corn 会在 10 分钟后拉起节点进程

执行 action 前,先删除仓库中 .github/workflows/check_sb_cron.yaml~ 文件名后缀的 ~ 符号,正确的文件名是 check_sb_cron.yaml

方式三:VPS 自动保活

如果你正好有一台 vps(不是 serv00 服务器),且有简单的动手能力,那么我建议使用 方式三,它能实现服务器 掉线后 5 分钟内恢复,且不依赖于 corn 任务,即使没有设置 corn 也不影响

脚本无法直接一键安装,需要 fork 后 修改相关变量 再安装,脚本地址

准备工作

  • 将 serv00 的登录信息和无交互脚本的外部变量保存在一个 json 文件中,命名为 sb00ssh.json,其格式如下,注意最后一组 {} 后面没有 ,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[
{
"HOST": "panel3.serv00.com",
"SSH_USER": "用户名",
"SSH_PASS": "密码",
"VMESS_PORT": "tcp端口1",
"SOCKS_PORT": "tcp端口2",
"HY2_PORT": "udp端口",
"SOCKS_USER": "socks用户名",
"SOCKS_PASS": "socks密码",
"ARGO_DOMAIN": "argo域名",
"ARGO_AUTH": "argo的token",
"NEZHA_SERVER": "哪吒域名或ip",
"NEZHA_PORT": "哪吒通信端口",
"NEZHA_KEY": "哪吒密钥"
},
{
"HOST": "s4.serv00.com",
"SSH_USER": "用户名",
"SSH_PASS": "密码",
"VMESS_PORT": "tcp端口1",
"SOCKS_PORT": "tcp端口2",
"HY2_PORT": "udp端口",
"SOCKS_USER": "socks用户名",
"SOCKS_PASS": "socks密码",
"ARGO_DOMAIN": "argo域名",
"ARGO_AUTH": "argo的token",
"NEZHA_SERVER": "哪吒域名或ip",
"NEZHA_PORT": "哪吒通信端口",
"NEZHA_KEY": "哪吒密钥"
},
{
"HOST": "s5.serv00.com",
"SSH_USER": "用户名",
"SSH_PASS": "密码",
"VMESS_PORT": "tcp端口1",
"SOCKS_PORT": "tcp端口2",
"HY2_PORT": "udp端口",
"SOCKS_USER": "socks用户名",
"SOCKS_PASS": "socks密码",
"ARGO_DOMAIN": "argo域名",
"ARGO_AUTH": "argo的token",
"NEZHA_SERVER": "哪吒域名或ip",
"NEZHA_PORT": "哪吒通信端口",
"NEZHA_KEY": "哪吒密钥"
}
]
  • 将这个文件保存到你的 GitHub gist,设置为 私密,否则服务器信息会泄露,或者其他可以获取文件直链的网盘,如 谷歌云盘CF-R2存储桶GitHub 私有仓库 等,获得一个 直链地址(这里以 github gist 为例),并将链接地址 复制备用。私有仓库获取直链的方法可以看 cm的教程

    • 登录你的 github,点开gist主页
    • 填入以下信息——片段描述:serv00 服务器配置信息;文件名:sb00ssh.json;文件内容:将上述改好的代码复制进去;点击右下角 创建私密片段
      image.png
    • 点击右上角源码,获得一个直链地址,原始地址是这样的:https://gist.githubusercontent.com/yutian81/87687b9a64adb2fd1b33bc8894e11e2d/raw/40c2d12e7a02fb0f0d6fc4b02865a702752f2f88/sb00ssh.json
      image.png
    • 删除上面原始地址中 raw文件名 之间的随机字符,得到一个可外部访问的 固定地址,这个地址就是我们需要的 gist 直链地址,复制备用
    1
    https://gist.githubusercontent.com/yutian81/87687b9a64adb2fd1b33bc8894e11e2d/raw/sb00ssh.json

    image.png

  • 打开你 fork 的项目,将脚本文件 vps_sb00_alive/sb00_alive.sh 复制一份到你自己的 GitHub gist,并修改以下变量后保存:

变量 内容
VPS_JSON_URL 上文所述服务器配置信息 sb00ssh.json 的 gist 直链地址
NEZHA_URL 你的哪吒面板地址,必须带 http(s):// 前缀
NEZHA_APITOKEN 你的哪吒面板的 API TOKEN
NEZHA_AGENT_ID 示例:(“13” “14” “17” “23” “24” “26” “27”),你的哪吒探针的 ID 号,按示例只改数字,不要删除 ()""

必须将变量修改为你自己的信息,变量内容中前后的 "" 不要删除,未列出的变量不要动

  • 修改完成后,按上面获取直链的方法,同样获得 sb00_alive.shgist直链地址,格式应该是类似这样的:
1
https://gist.githubusercontent.com/yutian81/87687b9a64adb2fd1b33bc8894e11e2d/raw/sb00_alive.sh
  • 获取你自己的 一键安装脚本
1
2
3
curl -Ls -o sb00_alive.sh 替换为你sb00_alive.sh的gist直链地址 && chmod +x sb00_alive.sh && bash sb00_alive.sh
# 或者
bash <(curl -Ls 替换为你sb00_alive.sh的gist直链地址)

运行脚本,实现 VPS 自动保活

  • 打开 ssh 连接工具,连上一台 VPS。注意:是 vps,不是 serv00 服务器
  • 粘贴上述 一键安装脚本,点击回车运行,脚本会自动检查各 serv00 服务器的在线情况,若离线会自动重启节点进程。脚本会把本身自动加入到 vps 的计划任务里,每 5 分钟就会自动运行一次
    serv00-vps保活.png

全文完

其实方式三:VPS 自动保活是支持老王的无交互节点脚本的,具体看我脚本文件内的注释,将代码约 133 行 bash <(curl -Ls ${REBOOT_URL}) 替换为 bash <(curl -Ls ${SCRIPT_URL}),并在前面的全局变量中 启用 SCRIPT_URL 变量,内容定义为老王的无交互脚本直链地址

感兴趣的可以自行研究自行适配