diff --git a/Pixman.sh b/Pixman.sh index d48a7db..619628a 100644 --- a/Pixman.sh +++ b/Pixman.sh @@ -3,7 +3,7 @@ # @小白直播搭建脚本 # 项目地址:https://pixman.io/ -# 最新版本:1.9.5 +# 最新版本:1.9.6 ############################### @@ -22,7 +22,6 @@ HAMI_SESSION_IP="" # Hami 参数 HTTP_PROXY="" # 设置代理 HTTPS_PROXY="" # 设置代理 - # 设置颜色变量 RED="\033[1;31m" # 红 GREEN="\033[1;32m" # 绿 @@ -77,9 +76,8 @@ show_allinone_menu() { echo "---------------------" echo "1) 安装 Allinone 项目" echo "2) 安装 av3a 助手" - echo "3) 设置 IPTV 启停" - echo "4) 设置 反向代理 地址 " - echo "5) 卸载 Allinone 项目" + echo "3) 设置 反向代理 地址 " + echo "4) 卸载 Allinone 项目" echo "---------------------" echo "0) 返回主菜单 " echo "---------------------" @@ -87,17 +85,17 @@ show_allinone_menu() { # 工具箱 菜单 show_toolbox_menu() { - echo "-------------------" - echo " 工具箱菜单: " - echo "-------------------" - echo "1) 1Panle 面板 " - echo "2) [Docker] o11 " - echo "3) [Docker] 3X-UI " - echo "~~~~~~~~~~~~~~~~~~~" - echo "4) Docker 一键清理 " - echo "-------------------" - echo "0) 返回主菜单 " - echo "-------------------" + echo "----------------------" + echo " 工具箱菜单: " + echo "----------------------" + echo "1) 1Panle 面板 " + echo "2) [Docker] o11 " + echo "3) [Docker] 3X-UI " + echo "~~~~~~~~~~~~~~~~~~~~~~" + echo "5) Docker 一键清理 " + echo "----------------------" + echo "0) 返回主菜单 " + echo "----------------------" } # 1Panel 菜单 @@ -109,27 +107,27 @@ show_1panel_menu() { echo "2) 卸载 1Panel " echo "3) 设置 1Panel " echo "-------------------" - echo "0) 返回上级菜单 " + echo "0) 返回上级菜单 " echo "-------------------" } # 3X-UI 菜单 show_3x_ui_menu() { echo "-------------------" - echo " 3X-UI 面板菜单: " + echo " 3X-UI 菜单: " echo "-------------------" echo "1) 安装 3X-UI " echo "2) 更新 3X-UI " echo "3) 卸载 3X-UI " echo "-------------------" - echo "0) 返回上级菜单 " + echo "0) 返回上级菜单 " echo "-------------------" } # o11 菜单 show_o11_menu() { echo "-------------------" - echo " o11 面板菜单: " + echo " o11 菜单: " echo "-------------------" echo "1) 安装 o11 " echo "2) 卸载 o11 " @@ -138,6 +136,18 @@ show_o11_menu() { echo "-------------------" } +# subs 菜单 +show_subs_menu() { + echo "-------------------" + echo " Sub Store 菜单: " + echo "-------------------" + echo "1) 安装 Sub Store " + echo "2) 卸载 Sub Store " + echo "-------------------" + echo "0) 返回上级菜单 " + echo "-------------------" +} + ############# Pixman ############# # 加载 Pixman 参数 @@ -247,7 +257,7 @@ set_parameters() { "$HTTP_PROXY" != "$original_http_proxy" || \ "$HTTPS_PROXY" != "$original_https_proxy" ]]; then echo -e "${CYAN}检测到参数变化,正在卸载旧的 Pixman 容器...${RESET}" - docker rm -f pixman + docker rm -f pixman > /dev/null 2>&1 check_update else echo -e "${CYAN}参数未发生变化,无需重启 Pixman 容器${RESET}" @@ -285,9 +295,9 @@ check_update() { if [ "$current_image_version" != "$latest_image_version" ]; then echo -e "${GREEN}发现新版本 ($latest_image_version),正在更新...${RESET}" - docker rm -f pixman - docker rmi -f "$IMAGE_SOURCE" - docker pull "$IMAGE_SOURCE" + docker rm -f pixman > /dev/null 2>&1 + docker rmi -f "$IMAGE_SOURCE" > /dev/null 2>&1 + docker pull "$IMAGE_SOURCE" > /dev/null 2>&1 start_container "$IMAGE_SOURCE" "$MODE" else echo -e "${GREEN}当前版本 ($current_image_version),无需更新...${RESET}" @@ -356,12 +366,15 @@ uninstall_pixman() { if [[ "$input" =~ ^[Yy]$ ]]; then echo -e "${CYAN}正在卸载 Pixman 项目...${RESET}" - docker rm -f pixman || { echo "卸载容器失败"; return 1; } - docker rmi -f pixman/pixman:latest || { echo "删除镜像失败"; return 1; } - crontab -l | grep -v "$SCRIPT_PATH" | crontab - || { echo "删除定时任务失败"; return 1; } - # rm -f "$SCRIPT_PATH" || { echo "删除脚本文件失败"; return 1; } - # rm -f "$CONFIG_FILE" || { echo "删除配置文件失败"; return 1; } - # sed -i '/alias y=/d' ~/.bashrc || { echo "删除快捷指令失败"; return 1; } + docker stop pixman > /dev/null 2>&1 + docker rm -f pixman > /dev/null 2>&1 + for image in $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'pixman/pixman'); do + docker rmi "$image" > /dev/null 2>&1 + done + crontab -l | grep -v "$SCRIPT_PATH" + # rm -f "$SCRIPT_PATH" + # rm -f "$CONFIG_FILE" + # sed -i '/alias y=/d' ~/.bashrc echo -e "${RED}Pixman 项目已成功卸载。${RESET}" else echo -e "${GREEN}取消卸载操作。${RESET}" @@ -477,8 +490,19 @@ Convert_pixman() { ############# Allinone ############# -# 安装 Allinone + # 安装 Allinone install_allinone() { + + if docker ps -a --format '{{.Names}}' | grep -q "^allinone$"; then + echo "检测到已存在的 Allinone 容器,将进行手动更新..." + docker stop allinone > /dev/null 2>&1 + docker rm allinone > /dev/null 2>&1 + for image in $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'youshandefeiyang/allinone'); do + docker rmi "$image" > /dev/null 2>&1 + done + echo -e "${CYAN}已停止并删除旧的 Allinone 项目。${RESET}" + fi + echo "请选择部署方式(默认: 1):" echo "1) 使用 host 网络模式" echo "2) 使用 bridge 网络模式" @@ -488,39 +512,40 @@ install_allinone() { local public_ip local PORT=35455 - local reverse_proxy_option="" if check_if_in_china; then - public_ip="{路由IP}" # 获取本地 IP - reverse_proxy_option="-e REVERSE_PROXY=$REVERSE_PROXY" + public_ip="{路由IP}" else public_ip=$(curl -s ifconfig.me || echo "{公网IP}") - reverse_proxy_option="-tv=false" - echo -e "${RED}境外已禁止开启 IPTV 服务。${RESET}" + fi + + IMAGE_SOURCE="youshandefeiyang/allinone" + PROXY_IMAGE_SOURCE="$REVERSE_PROXY/youshandefeiyang/allinone" + + if ! docker pull "$IMAGE_SOURCE" > /dev/null 2>&1; then + echo -e "${CYAN}尝试使用代理拉取镜像...${RESET}" + if ! docker pull "$PROXY_IMAGE_SOURCE" > /dev/null 2>&1; then + echo -e "${RED}安装 Allinone 失败,请检查代理或网络连接。${RESET}" + exit 1 + fi + IMAGE_SOURCE="$PROXY_IMAGE_SOURCE" fi case $option in 1) echo "正在使用 host 网络模式安装 Allinone..." - docker run -d \ - --restart unless-stopped \ - --net=host \ - --privileged=true \ - $reverse_proxy_option \ - --name allinone \ - youshandefeiyang/allinone - + port=$PORT + docker run -d --restart unless-stopped --net=host --privileged=true --name allinone "$IMAGE_SOURCE" echo -e "${GREEN}Allinone 安装完成。${RESET}" - install_watchtower + install_watchtower "allinone" echo "---------------------------------------------------------" echo "■ 订阅地址:" if check_if_in_china; then - echo "■ TV 集合 : http://$public_ip:$PORT/tv.m3u" - echo "■ TPTV : http://$public_ip:$PORT/tptv.m3u" + echo "■ TV 集合 : http://$public_ip:$port/tv.m3u" + echo "■ TPTV : http://$public_ip:$port/tptv.m3u" fi - ;; 2) @@ -534,17 +559,11 @@ install_allinone() { return 1 fi - docker run -d \ - --restart unless-stopped \ - -p $port:35455 \ - --privileged=true \ - $reverse_proxy_option \ - --name allinone \ - youshandefeiyang/allinone + docker run -d --restart unless-stopped --net=bridge --privileged=true -p "$port:35455" --name allinone "$IMAGE_SOURCE" echo -e "${GREEN}Allinone 安装完成。${RESET}" - install_watchtower # 定时任务 + install_watchtower "allinone" echo "---------------------------------------------------------" echo "■ 订阅地址:" @@ -552,7 +571,6 @@ install_allinone() { echo "■ TV 集合 : http://$public_ip:$port/tv.m3u" echo "■ TPTV : http://$public_ip:$port/tptv.m3u" fi - ;; *) @@ -589,57 +607,6 @@ live_allinone() { read -p "按 回车键 返回 主菜单 ..." } -# 设置 IPTV 启停 -set_allinone() { - if docker ps -q -f name=allinone; then - - if ! check_if_in_china; then - echo "境外已禁用 IPTV 服务,无法进行开启。" - return - fi - - current_args=$(docker inspect --format '{{.Args}}' allinone) - tv_setting=$(echo "$current_args" | grep -oP '(-tv=\w+)') - is_host_mode=$(echo "$current_args" | grep -oP '(^--net=host)') - - if [[ "$tv_setting" == "-tv=false" ]]; then - read -p "当前 TV 直播服务已关闭,是否要开启?(y/n): " tv_option - if [[ "$tv_option" == "y" || "$tv_option" == "Y" ]]; then - echo "正在开启 TV 直播服务..." - docker stop allinone - docker rm allinone - if [[ $is_host_mode ]]; then - docker run -d --restart unless-stopped --net=host --privileged=true --name allinone youshandefeiyang/allinone - else - port=$(echo "$current_args" | grep -oP '(-p\s+\d+:\d+)' | awk -F':' '{print $1}' | tr -d '-p ') - docker run -d --restart unless-stopped -p $port:35455 --privileged=true --name allinone youshandefeiyang/allinone - fi - echo "Allinone 已开启 TV 直播服务。" - else - echo "保持 TV 直播服务关闭。" - fi - else - read -p "当前 TV 直播服务已开启,是否要关闭?(y/n): " tv_option - if [[ "$tv_option" == "y" || "$tv_option" == "Y" ]]; then - echo "正在关闭 TV 直播服务..." - docker stop allinone - docker rm allinone - if [[ $is_host_mode ]]; then - docker run -d --restart unless-stopped --net=host --privileged=true --name allinone -tv=false youshandefeiyang/allinone - else - port=$(echo "$current_args" | grep -oP '(-p\s+\d+:\d+)' | awk -F':' '{print $1}' | tr -d '-p ') - docker run -d --restart unless-stopped -p $port:35455 --privileged=true --name allinone -tv=false youshandefeiyang/allinone - fi - echo "Allinone 已关闭 TV 直播服务。" - else - echo "保持 TV 直播服务开启。" - fi - fi - else - echo "当前 Allinone 未安装,请先安装 Allinone 项目。" - fi -} - # 设置反向代理参数 proxy_allinone() { read -p "请输入反向代理地址 (回车跳过保持当前值: $REVERSE_PROXY): " input_reverse_proxy @@ -658,47 +625,26 @@ uninstall_allinone() { return fi if docker ps -a | grep -q allinone; then - docker stop allinone - docker rm allinone + docker stop allinone > /dev/null 2>&1 + docker rm allinone > /dev/null 2>&1 fi if docker ps -a | grep -q av3a-assistant; then - docker stop av3a-assistant - docker rm av3a-assistant + docker stop av3a-assistant > /dev/null 2>&1 + docker rm av3a-assistant > /dev/null 2>&1 fi if [ -d "/av3a" ]; then rm -rf /av3a fi - if docker ps -a | grep -q watchtower; then - docker stop watchtower - docker rm watchtower - fi - echo -e "${GREEN}Allinone 及其所有相关文件已完全卸载。${RESET}" -} -# 设置 Allinone 更新 -install_watchtower() { - echo "正在安装或配置 Watchtower 并监控 Allinone 镜像更新..." + for image in $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'youshandefeiyang/allinone'); do + docker rmi "$image" > /dev/null 2>&1 + done - if check_if_in_china; then - reverse_proxy_option="-e REVERSE_PROXY=$REVERSE_PROXY" - else - reverse_proxy_option="" - fi + for image in $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'av3a-assistant'); do + docker rmi "$image" > /dev/null 2>&1 + done - if [ "$(docker ps -a -q -f name=watchtower)" ]; then - echo "Watchtower 已经存在,更新定时任务..." - docker stop watchtower - docker rm watchtower - fi - - docker run -d \ - --name watchtower \ - --restart unless-stopped \ - -v /var/run/docker.sock:/var/run/docker.sock \ - $reverse_proxy_option \ - containrrr/watchtower allinone -c --schedule "0 0 2 * * *" - echo "---------------------------------------------------------" - echo -e "${CYAN}■ 服务器将于每天凌晨两点,进行检测更新。${RESET}" + echo -e "${GREEN}Allinone 及其所有相关文件已完全卸载。${RESET}" } # 检查 Docker Compose 是否安装 @@ -711,7 +657,6 @@ install_Docker_Compose() { if ! command -v docker-compose &> /dev/null; then echo "Docker Compose 安装失败,请手动安装。" echo "参考资料:https://blog.csdn.net/Jimu2018/article/details/138325666" - read -p "按 回车键 返回 主菜单 ..." exit 1 fi @@ -724,7 +669,7 @@ install_Docker_Compose() { # 安装 av3a install_av3a() { if ! check_if_in_china; then - echo -e "${RED}境外已禁止开启 av3a 服务。{RESET}" + echo -e "${RED}境外已禁止开启 av3a 服务。${RESET}" return fi @@ -762,15 +707,15 @@ install_av3a() { if docker ps -a --format '{{.Names}}' | grep -q '^allinone$'; then echo "检测到已存在的 allinone 容器,正在停止并删除..." - docker stop allinone - docker rm allinone + docker stop allinone > /dev/null 2>&1 + docker rm allinone > /dev/null 2>&1 fi if generate_docker_compose "$ARCH" "$INSTALL_PATH"; then cd "$INSTALL_PATH" if docker-compose up -d; then echo "---------------------------------------------------------" - echo -e "${CYAN}Allinone 和 av3a-assistant 均已启动${RESET}" + echo -e "${GREEN}Allinone 和 av3a-assistant 均已安装${RESET}" echo "---------------------------------------------------------" echo "■ 订阅地址:" echo "■ TV 集合 : http://$public_ip:35442/tv.m3u (av3a)" @@ -854,6 +799,101 @@ EOF fi } +############# watchtower ############# + +# 设置 watchtower 任务 +install_watchtower() { + local name=$1 + + if [ "$(docker ps -q -f name=watchtower)" ]; then + existing_args=$(docker inspect --format '{{.Args}}' watchtower) + monitored_containers=$(echo "$existing_args" | grep -oP '(\w+)' | tr '\n' ' ') + + if echo "$monitored_containers" | grep -qw "$name"; then + echo "---------------------------------------------------------" + echo -e "${CYAN}■ 服务器将于每天凌晨五点,进行检测更新。${RESET}" + return + fi + + monitored_containers+="$name" + + docker stop watchtower > /dev/null 2>&1 + docker rm watchtower > /dev/null 2>&1 + else + monitored_containers="$name" + fi + + echo "正在安装或配置 Watchtower 并监控 $name 镜像更新..." + + IMAGE_SOURCE="containrrr/watchtower" + PROXY_IMAGE_SOURCE="$REVERSE_PROXY/containrrr/watchtower" + + if ! docker pull "$IMAGE_SOURCE" > /dev/null 2>&1; then + echo -e "${CYAN}尝试使用代理拉取镜像...${RESET}" + if ! docker pull "$PROXY_IMAGE_SOURCE" > /dev/null 2>&1; then + echo -e "${RED}安装 watchtower 失败,请检查代理或网络连接。${RESET}" + return + fi + IMAGE_SOURCE="$PROXY_IMAGE_SOURCE" + fi + + docker run -d --name watchtower --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock "$IMAGE_SOURCE" $monitored_containers -c --schedule "0 5 * * *" + echo "---------------------------------------------------------" + echo -e "${CYAN}■ 服务器将于每天凌晨五点,进行检测更新。${RESET}" +} + +# 卸载 Watchtower 监控指定容器 +uninstall_watchtower() { + local name=$1 + + if [ "$(docker ps -q -f name=watchtower)" ]; then + echo "正在检查 Watchtower 监控的容器..." + + existing_args=$(docker inspect --format '{{.Args}}' watchtower) + monitored_containers=$(echo "$existing_args" | grep -oP '(\w+)' | tr '\n' ' ') + + if echo "$monitored_containers" | grep -qw "$name"; then + + monitored_containers=$(echo "$monitored_containers" | sed "s/\b$name\b//g") + + if [ -z "$monitored_containers" ]; then + echo "没有其他监控的容器,正在停止并删除 Watchtower..." + docker stop watchtower > /dev/null 2>&1 + docker rm watchtower > /dev/null 2>&1 + + for image in $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'containrrr/watchtower'); do + docker rmi "$image" > /dev/null 2>&1 + done + + echo "Watchtower 已成功卸载。" + else + docker stop watchtower > /dev/null 2>&1 + docker rm watchtower > /dev/null 2>&1 + echo "正在更新 Watchtower,仅监控剩余容器..." + + IMAGE_SOURCE="containrrr/watchtower" + PROXY_IMAGE_SOURCE="$REVERSE_PROXY/containrrr/watchtower" + + if ! docker pull "$IMAGE_SOURCE" > /dev/null 2>&1; then + echo -e "${CYAN}尝试使用代理拉取镜像...${RESET}" + if ! docker pull "$PROXY_IMAGE_SOURCE" > /dev/null 2>&1; then + echo -e "${RED}安装 watchtower 失败,请检查代理或网络连接。${RESET}" + return + fi + IMAGE_SOURCE="$PROXY_IMAGE_SOURCE" + fi + + docker run -d --name watchtower --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock "$IMAGE_SOURCE" $monitored_containers -c --schedule "0 5 * * *" + echo "· "$name" 容器已从监控中删除。" + fi + else + echo "容器 $name 未被 Watchtower 监控。" + fi + else + echo "Watchtower 当前未安装。" + fi +} + ############# 3X-UI ############# # 安装 3X-UI @@ -861,7 +901,8 @@ install_3x_ui() { echo "请选择部署方式:" echo "1) 使用 host 网络模式 (添加节点方便)" echo "2) 使用 bridge 网络模式 (添加节点,需映射端口)" - read -rp "输入选项 (1 或 2): " option + echo "3) 使用 sh 脚本 直接安装 (推荐)" + read -rp "输入选项 (1-3): " option if check_if_in_china; then local public_ip="{路由IP}" @@ -891,7 +932,7 @@ install_3x_ui() { local default_port=17878 read -rp "请输入要映射的端口 (默认: $default_port): " port - port=${port:-$default_port} # 如果用户没有输入,则使用默认端口 + port=${port:-$default_port} if ! [[ "$port" =~ ^[0-9]+$ ]] || [ "$port" -lt 1024 ] || [ "$port" -gt 65535 ]; then echo "无效端口。请使用 1024 到 65535 之间的数字。" @@ -900,6 +941,7 @@ install_3x_ui() { local node_port1=$(generate_random_port) local node_port2=$(generate_random_port) + local node_port3=$(generate_random_port) docker run -d \ -e XRAY_VMESS_AEAD_FORCED=false \ @@ -915,14 +957,20 @@ install_3x_ui() { echo -e "${GREEN}3X-UI 安装完成。${RESET}" echo "访问信息:" echo "URL: http://$public_ip:$port" - echo "随机生成两个节点端口,后续直接添加。" + echo "随机生成两个节点端口,后续自行添加。" echo "节点端口: $node_port1" echo "节点端口: $node_port2" + echo "节点端口: $node_port3" ;; + 3) + bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) - *) - echo "无效选项,请选择 1 或 2。" + echo -e "${GREEN}3X-UI 安装完成。${RESET}" + echo "访问信息:" + echo "输入 x-ui 进行修改设置" + echo "URL: http://$public_ip:2053" ;; + *) echo "无效的选项,请输入 0-3。" ;; esac echo "------------------" @@ -940,8 +988,8 @@ install_3x_ui() { update_3x_ui() { echo "正在更新 3X-UI 面板至最新版本..." if docker ps -a | grep -q 3x-ui; then - docker stop 3x-ui - docker rm 3x-ui + docker stop 3x-ui > /dev/null 2>&1 + docker rm 3x-ui > /dev/null 2>&1 install_3x_ui echo "3X-UI 面板已更新至最新版本。" else @@ -957,19 +1005,16 @@ uninstall_3x_ui() { echo "卸载操作已取消。" return fi - - echo "正在卸载 3X-UI 面板..." if docker ps -a | grep -q 3x-ui; then - docker stop 3x-ui - docker rm 3x-ui - else - echo "警告:未找到 3x-ui 容器。" + docker stop 3x-ui > /dev/null 2>&1 + docker rm 3x-ui > /dev/null 2>&1 fi - if [ -d "$PWD/db" ]; then rm -rf "$PWD/db" - echo "配置文件已删除。" fi + for image in $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'mhsanaei/3x-ui'); do + docker rmi "$image" > /dev/null 2>&1 + done echo -e "${GREEN}3X-UI 卸载完成。${RESET}" } @@ -987,11 +1032,7 @@ install_o11() { local public_ip=$(curl -s ifconfig.me || echo "{公网IP}") fi - docker run -d \ - --restart=always \ - -p $port:1234 \ - --name o11 \ - wechatofficial/o11:latest + docker run -d --restart=always -p $port:1234 --name o11 wechatofficial/o11:latest echo -e "${GREEN}o11 安装完成。${RESET}" echo "访问信息:" @@ -1008,14 +1049,13 @@ uninstall_o11() { echo "卸载操作已取消。" return fi - - echo "正在卸载 o11 面板..." if docker ps -a | grep -q o11; then - docker stop o11 - docker rm o11 - else - echo "警告:未找到 o11 容器。" + docker stop o11 > /dev/null 2>&1 + docker rm o11 > /dev/null 2>&1 fi + for image in $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'wechatofficial/o11'); do + docker rmi "$image" > /dev/null 2>&1 + done echo -e "${GREEN}o11 卸载完成。${RESET}" } @@ -1042,12 +1082,8 @@ uninstall_1panel() { echo "卸载操作已取消。" return fi - - echo "正在卸载 1Panel..." if command -v 1pctl > /dev/null 2>&1; then 1pctl uninstall - else - echo "警告:未找到 1Panel 安装。" fi echo -e "${GREEN}1Panel 卸载完成。${RESET}" } @@ -1065,12 +1101,20 @@ check_internet_connection() { # 检查 IP 归属地 check_if_in_china() { - country=$(curl -s https://ipinfo.io/country) - if [ "$country" = "CN" ]; then - return 0 # 在中国 - else - return 1 # 不在中国 - fi + local sources=( + "https://myip.ipip.net" + "https://ipinfo.io/country" + "http://ip-api.com/json/" + ) + + for source in "${sources[@]}"; do + response=$(curl -s "$source") + if echo "$response" | grep -qiE "中国|China|CN"; then + return 0 + fi + done + + return 1 } # 检查 Docker 是否安装 @@ -1258,8 +1302,8 @@ script_log() { echo "脚本日志: https://pixman.io/topics/142" echo "作者: YanG" echo "当前版本号: $(grep -oP '(?<=^# 最新版本:).*' "$SCRIPT_PATH")" - echo "最后更新时间: 2024.10.21" - echo "更新内容: 修复BUG,部署 Pixman 将不再自动判断,改为手动模式。" + echo "最后更新时间: 2024.10.24" + echo "更新内容: 优化 CN 判断,修复 Allinone 部署 BUG。计划 增加 Sub Store 部署,独立 watchtower 设置" echo "------------------------------------------------" read -p "按 回车键 返回 主菜单 ..." } @@ -1269,6 +1313,7 @@ script_log() { load_parameters # 加载配置参数 download_pixman # 检查脚本更新 + # 检查是否启动定时任务 if [ "$1" == "--auto" ]; then echo "定时任务进行中..." @@ -1319,15 +1364,14 @@ while true; do 2) # 显示 allinone 菜单 while true; do show_allinone_menu - read -p "请输入选项 (0-5): " allinone_choice + read -p "请输入选项 (0-4): " allinone_choice case "$allinone_choice" in 1) check_docker ; install_allinone ;; 2) check_docker ; install_av3a ;; - 3) set_allinone ;; - 4) proxy_allinone ;; - 5) uninstall_allinone ;; + 3) proxy_allinone ;; + 4) uninstall_allinone ;; 0) echo "返回主菜单。" ; break ;; - *) echo "无效的选项,请输入 0-5。" ;; + *) echo "无效的选项,请输入 0-4。" ;; esac done ;;