#!/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 </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