From b4f2424b245f869849ced2eae4109015f11a8250 Mon Sep 17 00:00:00 2001 From: wukongdaily <2666180@gmail.com> Date: Sat, 8 Jun 2024 16:33:09 +0800 Subject: [PATCH] v1.2.3 --- xiaoya/docker-compose-alist.yml | 20 +++++ xiaoya/docker-compose-all.yml | 4 +- xiaoya/docker-compose-jellyfin.yml | 6 +- xiaoya/env | 41 +++++++++++ xiaoya/xiaoya-all.sh | 113 ++++++++++++++++++++++++----- 5 files changed, 163 insertions(+), 21 deletions(-) create mode 100644 xiaoya/docker-compose-alist.yml create mode 100644 xiaoya/env diff --git a/xiaoya/docker-compose-alist.yml b/xiaoya/docker-compose-alist.yml new file mode 100644 index 0000000..ba4e852 --- /dev/null +++ b/xiaoya/docker-compose-alist.yml @@ -0,0 +1,20 @@ +services: + alist: + image: ghcr.io/monlor/xiaoya-alist:latest + volumes: + - xiaoya:/data + ports: + - "5678:5678" + - "2345:2345" + - "2346:2346" + env_file: + - env + restart: unless-stopped + networks: + - default + +networks: + default: + +volumes: + xiaoya: \ No newline at end of file diff --git a/xiaoya/docker-compose-all.yml b/xiaoya/docker-compose-all.yml index 95c0822..da26ae6 100644 --- a/xiaoya/docker-compose-all.yml +++ b/xiaoya/docker-compose-all.yml @@ -24,6 +24,7 @@ services: - media:/media/xiaoya - config:/media/config - cache:/media/config/cache + - jf_media:/media/jf_xiaoya - jf_config:/media/jf_config - jf_cache:/media/jf_config/cache - meta:/media/temp @@ -57,7 +58,7 @@ services: - metadata - alist volumes: - - media:/media + - jf_media:/media - jf_config:/config - jf_cache:/cache ports: @@ -74,6 +75,7 @@ volumes: media: config: cache: + jf_media: jf_config: jf_cache: meta: diff --git a/xiaoya/docker-compose-jellyfin.yml b/xiaoya/docker-compose-jellyfin.yml index 0c50558..b0ddfeb 100644 --- a/xiaoya/docker-compose-jellyfin.yml +++ b/xiaoya/docker-compose-jellyfin.yml @@ -21,7 +21,7 @@ services: - env volumes: - xiaoya:/etc/xiaoya - - media:/media/xiaoya + - jf_media:/media/jf_xiaoya - jf_config:/media/jf_config - jf_cache:/media/jf_config/cache - meta:/media/temp @@ -39,7 +39,7 @@ services: - metadata - alist volumes: - - media:/media + - jf_media:/media - jf_config:/config - jf_cache:/cache ports: @@ -53,7 +53,7 @@ networks: volumes: xiaoya: - media: + jf_media: jf_config: jf_cache: meta: \ No newline at end of file diff --git a/xiaoya/env b/xiaoya/env new file mode 100644 index 0000000..6732dc0 --- /dev/null +++ b/xiaoya/env @@ -0,0 +1,41 @@ +TZ=Asia/Shanghai +# 阿里云盘token +ALIYUN_TOKEN= +# 阿里云盘open token +ALIYUN_OPEN_TOKEN= +# 阿里云盘文件夹ID +ALIYUN_FOLDER_ID= +# 自动更新小雅alist文件 +AUTO_UPDATE_ENABLED=true +# 自动清理阿里云盘 +AUTO_CLEAR_ENABLED=true +# 阿里云盘自动清理间隔,单位分钟,默认1分钟 +AUTO_CLEAR_INTERVAL= +# pikpak 账号,用来观看小雅中pikpak分享给你的资源,格式:`qqq@qq.com:aaadds` +PIKPAK_USER= +# 开启tvbox随机订阅地址,true/false,默认false +TVBOX_SECURITY= +# 开启登陆功能,true/false,默认false +FORCE_LOGIN= +# webdav用户名为dav,设置密码。默认用户密码:guest/guest_Api789 +WEBDAV_PASSWORD= + +# emby 地址,容器内部使用地址,一般不用改 +EMBY_ADDR=http://emby:6908 +# jellyfin 地址,容器内部使用地址,一般不用改 +JELLYFIN_ADDR=http://jellyfin:8096 +# alist 地址,容器内部使用地址,一般不用改 +ALIST_ADDR=http://alist:5678 + +# 是否启用emby +EMBY_ENABLED=true +# 是否启用jellyfin +JELLYFIN_ENABLED=false +# 自动更新emby的配置,依赖EMBY_APIKEY +AUTO_UPDATE_EMBY_CONFIG_ENABLED=true +# 自动更新emby配置,config.mp4间隔,单位天,默认7天 +AUTO_UPDATE_EMBY_INTERVAL= +# 自动更新元数据 +AUTO_UPDATE_METADATA_ENABLED=true +# emby的apikey +EMBY_APIKEY= \ No newline at end of file diff --git a/xiaoya/xiaoya-all.sh b/xiaoya/xiaoya-all.sh index 5744aac..da1ecb2 100644 --- a/xiaoya/xiaoya-all.sh +++ b/xiaoya/xiaoya-all.sh @@ -12,37 +12,100 @@ sedsh() { fi } - +# 格式https://xxx.com/ +GH_PROXY="${GH_PROXY:=}" # 格式xxx.com IMAGE_PROXY="${IMAGE_PROXY:=}" # 服务镜像 IMAGE_TAG="${VERSION:-latest}" - +# 服务下载地址 +DOWNLOAD_URL="https://cafe.cpolar.cn/wkdaily/zero3/raw/branch/main/xiaoya" # 欢迎信息 echo "欢迎使用xiaoya服务部署脚本" echo "项目地址:https://github.com/monlor/docker-xiaoya" -echo "原作者:monlor (https://link.monlor.com)" +echo "作者:monlor (https://link.monlor.com)" echo +# 检查docker服务是否存在,不存在则询问用户是否安装,不安装退出脚本 +if ! command -v docker &> /dev/null; then + if [ "$(uname -o)" = "Darwin" ]; then + echo "Docker 未安装,请安装docker后再运行脚本,推荐OrbStack:https://orbstack.dev/" + exit 1 + fi + read -rp "Docker 未安装,是否安装?(y/n): " install + if [ "$install" = "y" ]; then + echo "安装docker..." + curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun + systemctl enable docker + systemctl start docker + else + echo "退出安装" + exit 1 + fi +fi +DOCKER_COMPOSE="docker compose" + +# 检查是否安装了compose插件,docker compose 命令 +if ! docker compose &> /dev/null && ! which docker-compose &> /dev/null; then + read -rp "Docker Compose 未安装,是否安装?(y/n): " install + if [ "$install" = "y" ]; then + echo "安装docker compose..." + # 判断系统是x86还是arm,arm有很多种类,都要判断 + if [ "$(uname -m)" = "aarch64" ]; then + file=docker-compose-linux-aarch64 + elif [ "$(uname -m)" = "x86_64" ]; then + file=docker-compose-linux-x86_64 + else + echo "不支持的系统架构$(uname -m), 请自行安装docker compose(https://docs.docker.com/compose/install/linux/#install-using-the-repository)" + exit 1 + fi + curl -SL "${GH_PROXY}https://github.com/docker/compose/releases/download/v2.27.1/$file" -o /usr/local/bin/docker-compose + chmod +x /usr/local/bin/docker-compose + else + echo "退出安装" + exit 1 + fi +fi + +if ! docker compose &> /dev/null; then + DOCKER_COMPOSE="docker-compose" +fi # 让用户输入服务部署目录,默认/opt/xiaoya read -rp "请输入服务部署目录(默认/opt/xiaoya): " install_path install_path=${install_path:=/opt/xiaoya} # 检查服务是否已经运行 -echo "检查服务是否已经存在..." if [ -f "$install_path/docker-compose.yml" ]; then # 询问用户是否要更新服务 - read -rp "检查到服务已存在,是否更新服务?(y/n): " update + echo + echo "检查到服务已存在,更新会覆盖docker-compose.yml文件,不会覆盖env文件" + read -rp "是否更新服务?(y/n): " update if [ "${update}" != "y" ]; then echo "退出安装" exit 1 fi fi +DOCKER_HOME="$(docker info | grep "Docker Root Dir" | awk -F ':' '{print$2}')" + +# 选择数据保存位置 +data_location=1 +if [ -d "$install_path/data" ]; then + data_location=2 +fi +cat <<-EOF + +请选择数据保存位置: +1. Docker卷(数据保存在: ${DOCKER_HOME}/volumes) +2. 服务部署目录(数据保存在: ${install_path}) +EOF +read -rp "请选择数据保存位置(默认为${data_location}): " res +data_location=${res:-${data_location}} + token="" open_token="" folder_id="" @@ -76,7 +139,7 @@ fi # 让用户输入阿里云盘转存目录folder_id,folder_id获取方式教程:https://www.aliyundrive.com/s/rP9gP3h9asE echo -echo "进入阿里云盘网页版,创建一个文件夹,点击文件夹,复制浏览器阿里云盘地址末尾的文件夹ID(最后一个斜杠/后面的一串字符串)" +echo "进入阿里云盘网页版,资源盘里面创建一个文件夹,点击文件夹,复制浏览器阿里云盘地址末尾的文件夹ID(最后一个斜杠/后面的一串字符串)" read -rp "请输入阿里云盘缓存目录ID(默认为$folder_id): " res folder_id=${res:=$folder_id} if [ ${#folder_id} -ne 40 ]; then @@ -88,17 +151,21 @@ fi echo echo "部署类型:" echo "1. alist + emby (默认)" -echo "2. alist + jellyfin" -echo "3. alist + emby + jellyfin" +echo "2. alist" +echo "3. alist + jellyfin" +echo "4. alist + emby + jellyfin" read -rp "请选择部署服务类型: " service_type case $service_type in 1) service_type="" ;; 2) - service_type="-jellyfin" + service_type="-alist" ;; 3) + service_type="-jellyfin" + ;; + 4) service_type="-all" ;; *) @@ -115,7 +182,7 @@ fi cd "$install_path" echo "开始生成配置文件docker-compose${service_type}.yml..." -curl -#Lo "$install_path/docker-compose.yml" "https://cafe.cpolar.cn/wkdaily/zero3/raw/branch/main/xiaoya/docker-compose${service_type}.yml" +curl -#Lo "$install_path/docker-compose.yml" "${DOWNLOAD_URL}/docker-compose${service_type}.yml" if [ ! -f "$install_path/env" ]; then curl -#Lo "$install_path/env" "${DOWNLOAD_URL}/env" fi @@ -130,8 +197,21 @@ fi # 修改镜像版本 sedsh "s#:latest#:$IMAGE_TAG#g" docker-compose.yml +# 修改数据保存位置 +if [ "$data_location" = "2" ]; then + sed -n '/^volumes/,$p' ./docker-compose.yml | sed -e 's/://g' | grep -v volumes | while read -r volume; do + if [ -z "${volume}" ]; then + continue + fi + if [ ! -d "$install_path/data/$volume" ]; then + mkdir -p "$install_path/data/$volume" + fi + sedsh "s#- $volume:#- $install_path/data/$volume:#g" docker-compose.yml + done + sedsh "/^volumes/,\$d" docker-compose.yml +fi + echo "开始部署服务..." -DOCKER_COMPOSE="docker compose" $DOCKER_COMPOSE -f docker-compose.yml up --remove-orphans --pull=always -d echo "服务开始部署,如果部署emby/jellyfin,下载并解压60G元数据需要一段时间,请耐心等待..." @@ -149,8 +229,7 @@ echo "加载配置:$install_path/manage.sh reload" echo "高级用户自定义配置:$install_path/env" echo "修改env或者compose配置后,需要执行上面的加载配置reload命令生效!" -# 获取当前服务器ip -ip=$(curl -s ip.3322.net 2> /dev/null) + # 内网ip local_ip="" if [[ "$(uname -o)" = "Darwin" ]]; then @@ -163,11 +242,11 @@ fi echo echo "> 服务正在部署,请查看日志等待部署成功后,尝试访问下面的地址" -echo "alist:https://api.linkopenai.com/topup地址: http://$local_ip:5678" +echo "alist: http://$local_ip:5678" echo "webdav: http://$local_ip:5678/dav, 默认用户密码: guest/guest_Api789" echo "tvbox: http://$local_ip:5678/tvbox/my_ext.json" -echo "emby: http://$local_ip:6908, 默认用户密码: xiaoya/1234" -echo "jellyfin: http://$local_ip:8096,默认用户密码:ailg/5678" +echo "emby: http://$local_ip:2345, 默认用户密码: xiaoya/1234" +echo "jellyfin: http://$local_ip:2346, 默认用户密码:ailg/5678" echo echo "还没有部署完,执行这个命令查看日志:$install_path/manage.sh logs" @@ -200,4 +279,4 @@ case \$1 in esac EOF -chmod +x "$install_path/manage.sh" +chmod +x "$install_path/manage.sh" \ No newline at end of file