#!/bin/bash # ========================================================= # X-UI 多架构全自动增强版 - 咸鱼咆哮优化 # 特点:多源下载备份、强制环境修复、自动容错 # ========================================================= set -e # 1. 变量定义与多源地址 [cite: 1, 2, 11] PANEL_PORT="8443" PANEL_USERNAME="3344" PANEL_PASSWORD="3344" # 下载源 A (你的私服) 与 下载源 B (GitHub 镜像或备用) BASE_URL_A="https://g1.vps7k7k.xyz/xui" BASE_URL_B="https://ghproxy.com/https://github.com/MHSanaei/3x-ui/releases/latest/download" # 备用示例 # 2. 基础环境强力自愈 (解决“系统啥都没装”的问题) [cite: 21, 26, 29] prepare_env() { echo -e "\033[32m[1/6] 检查基础组件...\033[0m" # 自动识别包管理器并更新 [cite: 26, 29, 31] 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 } # 3. 架构精准识别 [cite: 9, 10, 88] get_arch() { echo -e "\033[32m[2/6] 检测系统架构...\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 } # 4. 智能多级下载 (方案1失败自动切换方案2) [cite: 36, 37, 39, 44] download_package() { echo -e "\033[32m[3/6] 开始下载安装包 (多线备选)...\033[0m" local file="x-ui-linux-${ARCH}.tar.gz" local success=false # 方案 1: 主站下载 [cite: 37, 39] echo "尝试主下载源: $BASE_URL_A" if wget --no-check-certificate -O "$file" "${BASE_URL_A}/${file}" || \ curl -L -k -o "$file" "${BASE_URL_A}/${file}"; then success=true fi # 方案 2: 备用源 (如果方案1失败且是arm64,尝试特殊后缀) [cite: 44, 45, 48] if [ "$success" = false ] && [ "$ARCH" = "arm64" ]; then echo "主源失败,尝试 ARM64 特殊备份名..." wget --no-check-certificate -O "$file" "${BASE_URL_A}/x-ui-linux-arm64%20(1).tar.gz" && success=true fi if [ "$success" = false ]; then echo -e "\033[31m[错误] 所有下载源均失效!请检查网络。\033[0m" exit 1 fi } # 5. 双引擎解压与部署 [cite: 52, 53, 58, 60] install_files() { echo -e "\033[32m[4/6] 部署文件 (双引擎解压)...\033[0m" local file="x-ui-linux-${ARCH}.tar.gz" rm -rf /usr/local/x-ui /usr/bin/x-ui # 尝试方式 A: 标准解压 [cite: 52] if ! tar -zxf "$file" -C /usr/local/; then # 尝试方式 B: 兼容解压 [cite: 53] gunzip -c "$file" | tar x -C /usr/local/ fi # 结构标准化 [cite: 58, 60] cd /usr/local/x-ui chmod +x x-ui bin/xray-linux-* 2>/dev/null || true ln -sf /usr/local/x-ui/x-ui /usr/bin/x-ui [cite: 63, 68] } # 6. 服务配置与自动防火墙 [cite: 64, 73, 75] setup_service() { echo -e "\033[32m[5/6] 启动服务与端口开放...\033[0m" # 写入 systemd 服务 [cite: 64] cat > /etc/systemd/system/x-ui.service </dev/null; then ufw allow ${PANEL_PORT}/tcp; fi if command -v iptables >/dev/null; then iptables -I INPUT -p tcp --dport ${PANEL_PORT} -j ACCEPT; fi } # 7. 自动初始化配置 [cite: 69, 70, 71] init_config() { echo -e "\033[32m[6/6] 配置面板信息...\033[0m" sleep 3 # 使用 x-ui 自带指令修改端口、账号、密码 [cite: 70, 71] echo -e "9\n${PANEL_PORT}\ny" | x-ui >/dev/null 2>&1 || true echo -e "6\ny\n${PANEL_USERNAME}\n${PANEL_PASSWORD}\ny" | x-ui >/dev/null 2>&1 || true # 最后验证 [cite: 81] if systemctl is-active --quiet x-ui; then echo -e "\033[36m" echo "=================================================" echo "🎊 X-UI 多架构安装成功!" echo "🌐 面板: http://$(curl -s ipv4.icanhazip.com):${PANEL_PORT}" echo "👤 账号: ${PANEL_USERNAME}" echo "🔑 密码: ${PANEL_PASSWORD}" echo "=================================================" echo -e "\033[0m" else echo -e "\033[31m服务启动失败,请检查运行日志: journalctl -u x-ui\033[0m" [cite: 78] fi } # 顺序执行 prepare_env get_arch download_package install_files setup_service init_config