Files
dock/xu
2025-12-20 11:13:19 +08:00

110 lines
3.5 KiB
Bash
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.
#!/bin/bash
# =========================================================
# X-UI 多架构自动安装 - 容错增强版
# =========================================================
# 1. 基础环境自动修复(防止系统啥都没装)
prepare_environment() {
echo -e "\033[32m[1/5] 正在安装基础组件 (wget/curl/tar)...\033[0m"
if command -v apt-get >/dev/null 2>&1; then
apt-get update -y && apt-get install -y wget curl tar gzip ca-certificates || true
elif command -v yum >/dev/null 2>&1; then
yum install -y wget curl tar gzip ca-certificates || true
fi
}
# 2. 架构智能检测
detect_arch() {
echo -e "\033[32m[2/5] 检测系统架构...\033[0m"
local raw_arch=$(uname -m)
case "$raw_arch" in
x86_64) ARCH="amd64" ;;
aarch64|arm64) ARCH="arm64" ;;
i386|i486|i586|i686) ARCH="386" ;;
armv7l) ARCH="armv7" ;;
s390x) ARCH="s390x" ;;
*) echo "不支持的架构: $raw_arch"; exit 1 ;;
esac
}
# 3. 冗余下载方案如果源1失败尝试源2
download_xui() {
echo -e "\033[32m[3/5] 正在下载程序包...\033[0m"
local filename="x-ui-linux-${ARCH}.tar.gz"
local base_url="https://g1.vps7k7k.xyz/xui"
local success=false
# [cite_start]方案 A: 标准下载 [cite: 36, 38]
if wget --no-check-certificate -O "$filename" "${base_url}/${filename}" || \
curl -L -k -o "$filename" "${base_url}/${filename}"; then
success=true
fi
# [cite_start]方案 B: ARM64 特殊备份名下载 [cite: 12, 44]
if [ "$success" = false ] && [ "$ARCH" = "arm64" ]; then
echo "尝试 ARM64 备用链接..."
wget --no-check-certificate -O "$filename" "${base_url}/x-ui-linux-arm64%20(1).tar.gz" && success=true
fi
if [ "$success" = false ]; then
echo "错误:所有下载源均失效!"
exit 1
fi
}
# 4. 双引擎解压(防止 tar 版本过旧)
extract_xui() {
echo -e "\033[32m[4/5] 正在部署文件...\033[0m"
local file="x-ui-linux-${ARCH}.tar.gz"
mkdir -p /usr/local/x-ui
# [cite_start]方式 1: 直接解压 [cite: 52]
if ! tar -zxf "$file" -C /usr/local/; then
echo "标准解压失败,尝试备用引擎..."
# [cite_start]方式 2: 管道解压 [cite: 53]
gunzip -c "$file" | tar x -C /usr/local/
fi
# [cite_start]权限修复 [cite: 56, 61, 62]
chmod +x /usr/local/x-ui/x-ui /usr/local/x-ui/bin/xray-linux-* 2>/dev/null || true
[cite_start]ln -sf /usr/local/x-ui/x-ui /usr/bin/x-ui [cite: 68]
}
# [cite_start]5. 服务启动与初始化 [cite: 64, 70, 71]
finalize_install() {
echo -e "\033[32m[5/5] 正在初始化面板...\033[0m"
# [cite_start]强制写入服务文件,不依赖解压出的文件 [cite: 64]
cat > /etc/systemd/system/x-ui.service <<EOF
[Unit]
Description=x-ui Service
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/local/x-ui/
ExecStart=/usr/local/x-ui/x-ui
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable x-ui
systemctl restart x-ui
sleep 2
# [cite_start]自动配置默认账号密码 (3344/3344) [cite: 70, 71]
echo -e "9\n8443\ny" | x-ui >/dev/null 2>&1 || true
echo -e "6\ny\n3344\n3344\ny" | x-ui >/dev/null 2>&1 || true
echo -e "\033[36m安装完成面板端口: 8443账号密码均为 3344\033[0m"
}
# 执行
prepare_environment
detect_arch
download_xui
extract_xui
finalize_install