Compare commits
15 Commits
Goedge-cdn
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 4355fe7239 | |||
| 9a1ff4a420 | |||
| 629c840179 | |||
| f927f60163 | |||
| 44b972bc72 | |||
| 18fe538999 | |||
| f3655170ce | |||
| 27bc03f1f5 | |||
| e05746e8cd | |||
| dc1fa22cc5 | |||
| 611cc58734 | |||
| 14f072a53e | |||
| e11ff6d8dc | |||
| b87cdb5bc1 | |||
| 1814fd6348 |
103
02
103
02
@@ -1,23 +1,96 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# search_all_videos.sh
|
|
||||||
|
|
||||||
echo "开始全面搜索视频文件..."
|
# ================= 配置区域 =================
|
||||||
echo "=========================="
|
# 源代码位置 (刚才手动安装的位置)
|
||||||
|
SOURCE_DIR="/usr/local/goedge/edge-admin"
|
||||||
|
# 镜像名称
|
||||||
|
IMAGE_NAME="goedge-admin:local-v1"
|
||||||
|
# 飞牛 NAS 数据存储路径规范
|
||||||
|
NAS_DATA_DIR="/vol1/1000/dock/goedge"
|
||||||
|
# Compose 配置文件名
|
||||||
|
COMPOSE_FILE="$NAS_DATA_DIR/goedge.yml"
|
||||||
|
# ===========================================
|
||||||
|
|
||||||
# 搜索容器内部
|
echo "=== 🚀 开始制作 GoEdge Docker 镜像 ==="
|
||||||
echo "1. 搜索容器内部..."
|
|
||||||
docker exec dysync1 find /app -type f \( -name "*.mp4" -o -name "*.avi" -o -name "*.mkv" -o -name "*.mov" -o -name "*.wmv" \) 2>/dev/null
|
|
||||||
|
|
||||||
echo "--------------------------"
|
# 1. 检查源目录是否存在
|
||||||
|
if [ ! -d "$SOURCE_DIR" ]; then
|
||||||
|
echo "❌ 错误:找不到源目录 $SOURCE_DIR"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# 搜索本地映射目录
|
cd "$SOURCE_DIR"
|
||||||
echo "2. 搜索本地映射目录..."
|
|
||||||
find ./data -type f \( -name "*.mp4" -o -name "*.avi" -o -name "*.mkv" -o -name "*.mov" -o -name "*.wmv" \) 2>/dev/null
|
|
||||||
|
|
||||||
echo "--------------------------"
|
# 2. 动态生成 Dockerfile
|
||||||
|
# 使用 tail -f 确保容器在前台运行不退出
|
||||||
|
echo "📂 正在生成 Dockerfile..."
|
||||||
|
cat <<EOF > Dockerfile
|
||||||
|
FROM debian:12-slim
|
||||||
|
|
||||||
# 搜索整个系统(可能需要权限)
|
# 设置时区和基本环境
|
||||||
echo "3. 搜索系统视频文件(可能需要sudo)..."
|
ENV TZ=Asia/Shanghai
|
||||||
find /home -type f \( -name "*.mp4" -o -name "*.avi" -o -name "*.mkv" -o -name "*.mov" -o -name "*.wmv" \) 2>/dev/null | head -20
|
WORKDIR /usr/local/goedge/edge-admin
|
||||||
|
|
||||||
echo "搜索完成!"
|
# 将当前目录的所有文件复制到镜像中
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# 赋予执行权限
|
||||||
|
RUN chmod +x bin/edge-admin
|
||||||
|
|
||||||
|
# 暴露端口 (7788=管理端, 8001=API节点)
|
||||||
|
EXPOSE 7788 8001
|
||||||
|
|
||||||
|
# 启动命令:启动服务并挂起 logs,防止容器退出
|
||||||
|
CMD ["/bin/sh", "-c", "./bin/edge-admin start && tail -f logs/run.log"]
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 3. 构建 Docker 镜像
|
||||||
|
echo "🐳 正在构建镜像 (这可能需要几秒钟)..."
|
||||||
|
docker build -t "$IMAGE_NAME" .
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "❌ 镜像构建失败!"
|
||||||
|
rm Dockerfile
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 清理临时生成的 Dockerfile
|
||||||
|
rm Dockerfile
|
||||||
|
echo "✅ 镜像 $IMAGE_NAME 构建成功!"
|
||||||
|
|
||||||
|
# 4. 准备飞牛 NAS 目录结构
|
||||||
|
echo "📂 正在创建数据目录结构: $NAS_DATA_DIR ..."
|
||||||
|
mkdir -p "$NAS_DATA_DIR/configs"
|
||||||
|
mkdir -p "$NAS_DATA_DIR/logs"
|
||||||
|
mkdir -p "$NAS_DATA_DIR/data"
|
||||||
|
|
||||||
|
# 5. 生成 docker-compose (goedge.yml)
|
||||||
|
echo "📝 正在生成配置文件: $COMPOSE_FILE ..."
|
||||||
|
cat <<EOF > "$COMPOSE_FILE"
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
goedge:
|
||||||
|
image: $IMAGE_NAME
|
||||||
|
container_name: goedge-admin
|
||||||
|
restart: always
|
||||||
|
network_mode: "host"
|
||||||
|
volumes:
|
||||||
|
- "$NAS_DATA_DIR/configs:/usr/local/goedge/edge-admin/configs"
|
||||||
|
- "$NAS_DATA_DIR/logs:/usr/local/goedge/edge-admin/logs"
|
||||||
|
- "$NAS_DATA_DIR/data:/usr/local/goedge/edge-admin/data"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "========================================================"
|
||||||
|
echo "🎉 恭喜!镜像制作与配置生成已完成!"
|
||||||
|
echo "========================================================"
|
||||||
|
echo "1. 镜像名称: $IMAGE_NAME"
|
||||||
|
echo "2. 配置文件: $COMPOSE_FILE"
|
||||||
|
echo "3. 数据目录: $NAS_DATA_DIR"
|
||||||
|
echo ""
|
||||||
|
echo "👉 你现在可以执行以下命令来启动容器:"
|
||||||
|
echo " docker compose -f $COMPOSE_FILE up -d"
|
||||||
|
echo ""
|
||||||
|
echo "💡 如果想把镜像导出保存(备份),请运行:"
|
||||||
|
echo " docker save -o /tmp/goedge-image.tar $IMAGE_NAME"
|
||||||
|
echo "========================================================"
|
||||||
123
GoEdge-cdn
123
GoEdge-cdn
@@ -1,70 +1,73 @@
|
|||||||
# 获取当前系统的操作系统类型(如 Linux)
|
#!/bin/bash
|
||||||
OS=`uname -s`
|
|
||||||
|
|
||||||
# 获取当前系统的硬件架构(如 x86_64 或 aarch64)
|
# 定义变量
|
||||||
ARCH=`uname -m`
|
INSTALL_DIR="/usr/local/goedge"
|
||||||
|
# 你的 Gitea 下载链接
|
||||||
|
DOWNLOAD_URL="https://git.vps3344521.xyz/3344/dock/releases/download/Goedge-cdn/edge-admin-linux-amd64-plus-v1.4.7.zip"
|
||||||
|
SAVE_PATH="/tmp/edge-admin.zip"
|
||||||
|
|
||||||
# 初始化 Go 语言对应的架构变量
|
echo "=== 开始检查依赖环境 ==="
|
||||||
GOARCH=""
|
|
||||||
|
|
||||||
# 定义 GoEdge 的默认安装目录
|
# 1. 检测并安装 unzip (解压用)
|
||||||
DIST=/usr/local/goedge
|
if ! command -v unzip &> /dev/null; then
|
||||||
|
echo "未检测到 unzip,正在安装..."
|
||||||
|
apt-get update && apt-get install -y unzip
|
||||||
|
fi
|
||||||
|
|
||||||
# 检查系统是否安装了 wget 工具
|
# 2. 检测并安装 axel (多线程下载用)
|
||||||
if [ `which wget` ]; then
|
if ! command -v axel &> /dev/null; then
|
||||||
echo "checking wget ... ok"
|
echo "未检测到 axel,正在安装..."
|
||||||
|
apt-get update && apt-get install -y axel
|
||||||
else
|
else
|
||||||
# 如果没有 wget,脚本将无法下载文件,直接退出
|
echo "检测到 axel 已安装。"
|
||||||
echo "'wget' command not found"
|
|
||||||
exit
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 根据系统硬件架构分配对应的下载标识
|
# 3. 准备目录
|
||||||
case "$ARCH" in
|
if [ ! -d "$INSTALL_DIR" ]; then
|
||||||
"x86_64")
|
mkdir -p "$INSTALL_DIR"
|
||||||
# 64位 Intel/AMD 处理器
|
echo "创建目录: $INSTALL_DIR"
|
||||||
GOARCH="amd64"
|
|
||||||
;;
|
|
||||||
"aarch64_be"|"aarch64"|"armv8b"|"armv8l"|"armv8"|"arm64")
|
|
||||||
# 64位 ARM 处理器(如 树莓派、华为鲲鹏、部分云服务器)
|
|
||||||
GOARCH="arm64"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
# 如果是不支持的架构,输出错误并退出
|
|
||||||
echo "arch '${ARCH}' is not supported yet"
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# 拼接 edge-boot 引导程序的下载地址
|
|
||||||
BOOT_URL="https://dl.goedge.cloud/edge-boot/linux/${GOARCH}/edge-boot"
|
|
||||||
# 定义引导程序在本地系统的存放路径
|
|
||||||
BOOT_FILE="/usr/local/bin/edge-boot"
|
|
||||||
|
|
||||||
# 如果本地不存在 edge-boot 文件,则开始下载和安装
|
|
||||||
if [ ! -e $BOOT_FILE ]; then
|
|
||||||
echo "installing edge-boot to '/usr/local/bin' ..."
|
|
||||||
|
|
||||||
# 如果存放路径的目录不存在,则递归创建该目录
|
|
||||||
if [ ! -d /usr/local/bin ]; then
|
|
||||||
mkdir -p /usr/local/bin
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 从官网下载 edge-boot 二进制文件
|
|
||||||
wget $BOOT_URL -O $BOOT_FILE
|
|
||||||
|
|
||||||
# 检查文件是否下载成功
|
|
||||||
if [ ! -f $BOOT_FILE ]; then
|
|
||||||
echo "download edge-boot failed"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 赋予该文件所有者可执行权限
|
|
||||||
chmod u+x $BOOT_FILE
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 输出安装提示信息
|
# 4. 使用 axel 多线程下载
|
||||||
echo "installing edge-admin to '${DIST}' ..."
|
echo "=== 开始多线程下载 (10线程) ==="
|
||||||
|
rm -f "$SAVE_PATH"
|
||||||
|
axel -n 10 -a -o "$SAVE_PATH" "$DOWNLOAD_URL"
|
||||||
|
|
||||||
# 调用下载好的引导程序,执行真正的 edge-admin 安装流程
|
if [ $? -ne 0 ]; then
|
||||||
$BOOT_FILE install admin
|
echo "下载失败,请检查网络或链接有效性。"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 5. 解压文件
|
||||||
|
echo "=== 正在解压文件 ==="
|
||||||
|
unzip -o "$SAVE_PATH" -d "$INSTALL_DIR"
|
||||||
|
|
||||||
|
# 6. 自动寻找并执行安装
|
||||||
|
# 兼容不同解压路径,自动寻找 edge-admin 二进制文件所在位置
|
||||||
|
REAL_BIN_PATH=$(find $INSTALL_DIR -name "edge-admin" -type f | grep "/bin/" | head -n 1)
|
||||||
|
|
||||||
|
if [ -f "$REAL_BIN_PATH" ]; then
|
||||||
|
REAL_DIR=$(dirname $(dirname "$REAL_BIN_PATH"))
|
||||||
|
cd "$REAL_DIR"
|
||||||
|
|
||||||
|
echo "=== 正在配置系统服务 ==="
|
||||||
|
chmod +x bin/edge-admin
|
||||||
|
./bin/edge-admin install
|
||||||
|
|
||||||
|
echo "=== 正在启动 GoEdge Admin ==="
|
||||||
|
./bin/edge-admin start
|
||||||
|
|
||||||
|
# 获取本机 IP
|
||||||
|
SERVER_IP=$(curl -s https://ifconfig.me || hostname -I | awk '{print $1}')
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "======================================================"
|
||||||
|
echo "🎉 GoEdge Admin 安装并启动成功!"
|
||||||
|
echo "======================================================"
|
||||||
|
echo "👉 访问地址: http://${SERVER_IP}:7788"
|
||||||
|
echo "👉 默认配置: 请按照网页提示进行初始化"
|
||||||
|
echo "👉 数据目录: ${REAL_DIR}"
|
||||||
|
echo "======================================================"
|
||||||
|
else
|
||||||
|
echo "错误:未能找到 edge-admin 程序,请检查压缩包内容。"
|
||||||
|
fi
|
||||||
126
de12系统代理
Normal file
126
de12系统代理
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 全能自愈版·临时全局代理注入助手 (带 Docker 选择)
|
||||||
|
# 适用环境: Debian / Ubuntu 等
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# 颜色定义
|
||||||
|
RED='\033[31m'
|
||||||
|
GREEN='\033[32m'
|
||||||
|
YELLOW='\033[33m'
|
||||||
|
BLUE='\033[34m'
|
||||||
|
PLAIN='\033[0m'
|
||||||
|
|
||||||
|
echo -e "${BLUE}=====================================================${PLAIN}"
|
||||||
|
echo -e "${BLUE} 全能自愈版·全局代理与 Docker 穿透助手 (含还原机制) ${PLAIN}"
|
||||||
|
echo -e "${BLUE}=====================================================${PLAIN}"
|
||||||
|
|
||||||
|
# 默认代理节点配置
|
||||||
|
DEFAULT_IP="45.192.240.121"
|
||||||
|
DEFAULT_PORT="21628"
|
||||||
|
DEFAULT_PROTO="socks5"
|
||||||
|
|
||||||
|
read -p "请输入代理 IP [$DEFAULT_IP]: " PROXY_IP
|
||||||
|
PROXY_IP=${PROXY_IP:-$DEFAULT_IP}
|
||||||
|
read -p "请输入代理端口 [$DEFAULT_PORT]: " PROXY_PORT
|
||||||
|
PROXY_PORT=${PROXY_PORT:-$DEFAULT_PORT}
|
||||||
|
|
||||||
|
PROXY_URL="${DEFAULT_PROTO}://${PROXY_IP}:${PROXY_PORT}"
|
||||||
|
|
||||||
|
echo -e "\n${BLUE}[1/6] 检查并修复系统软件源...${PLAIN}"
|
||||||
|
if ! apt-get update -qq 2>/dev/null; then
|
||||||
|
echo -e "${YELLOW}检测到当前软件源失效,正在自动备份并替换为 Debian 12 官方公网源...${PLAIN}"
|
||||||
|
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2>/dev/null
|
||||||
|
sudo bash -c 'cat << SRC > /etc/apt/sources.list
|
||||||
|
deb http://deb.debian.org/debian bookworm main
|
||||||
|
deb http://deb.debian.org/debian bookworm-updates main
|
||||||
|
deb http://security.debian.org/debian-security bookworm-security main
|
||||||
|
SRC'
|
||||||
|
sudo apt-get update -qq
|
||||||
|
echo -e "${GREEN} -> 软件源修复完成!${PLAIN}"
|
||||||
|
else
|
||||||
|
echo -e "${GREEN} -> 软件源状态正常。${PLAIN}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${BLUE}[2/6] 检查并安装必要依赖...${PLAIN}"
|
||||||
|
if ! command -v proxychains4 &> /dev/null || ! command -v curl &> /dev/null; then
|
||||||
|
echo -e "${YELLOW}正在自动安装 proxychains4 和 curl...${PLAIN}"
|
||||||
|
sudo apt-get install -y -qq proxychains4 curl >/dev/null 2>&1
|
||||||
|
echo -e "${GREEN} -> 依赖安装完毕!${PLAIN}"
|
||||||
|
else
|
||||||
|
echo -e "${GREEN} -> 依赖已存在。${PLAIN}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${BLUE}[3/6] 注入底层环境变量与 Sudo 穿透...${PLAIN}"
|
||||||
|
export http_proxy="${PROXY_URL}"
|
||||||
|
export https_proxy="${PROXY_URL}"
|
||||||
|
export all_proxy="${PROXY_URL}"
|
||||||
|
export HTTP_PROXY="${PROXY_URL}"
|
||||||
|
export HTTPS_PROXY="${PROXY_URL}"
|
||||||
|
export ALL_PROXY="${PROXY_URL}"
|
||||||
|
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,.aliyuncs.com"
|
||||||
|
alias sudo='sudo -E'
|
||||||
|
echo -e "${GREEN} -> 终端变量注入成功!${PLAIN}"
|
||||||
|
|
||||||
|
echo -e "${BLUE}[4/6] 部署临时强制代理 (修复 Error 52)...${PLAIN}"
|
||||||
|
TEMP_PC_CONF="/tmp/ultimate_pc.conf"
|
||||||
|
cat << CONF > $TEMP_PC_CONF
|
||||||
|
strict_chain
|
||||||
|
remote_dns_subnet 224
|
||||||
|
tcp_read_time_out 15000
|
||||||
|
tcp_connect_time_out 8000
|
||||||
|
[ProxyList]
|
||||||
|
$DEFAULT_PROTO $PROXY_IP $PROXY_PORT
|
||||||
|
CONF
|
||||||
|
alias pc="proxychains4 -q -f $TEMP_PC_CONF"
|
||||||
|
echo -e "${GREEN} -> pc 强制代理工具就绪!${PLAIN}"
|
||||||
|
|
||||||
|
echo -e "${BLUE}[5/6] 突破 Docker 守护进程隔离 (交互)...${PLAIN}"
|
||||||
|
if command -v docker &> /dev/null; then
|
||||||
|
echo -e "${YELLOW}检测到系统已安装 Docker。${PLAIN}"
|
||||||
|
read -p "是否为 Docker 守护进程添加代理?(解决拉取镜像超时问题) [y/n, 默认: y]: " ADD_DOCKER
|
||||||
|
ADD_DOCKER=${ADD_DOCKER:-y}
|
||||||
|
|
||||||
|
if [[ "$ADD_DOCKER" =~ ^[Yy]$ ]]; then
|
||||||
|
echo -e "${YELLOW}正在配置并重启 Docker...${PLAIN}"
|
||||||
|
sudo mkdir -p /etc/systemd/system/docker.service.d
|
||||||
|
sudo bash -c "cat << DOCKER_CONF > /etc/systemd/system/docker.service.d/http-proxy.conf
|
||||||
|
[Service]
|
||||||
|
Environment=\"HTTP_PROXY=${PROXY_URL}\"
|
||||||
|
Environment=\"HTTPS_PROXY=${PROXY_URL}\"
|
||||||
|
Environment=\"NO_PROXY=localhost,127.0.0.1,.aliyuncs.com\"
|
||||||
|
DOCKER_CONF"
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl restart docker
|
||||||
|
echo -e "${GREEN} -> Docker 代理已挂载并重启完毕!${PLAIN}"
|
||||||
|
else
|
||||||
|
echo -e "${GREEN} -> 已跳过 Docker 代理配置。${PLAIN}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW} -> 未检测到 Docker,跳过此步骤。${PLAIN}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${BLUE}[6/6] 生成一键清场工具...${PLAIN}"
|
||||||
|
# 将 proxy_clean 声明为函数留在内存里
|
||||||
|
proxy_clean() {
|
||||||
|
echo -e "${YELLOW}正在清除所有代理痕迹...${PLAIN}"
|
||||||
|
unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY no_proxy
|
||||||
|
unalias sudo pc 2>/dev/null
|
||||||
|
rm -f /tmp/ultimate_pc.conf
|
||||||
|
if [ -f /etc/systemd/system/docker.service.d/http-proxy.conf ]; then
|
||||||
|
sudo rm -f /etc/systemd/system/docker.service.d/http-proxy.conf
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl restart docker
|
||||||
|
echo -e "${GREEN} -> Docker 代理已卸载并重启服务。${PLAIN}"
|
||||||
|
fi
|
||||||
|
echo -e "${GREEN}清理完毕!系统已彻底恢复直连状态。${PLAIN}"
|
||||||
|
}
|
||||||
|
echo -e "${GREEN} -> 已生成 'proxy_clean' 命令。${PLAIN}"
|
||||||
|
|
||||||
|
echo -e "\n${GREEN}=====================================================${PLAIN}"
|
||||||
|
echo -e "${GREEN} 所有网络魔法已就绪!${PLAIN}"
|
||||||
|
echo -e " 1. 终端环境已全面代理 (curl, wget 畅通无阻)。"
|
||||||
|
echo -e " 2. 遇到不听话的顽固脚本,命令前加 ${YELLOW}pc${PLAIN} (如: pc ./install.sh)。"
|
||||||
|
echo -e " 3. 完事后想恢复原状,只需输入命令: ${RED}proxy_clean${PLAIN}"
|
||||||
|
echo -e "${GREEN}=====================================================${PLAIN}"
|
||||||
2
dock安装cf
2
dock安装cf
@@ -10,7 +10,7 @@ cat > /root/docker-install-zip.sh <<'EOF'
|
|||||||
ZIP_NAME="dockde12.zip"
|
ZIP_NAME="dockde12.zip"
|
||||||
WORKDIR="/root/docker-offline"
|
WORKDIR="/root/docker-offline"
|
||||||
# 主下载地址
|
# 主下载地址
|
||||||
URL1="https://git.vps3344521.xyz/3344/dock/releases/download/dock%E5%AE%89%E8%A3%85%E5%8C%85/dockde12.zip"
|
URL1="https://git.77582585.xyz/3344/dock/releases/download/dock%E5%AE%89%E8%A3%85%E5%8C%85/dockde12.zip"
|
||||||
# 备用下载地址
|
# 备用下载地址
|
||||||
URL2="https://pub-b69a7194f4ea42fba6aa990c49bded91.r2.dev/xui/dockde12.zip"
|
URL2="https://pub-b69a7194f4ea42fba6aa990c49bded91.r2.dev/xui/dockde12.zip"
|
||||||
|
|
||||||
|
|||||||
18
xu
18
xu
@@ -16,8 +16,8 @@ Font="\033[0m"
|
|||||||
|
|
||||||
# --- 核心配置 (用户定制) ---
|
# --- 核心配置 (用户定制) ---
|
||||||
# 数据库链接
|
# 数据库链接
|
||||||
DB_URL_PUBLIC="https://git.vps3344521.xyz/attachments/aa8ba64e-3a73-48f4-9317-07e06400b1d8" # 模式1链接
|
DB_URL_PUBLIC="https://git.77582585.xyz/3344/dock/releases/download/3xui/x-ui%20%E6%88%B702.db" # 模式1链接
|
||||||
DB_URL_PRIVATE="https://git.vps3344521.xyz/attachments/c457401f-76dd-4499-8ea3-a8b628bc963a" # 模式2链接
|
DB_URL_PRIVATE="https://git.77582585.xyz/attachments/c457401f-76dd-4499-8ea3-a8b628bc963a" # 模式2链接
|
||||||
|
|
||||||
# 默认账号设置 (数据库下载后会被重置为此账号)
|
# 默认账号设置 (数据库下载后会被重置为此账号)
|
||||||
INSTALL_PATH="/usr/local/x-ui"
|
INSTALL_PATH="/usr/local/x-ui"
|
||||||
@@ -205,31 +205,31 @@ FILE_NAME=""
|
|||||||
case $ARCH in
|
case $ARCH in
|
||||||
x86_64)
|
x86_64)
|
||||||
FILE_NAME="x-ui-linux-amd64.tar.gz"
|
FILE_NAME="x-ui-linux-amd64.tar.gz"
|
||||||
DOWNLOAD_URL="https://git.vps3344521.xyz/attachments/40eeb013-5006-423f-ad74-a0541ab340f4"
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/40eeb013-5006-423f-ad74-a0541ab340f4"
|
||||||
;;
|
;;
|
||||||
aarch64|armv8)
|
aarch64|armv8)
|
||||||
FILE_NAME="x-ui-linux-arm64.tar.gz"
|
FILE_NAME="x-ui-linux-arm64.tar.gz"
|
||||||
DOWNLOAD_URL="https://git.vps3344521.xyz/attachments/4ab708d5-6bc8-42c0-8494-ef5efe03e074"
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/4ab708d5-6bc8-42c0-8494-ef5efe03e074"
|
||||||
;;
|
;;
|
||||||
i386|i686)
|
i386|i686)
|
||||||
FILE_NAME="x-ui-linux-386.tar.gz"
|
FILE_NAME="x-ui-linux-386.tar.gz"
|
||||||
DOWNLOAD_URL="https://git.vps3344521.xyz/attachments/d1604006-c6b7-4c7c-9652-b42b229ef4cb"
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/d1604006-c6b7-4c7c-9652-b42b229ef4cb"
|
||||||
;;
|
;;
|
||||||
armv5*)
|
armv5*)
|
||||||
FILE_NAME="x-ui-linux-armv5.tar.gz"
|
FILE_NAME="x-ui-linux-armv5.tar.gz"
|
||||||
DOWNLOAD_URL="https://git.vps3344521.xyz/attachments/8a5c678c-4ae4-43c4-910d-7e47f7c21c22"
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/8a5c678c-4ae4-43c4-910d-7e47f7c21c22"
|
||||||
;;
|
;;
|
||||||
armv6*)
|
armv6*)
|
||||||
FILE_NAME="x-ui-linux-armv6.tar.gz"
|
FILE_NAME="x-ui-linux-armv6.tar.gz"
|
||||||
DOWNLOAD_URL="https://git.vps3344521.xyz/attachments/0e7c7fd7-192e-44b3-9739-785a5fb1b51f"
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/0e7c7fd7-192e-44b3-9739-785a5fb1b51f"
|
||||||
;;
|
;;
|
||||||
armv7*)
|
armv7*)
|
||||||
FILE_NAME="x-ui-linux-armv7.tar.gz"
|
FILE_NAME="x-ui-linux-armv7.tar.gz"
|
||||||
DOWNLOAD_URL="https://git.vps3344521.xyz/attachments/9d1bf416-afb6-4e9f-b46b-ab3a1913a998"
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/9d1bf416-afb6-4e9f-b46b-ab3a1913a998"
|
||||||
;;
|
;;
|
||||||
s390x)
|
s390x)
|
||||||
FILE_NAME="x-ui-linux-s390x.tar.gz"
|
FILE_NAME="x-ui-linux-s390x.tar.gz"
|
||||||
DOWNLOAD_URL="https://git.vps3344521.xyz/attachments/18784828-0d20-4bc5-908c-15f91bcf8eb5"
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/18784828-0d20-4bc5-908c-15f91bcf8eb5"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo -e "${Red}不支持或无法识别的架构: $ARCH${Font}"
|
echo -e "${Red}不支持或无法识别的架构: $ARCH${Font}"
|
||||||
|
|||||||
263
xu1
Normal file
263
xu1
Normal file
@@ -0,0 +1,263 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 标题:X-UI 全能安装脚本 (精简服务器版)
|
||||||
|
# 更新:移除第三方多线程下载器,保留原生 wget/curl
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# --- 颜色配置 ---
|
||||||
|
Red="\033[31m"
|
||||||
|
Green="\033[32m"
|
||||||
|
Yellow="\033[33m"
|
||||||
|
Blue="\033[36m"
|
||||||
|
Font="\033[0m"
|
||||||
|
|
||||||
|
# --- 核心配置 (用户定制) ---
|
||||||
|
DB_URL_PUBLIC="https://git.77582585.xyz/3344/dock/releases/download/3xui/x-ui%20%E6%88%B702.db"
|
||||||
|
DB_URL_PRIVATE="https://git.77582585.xyz/attachments/c457401f-76dd-4499-8ea3-a8b628bc963a"
|
||||||
|
|
||||||
|
INSTALL_PATH="/usr/local/x-ui"
|
||||||
|
BIN_LINK="/usr/bin/x-ui"
|
||||||
|
DB_PATH="/etc/x-ui/x-ui.db"
|
||||||
|
SET_USER="3344"
|
||||||
|
SET_PASS="3344"
|
||||||
|
SET_PORT="8443"
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 1. 模式选择
|
||||||
|
# ==========================================
|
||||||
|
clear
|
||||||
|
echo -e "${Blue}#################################################${Font}"
|
||||||
|
echo -e "${Blue}# X-UI 自动安装脚本 (轻量精简版) #${Font}"
|
||||||
|
echo -e "${Blue}#################################################${Font}"
|
||||||
|
echo -e "${Yellow}请选择安装配置模式:${Font}"
|
||||||
|
echo -e "-------------------------------------------------"
|
||||||
|
echo -e "1. ${Green}标准配置安装${Font} (使用指定的公共数据库配置)"
|
||||||
|
echo -e "2. ${Green}私人配置安装${Font} (私人数据库配置严禁个人使用)"
|
||||||
|
echo -e "-------------------------------------------------"
|
||||||
|
read -p "请输入数字 [1-2] (默认1): " INSTALL_MODE
|
||||||
|
[[ -z "$INSTALL_MODE" ]] && INSTALL_MODE="1"
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 2. 网络环境智能检测
|
||||||
|
# ==========================================
|
||||||
|
check_network() {
|
||||||
|
echo -e "${Yellow}>> [1/6] 正在检测网络环境...${Font}"
|
||||||
|
HAS_IPV4=0
|
||||||
|
HAS_IPV6=0
|
||||||
|
|
||||||
|
if curl -s4m2 https://www.google.com/generate_204 >/dev/null 2>&1 || curl -s4m2 https://www.baidu.com >/dev/null 2>&1; then
|
||||||
|
HAS_IPV4=1
|
||||||
|
fi
|
||||||
|
if curl -s6m2 https://www.google.com/generate_204 >/dev/null 2>&1; then
|
||||||
|
HAS_IPV6=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $HAS_IPV4 -eq 1 ]]; then
|
||||||
|
echo -e "${Green}检测到 IPv4 网络,将优先使用 IPv4 通道${Font}"
|
||||||
|
NET_OPT="-4"
|
||||||
|
elif [[ $HAS_IPV6 -eq 1 ]]; then
|
||||||
|
echo -e "${Green}检测到纯 IPv6 网络,将自动切换至 IPv6 通道${Font}"
|
||||||
|
NET_OPT="-6"
|
||||||
|
else
|
||||||
|
echo -e "${Red}错误:未检测到任何可用网络!${Font}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
check_network
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 3. 系统环境与依赖处理
|
||||||
|
# ==========================================
|
||||||
|
echo -e "${Yellow}>> [2/6] 安装基础依赖...${Font}"
|
||||||
|
PM="apt"
|
||||||
|
if [[ -f /etc/redhat-release ]] || command -v yum >/dev/null 2>&1; then PM="yum"; fi
|
||||||
|
|
||||||
|
install_soft() {
|
||||||
|
if [ "$PM" == "apt" ]; then
|
||||||
|
apt-get install -y $1 >/dev/null 2>&1
|
||||||
|
elif [ "$PM" == "yum" ]; then
|
||||||
|
yum install -y $1 >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$PM" == "apt" ]; then
|
||||||
|
pgrep -x "apt" && killall apt apt-get dpkg >/dev/null 2>&1
|
||||||
|
rm -rf /var/lib/apt/lists/lock /var/lib/dpkg/lock*
|
||||||
|
dpkg --configure -a >/dev/null 2>&1
|
||||||
|
apt-get update -o Acquire::http::Timeout="20" || echo -e "${Red}源更新超时,尝试继续...${Font}"
|
||||||
|
apt-get install -y curl wget tar ca-certificates bc sqlite3
|
||||||
|
if ! apt-get install -y ntpdate >/dev/null 2>&1; then
|
||||||
|
apt-get install -y ntpsec-ntpdate >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
yum install -y epel-release >/dev/null 2>&1
|
||||||
|
yum install -y curl wget tar bc sqlite3 ntpdate >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 4. 时间校准与架构匹配
|
||||||
|
# ==========================================
|
||||||
|
echo -e "${Yellow}>> [3/6] 校准时间与识别架构...${Font}"
|
||||||
|
rm -f /etc/localtime
|
||||||
|
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
||||||
|
if command -v ntpdate >/dev/null 2>&1; then
|
||||||
|
ntpdate pool.ntp.org >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
date -s "$(curl -sI g.cn | grep Date | cut -d' ' -f3-6)Z" >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ARCH=$(uname -m)
|
||||||
|
DOWNLOAD_URL=""
|
||||||
|
FILE_NAME=""
|
||||||
|
|
||||||
|
case $ARCH in
|
||||||
|
x86_64)
|
||||||
|
FILE_NAME="x-ui-linux-amd64.tar.gz"
|
||||||
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/40eeb013-5006-423f-ad74-a0541ab340f4"
|
||||||
|
;;
|
||||||
|
aarch64|armv8)
|
||||||
|
FILE_NAME="x-ui-linux-arm64.tar.gz"
|
||||||
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/4ab708d5-6bc8-42c0-8494-ef5efe03e074"
|
||||||
|
;;
|
||||||
|
i386|i686)
|
||||||
|
FILE_NAME="x-ui-linux-386.tar.gz"
|
||||||
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/d1604006-c6b7-4c7c-9652-b42b229ef4cb"
|
||||||
|
;;
|
||||||
|
armv5*)
|
||||||
|
FILE_NAME="x-ui-linux-armv5.tar.gz"
|
||||||
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/8a5c678c-4ae4-43c4-910d-7e47f7c21c22"
|
||||||
|
;;
|
||||||
|
armv6*)
|
||||||
|
FILE_NAME="x-ui-linux-armv6.tar.gz"
|
||||||
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/0e7c7fd7-192e-44b3-9739-785a5fb1b51f"
|
||||||
|
;;
|
||||||
|
armv7*)
|
||||||
|
FILE_NAME="x-ui-linux-armv7.tar.gz"
|
||||||
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/9d1bf416-afb6-4e9f-b46b-ab3a1913a998"
|
||||||
|
;;
|
||||||
|
s390x)
|
||||||
|
FILE_NAME="x-ui-linux-s390x.tar.gz"
|
||||||
|
DOWNLOAD_URL="https://git.77582585.xyz/attachments/18784828-0d20-4bc5-908c-15f91bcf8eb5"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "${Red}不支持或无法识别的架构: $ARCH${Font}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
echo -e "${Green}检测到架构: $ARCH,匹配文件名: $FILE_NAME${Font}"
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 5. 本地基础下载逻辑
|
||||||
|
# ==========================================
|
||||||
|
download_manager() {
|
||||||
|
local url=$1
|
||||||
|
local file=$2
|
||||||
|
rm -f "$file"
|
||||||
|
|
||||||
|
echo -e "${Yellow}>> 尝试使用 Wget 下载...${Font}"
|
||||||
|
if wget $NET_OPT --no-check-certificate --timeout=30 --tries=3 -O "$file" "$url"; then return 0; fi
|
||||||
|
|
||||||
|
echo -e "${Yellow}>> Wget 失败,尝试使用 Curl 兜底...${Font}"
|
||||||
|
curl $NET_OPT -L -k --connect-timeout 30 --retry 3 -o "$file" "$url"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo -e "${Yellow}>> [4/6] 下载安装包 (Mode: $NET_OPT)...${Font}"
|
||||||
|
mkdir -p /usr/local/
|
||||||
|
cd /usr/local/
|
||||||
|
download_manager "$DOWNLOAD_URL" "$FILE_NAME"
|
||||||
|
|
||||||
|
if ! tar -tzf "$FILE_NAME" >/dev/null 2>&1; then
|
||||||
|
echo -e "${Red}严重错误:安装包下载失败或文件损坏!${Font}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 6. 安装与配置
|
||||||
|
# ==========================================
|
||||||
|
echo -e "${Yellow}>> [5/6] 解压与配置...${Font}"
|
||||||
|
systemctl stop x-ui >/dev/null 2>&1
|
||||||
|
killall x-ui >/dev/null 2>&1
|
||||||
|
rm -rf x-ui
|
||||||
|
tar zxvf "$FILE_NAME" >/dev/null
|
||||||
|
cd x-ui
|
||||||
|
chmod +x x-ui x-ui.sh bin/xray-linux-*
|
||||||
|
ln -sf "$INSTALL_PATH/x-ui.sh" "$BIN_LINK"
|
||||||
|
mkdir -p /etc/x-ui/
|
||||||
|
rm -f "$DB_PATH"
|
||||||
|
|
||||||
|
if [ "$INSTALL_MODE" == "1" ]; then
|
||||||
|
TARGET_DB="$DB_URL_PUBLIC"
|
||||||
|
else
|
||||||
|
TARGET_DB="$DB_URL_PRIVATE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${Yellow}>> 正在下载数据库配置...${Font}"
|
||||||
|
download_manager "$TARGET_DB" "$DB_PATH"
|
||||||
|
|
||||||
|
if [ ! -s "$DB_PATH" ] || [ $(stat -c%s "$DB_PATH") -lt 1000 ]; then
|
||||||
|
echo -e "${Red}警告:数据库下载失败,尝试使用默认空数据库初始化...${Font}"
|
||||||
|
cp /usr/local/x-ui/bin/x-ui.db "$DB_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${Yellow}>> 正在重置账户权限...${Font}"
|
||||||
|
chmod 777 "$DB_PATH" >/dev/null 2>&1
|
||||||
|
RESET_SUCCESS=0
|
||||||
|
if command -v sqlite3 >/dev/null 2>&1; then
|
||||||
|
sqlite3 -cmd ".timeout 2000" "$DB_PATH" "UPDATE settings SET value='/' WHERE key='webBasePath';"
|
||||||
|
sqlite3 -cmd ".timeout 2000" "$DB_PATH" "UPDATE settings SET value='$SET_PORT' WHERE key='webPort';"
|
||||||
|
sqlite3 -cmd ".timeout 2000" "$DB_PATH" "UPDATE users SET username='$SET_USER', password='$SET_PASS' WHERE id=1;"
|
||||||
|
CURRENT_PASS=$(sqlite3 "$DB_PATH" "SELECT password FROM users WHERE id=1;")
|
||||||
|
if [ "$CURRENT_PASS" == "$SET_PASS" ]; then
|
||||||
|
RESET_SUCCESS=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $RESET_SUCCESS -eq 0 ]; then
|
||||||
|
./x-ui setting -username "$SET_USER" -password "$SET_PASS" -port "$SET_PORT" >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
chmod 644 "$DB_PATH" >/dev/null 2>&1
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# 7. 启动与放行
|
||||||
|
# ==========================================
|
||||||
|
echo -e "${Yellow}>> [6/6] 启动服务与防火墙放行...${Font}"
|
||||||
|
cat > /etc/systemd/system/x-ui.service <<EOF
|
||||||
|
[Unit]
|
||||||
|
Description=x-ui Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=$INSTALL_PATH
|
||||||
|
ExecStart=$INSTALL_PATH/x-ui
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5s
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable x-ui
|
||||||
|
systemctl restart x-ui
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
if command -v ufw >/dev/null 2>&1; then ufw allow $SET_PORT/tcp >/dev/null 2>&1; fi
|
||||||
|
if command -v firewall-cmd >/dev/null 2>&1; then
|
||||||
|
firewall-cmd --zone=public --add-port=$SET_PORT/tcp --permanent >/dev/null 2>&1
|
||||||
|
firewall-cmd --reload >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
iptables -I INPUT -p tcp --dport $SET_PORT -j ACCEPT 2>/dev/null
|
||||||
|
|
||||||
|
IP=$(curl -s4m5 ip.sb)
|
||||||
|
[ -z "$IP" ] && IP=$(curl -s6m5 ip.sb)
|
||||||
|
|
||||||
|
echo -e "\n${Blue}#################################################${Font}"
|
||||||
|
echo -e "${Green} X-UI 安装完成 (精简服务器版) ${Font}"
|
||||||
|
echo -e "${Blue}#################################################${Font}"
|
||||||
|
echo -e "访问地址 : ${Green}http://$IP:$SET_PORT${Font}"
|
||||||
|
echo -e "用户名 : ${Green}$SET_USER${Font}"
|
||||||
|
echo -e "密码 : ${Green}$SET_PASS${Font}"
|
||||||
|
echo -e "${Blue}#################################################${Font}"
|
||||||
Reference in New Issue
Block a user