Files
sing-box-yg/serv00.yml
T

108 lines
6.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Keep Servers Alive
on:
#如使用保活网页,请不要启用cron,保持下面两行开头的#符号,以防止cron与网页保活重复运行造成进程爆满
#schedule:
# - cron: '0 */4 * * *' # 每4小时执行一次(私库每月500分钟运行时长,每天16分钟)
workflow_dispatch:
jobs:
keep_servers_alive:
runs-on: ubuntu-latest
env:
# serv00变量添加规则:
# RES(必填):n表示每次不重置部署,y表示每次重置部署。REP(必填):n表示不重置随机端口(三个端口留空),y表示重置端口(三个端口留空)。SSH_USER(必填)表示serv00账号名。SSH_PASS(必填)表示serv00密码。REALITY表示reality域名(留空表示serv00官方域名:你serv00账号名.serv00.net)。SUUID表示uuid(留空表示随机uuid)。TCP1_PORT表示vless的tcp端口(留空表示随机tcp端口)。TCP2_PORT表示vmess的tcp端口(留空表示随机tcp端口)。UDP_PORT表示hy2的udp端口(留空表示随机udp端口)。HOST(必填)表示登录serv00服务器域名。ARGO_DOMAIN表示argo固定域名(留空表示临时域名)。ARGO_AUTH表示argo固定域名token(留空表示临时域名)。
# 必填变量:RES、REP、SSH_USER、SSH_PASS、HOST
# 注意[]"",:这些符号不要乱删,按规律对齐
# 每行一个{serv00服务器},一个服务也可,末尾用,间隔,最后一个服务器末尾无需用,间隔
ACCOUNTS: >
[
{"RES":"n", "REP":"n", "SSH_USER":"你的serv00账号名", "SSH_PASS":"你的serv00账号密码", "REALITY":"你serv00账号名.serv00.net", "SUUID":"自设UUID", "TCP1_PORT":"vless的tcp端口", "TCP2_PORT":"vmess的tcp端口", "UDP_PORT":"hy2的udp端口", "HOST":"s1.serv00.com", "ARGO_DOMAIN":"", "ARGO_AUTH":""},
{"RES":"y", "REP":"y", "SSH_USER":"123456", "SSH_PASS":"7890000", "REALITY":"time.is", "SUUID":"73203ee6-b3fa-4a3d-b5df-6bb2f55073ad", "TCP1_PORT":"", "TCP2_PORT":"", "UDP_PORT":"", "HOST":"s16.serv00.com", "ARGO_DOMAIN":"你的argo固定域名", "ARGO_AUTH":"eyJhIjoiOTM3YzFjYWI88552NTFiYTM4ZTY0ZDQzRmlNelF0TkRBd1pUQTRNVEJqTUdVeCJ9"}
]
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Install required packages
run: |
sudo apt-get update
sudo apt-get install -y sshpass curl jq
- name: Process each account
run: |
run_remote_command() {
local RES=$1
local REP=$2
local SSH_USER=$3
local SSH_PASS=$4
local REALITY=${5}
local SUUID=$6
local TCP1_PORT=$7
local TCP2_PORT=$8
local UDP_PORT=$9
local HOST=${10}
local ARGO_DOMAIN=${11}
local ARGO_AUTH=${12}
if [ -z "${ARGO_DOMAIN}" ]; then
echo "Argo域名为空,申请Argo临时域名"
else
echo "Argo已设置固定域名:${ARGO_DOMAIN}"
fi
remote_command="export reym=$REALITY UUID=$SUUID vless_port=$TCP1_PORT vmess_port=$TCP2_PORT hy2_port=$UDP_PORT reset=$RES resport=$REP ARGO_DOMAIN=${ARGO_DOMAIN} ARGO_AUTH=${ARGO_AUTH} && bash <(curl -Ls https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00keep.sh)"
echo "Executing remote command on $HOST as $SSH_USER with command: $remote_command"
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$HOST" "$remote_command"
}
echo "*****************************************************"
echo "*****************************************************"
echo "甬哥Github项目 github.com/yonggekkk"
echo "甬哥Blogger博客 ygkkk.blogspot.com"
echo "甬哥YouTube频道 www.youtube.com/@ygkkk"
echo "自动远程部署并保活Serv00三合一协议脚本【Github】"
echo "版本:V25.2.26"
echo "*****************************************************"
echo "*****************************************************"
count=0
for account in $(echo "${ACCOUNTS}" | jq -c '.[]'); do
count=$((count+1))
RES=$(echo $account | jq -r '.RES')
REP=$(echo $account | jq -r '.REP')
SSH_USER=$(echo $account | jq -r '.SSH_USER')
SSH_PASS=$(echo $account | jq -r '.SSH_PASS')
REALITY=$(echo $account | jq -r '.REALITY')
SUUID=$(echo $account | jq -r '.SUUID')
TCP1_PORT=$(echo $account | jq -r '.TCP1_PORT')
TCP2_PORT=$(echo $account | jq -r '.TCP2_PORT')
UDP_PORT=$(echo $account | jq -r '.UDP_PORT')
HOST=$(echo $account | jq -r '.HOST')
ARGO_DOMAIN=$(echo $account | jq -r '.ARGO_DOMAIN')
ARGO_AUTH=$(echo $account | jq -r '.ARGO_AUTH')
if sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$HOST" -q exit; then
echo "🎉恭喜!✅第【$count】台服务器连接成功!🚀服务器地址:$HOST ,账户名:$SSH_USER"
if [ -z "${ARGO_DOMAIN}" ]; then
check_process="ps aux | grep '[c]onfig' > /dev/null && ps aux | grep [l]ocalhost:$TCP2_PORT > /dev/null"
else
check_process="ps aux | grep '[c]onfig' > /dev/null && ps aux | grep '[t]oken $ARGO_AUTH' > /dev/null"
fi
if ! sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$HOST" "$check_process" || [[ "$RES" =~ ^[Yy]$ ]]; then
echo "⚠️检测到主进程或者argo进程未启动,或者执行重置"
echo "⚠️现在开始修复或重置部署……请稍等"
output=$(run_remote_command "$RES" "$REP" "$SSH_USER" "$SSH_PASS" "${REALITY}" "$SUUID" "$TCP1_PORT" "$TCP2_PORT" "$UDP_PORT" "$HOST" "${ARGO_DOMAIN}" "${ARGO_AUTH}")
echo "远程命令执行结果:$output"
else
echo "🎉恭喜!✅检测到所有进程正常运行中 "
SSH_USER_LOWER=$(echo "$SSH_USER" | tr '[:upper:]' '[:lower:]')
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$HOST" "
echo \"配置显示如下:\"
cat $HOME/domains/${SSH_USER_LOWER}.serv00.net/logs/list.txt
echo \"====================================================\"
"
fi
else
echo "===================================================="
echo "💥杯具!❌第【$count】台服务器连接失败!🚀服务器地址:$HOST ,账户名:$SSH_USER"
echo "⚠️可能账号名、密码、服务器名称输入错误,或者当前服务器在维护中"
echo "===================================================="
fi
done