B5 switchover: sing-box is the only runtime payload
- master getConfig serves singbox_config only; xray payload retired (build failure is a hard 500, agent keeps its current state) - agent: singbox_config arrival is the switch signal — flush xray tail traffic, stop xray, activate sing-box; activation failure restarts xray from the last payload and retries next poll; a legacy master (no sing-box keys) keeps the xray path untouched - sing-box log rotation: 8 MiB copy-truncate with one .1 kept, checked on the traffic cycle - install-agent.sh: xray/geo downloads and checks removed, agent binary now from the V2.0.0 release, self-check is sing-box binary + check on the live config - display version default 2.0.0 (master V2.0.0 / agent A2.0.0)
This commit is contained in:
+24
-47
@@ -27,7 +27,6 @@ error() { echo -e "${RED}[ERROR]${NC} $1"; exit 1; }
|
||||
|
||||
[[ $EUID -ne 0 ]] && error "请用 root 运行"
|
||||
command -v curl >/dev/null 2>&1 || error "缺少 curl,请先安装 curl 后重跑"
|
||||
command -v unzip >/dev/null 2>&1 || error "缺少 unzip,请先安装 unzip 后重跑"
|
||||
|
||||
MASTER=""; TOKEN=""; NAME=""
|
||||
while [[ $# -gt 0 ]]; do
|
||||
@@ -72,11 +71,13 @@ case "$ARCH" in
|
||||
*) error "不支持的架构: $ARCH (仅支持 amd64/arm64)";;
|
||||
esac
|
||||
|
||||
# 发行下载基址(本仓 Gitea Releases,发行 tag V1.0.0):agent 二进制、xray、geo
|
||||
# 全部走自建镜像,不再依赖 GitHub CDN(部分节点极慢甚至僵死,见第 15 条)。
|
||||
RELEASE_BASE="https://git.881218.xyz/rogue/3x-ui-agent/releases/download/V1.0.0"
|
||||
# 发行下载基址(本仓 Gitea Releases,发行 tag V2.0.0):agent 二进制走
|
||||
# 自建镜像,不再依赖 GitHub CDN(部分节点极慢甚至僵死,见第 15 条)。
|
||||
# sing-box 核心在 NexusGate 仓的专用发行里(见下方 SINGBOX_BASE)。
|
||||
# 注意:本脚本是 V2 版——只装 sing-box 运行时;主控未升 V2 前不要用它
|
||||
# 重装节点(节点升级走面板一键更新,不需要本脚本)。
|
||||
RELEASE_BASE="https://git.881218.xyz/rogue/3x-ui-agent/releases/download/V2.0.0"
|
||||
XUI_URL="${XUI_URL:-${RELEASE_BASE}/x-ui-linux-${BIN_ARCH}}"
|
||||
XRAY_VER="26.6.27"
|
||||
|
||||
ROOT="${XUI_ROOT:-}"
|
||||
XUI_HOME="${ROOT}/usr/local/x-ui"
|
||||
@@ -94,34 +95,15 @@ curl -fL -o "${AGENT_BIN}.new" "$XUI_URL" || error "agent 下载失败: $XUI_URL
|
||||
chmod +x "${AGENT_BIN}.new"
|
||||
mv -f "${AGENT_BIN}.new" "${AGENT_BIN}"
|
||||
|
||||
info "下载 xray v${XRAY_VER}..."
|
||||
cd "${XUI_HOME}/bin"
|
||||
case "$BIN_ARCH" in
|
||||
amd64) XRAY_ZIP="Xray-linux-64.zip";;
|
||||
arm64) XRAY_ZIP="Xray-linux-arm64-v8a.zip";;
|
||||
esac
|
||||
# 每一步都显式判失败并报错退出(第 17 条):历史教训——下载/解压失败曾被
|
||||
# && 链条吞掉,脚本带病走完报成功,结果 bin 里没有 xray、入站全断而面板显在线。
|
||||
curl -fL -o "$XRAY_ZIP" "${RELEASE_BASE}/${XRAY_ZIP}" || error "xray 下载失败: ${RELEASE_BASE}/${XRAY_ZIP}"
|
||||
[[ -s "$XRAY_ZIP" ]] || error "xray 下载得到空文件: ${RELEASE_BASE}/${XRAY_ZIP}"
|
||||
unzip -o -q "$XRAY_ZIP" xray || error "xray 解压失败: $XRAY_ZIP"
|
||||
mv xray "xray-linux-${BIN_ARCH}" || error "xray 落位失败(解压产物缺失)"
|
||||
chmod +x "xray-linux-${BIN_ARCH}"
|
||||
rm -f "$XRAY_ZIP"
|
||||
|
||||
info "下载 geo 文件..."
|
||||
curl -fL -o geoip.dat "${RELEASE_BASE}/geoip.dat" || error "geoip 下载失败: ${RELEASE_BASE}/geoip.dat"
|
||||
[[ -s geoip.dat ]] || error "geoip 下载得到空文件: ${RELEASE_BASE}/geoip.dat"
|
||||
curl -fL -o geosite.dat "${RELEASE_BASE}/geosite.dat" || error "geosite 下载失败: ${RELEASE_BASE}/geosite.dat"
|
||||
[[ -s geosite.dat ]] || error "geosite 下载得到空文件: ${RELEASE_BASE}/geosite.dat"
|
||||
cd - >/dev/null
|
||||
|
||||
# 第 6 条 B3 起 agent 为双能力:除 xray 外再装 sing-box 核心(自编
|
||||
# v1.13.21,with_v2ray_api with_utls with_quic),主控下发 sing-box
|
||||
# 配置时即由它承载。sing-box 资产在 NexusGate 仓的专用发行里(与
|
||||
# NexusGate 共用同一自编件)。其 version 输出为 unknown(自编件无
|
||||
# 版本戳),故另写版本记录文件供 agent 遥测读取。xray 与 geo 的
|
||||
# 下载暂保留——现行运行时仍是 xray,B5 正式切换后才在本脚本移除。
|
||||
# 第 6 条 B5 正式切换:agent 只装 sing-box 核心(自编 v1.13.21,
|
||||
# with_v2ray_api with_utls with_quic),xray 与 geo 下载已移除——
|
||||
# sing-box 配置零 geo 引用,节点不再需要 geo 文件;xray 本体亦不再
|
||||
# 随装。存量节点 bin 里已有的 xray/geo 文件本脚本不删(回滚旧主控时
|
||||
# 仍可用)。sing-box 资产在 NexusGate 仓的专用发行里(与 NexusGate
|
||||
# 共用同一自编件)。其 version 输出为 unknown(自编件无版本戳),
|
||||
# 故另写版本记录文件供 agent 遥测读取。
|
||||
# 每一步都显式判失败并报错退出(第 17 条):历史教训——下载失败曾被
|
||||
# && 链条吞掉,脚本带病走完报成功,结果核心缺失、入站全断而面板显在线。
|
||||
SINGBOX_VER="1.13.21"
|
||||
SINGBOX_BASE="https://git.881218.xyz/rogue/NexusGate/releases/download/sing-box-v${SINGBOX_VER}"
|
||||
SINGBOX_URL="${SINGBOX_URL:-${SINGBOX_BASE}/nexusgate-sing-box-linux-${BIN_ARCH}}"
|
||||
@@ -132,21 +114,11 @@ chmod +x "${XUI_HOME}/bin/sing-box-linux-${BIN_ARCH}.new"
|
||||
mv -f "${XUI_HOME}/bin/sing-box-linux-${BIN_ARCH}.new" "${XUI_HOME}/bin/sing-box-linux-${BIN_ARCH}"
|
||||
printf '%s\n' "$SINGBOX_VER" > "${XUI_HOME}/bin/sing-box.version"
|
||||
|
||||
# 安装收尾自检(第 17 条):文件在不等于能用——xray 本体须存在、可执行、
|
||||
# version 能真实跑通;geo 须存在且非空;agent 本体须可执行。任一不过即
|
||||
# 报错退出并指出缺什么,不许带病进入写配置/起服务阶段。
|
||||
# 安装收尾自检(第 17 条):文件在不等于能用——sing-box 本体须存在、
|
||||
# 可执行、version 能真实跑通;若已有生效配置,须过 sing-box check;
|
||||
# agent 本体须可执行。任一不过即报错退出并指出缺什么,不许带病进入
|
||||
# 写配置/起服务阶段。
|
||||
self_check() {
|
||||
local xray_bin="${XUI_HOME}/bin/xray-linux-${BIN_ARCH}"
|
||||
[[ -f "$xray_bin" ]] || error "自检失败:缺少 xray 本体 ${xray_bin}"
|
||||
[[ -x "$xray_bin" ]] || error "自检失败:xray 本体不可执行 ${xray_bin}"
|
||||
local ver_out
|
||||
if ! ver_out=$("$xray_bin" version 2>/dev/null); then
|
||||
error "自检失败:xray 本体无法运行(${xray_bin} version 退出非零)"
|
||||
fi
|
||||
[[ -n "$ver_out" ]] || error "自检失败:xray version 无输出(${xray_bin})"
|
||||
info "自检通过:$(printf '%s' "$ver_out" | head -n 1)"
|
||||
[[ -s "${XUI_HOME}/bin/geoip.dat" ]] || error "自检失败:geoip.dat 缺失或为空(${XUI_HOME}/bin/geoip.dat)"
|
||||
[[ -s "${XUI_HOME}/bin/geosite.dat" ]] || error "自检失败:geosite.dat 缺失或为空(${XUI_HOME}/bin/geosite.dat)"
|
||||
local sb_bin="${XUI_HOME}/bin/sing-box-linux-${BIN_ARCH}"
|
||||
[[ -x "$sb_bin" ]] || error "自检失败:sing-box 本体缺失或不可执行 ${sb_bin}"
|
||||
local sb_out
|
||||
@@ -155,6 +127,11 @@ self_check() {
|
||||
fi
|
||||
[[ -n "$sb_out" ]] || error "自检失败:sing-box version 无输出(${sb_bin})"
|
||||
info "sing-box 自检通过:$(printf '%s' "$sb_out" | head -n 1)(版本记录 ${SINGBOX_VER})"
|
||||
local sb_cfg="${XUI_HOME}/bin/config-singbox.json"
|
||||
if [[ -s "$sb_cfg" ]]; then
|
||||
"$sb_bin" check -c "$sb_cfg" >/dev/null 2>&1 || error "自检失败:现行 sing-box 配置未过 check(${sb_cfg})"
|
||||
info "sing-box 配置自检通过:${sb_cfg}"
|
||||
fi
|
||||
[[ -x "$AGENT_BIN" ]] || error "自检失败:agent 二进制不可执行 ${AGENT_BIN}"
|
||||
}
|
||||
self_check
|
||||
|
||||
Reference in New Issue
Block a user