有289人阅读过
快速安装drpyS服务器【docker版】
发布于2025/02/26 更新于2025/08/13
[ 教程仅保证更新时有效,请自行测试。]
发布于2025/02/26 更新于2025/08/13
[ 教程仅保证更新时有效,请自行测试。]
[ 教程仅保证更新时有效,请自行测试。]
修改代码中的后台登陆账号,密码,api密码,自定义端口,在群晖SSH中直接执行即可,如容器有更新,重新执行即可。
下载完整包,放在群晖上:
例如:/volume1/docker/drpy-node-main
安装脚本:
如需更新资源,重新运行脚本即可。
代码如下:
#!/bin/bash set -e export LANG="zh_CN.UTF-8" export LC_ALL="zh_CN.UTF-8" # ======================== # drpy-node 自动更新脚本 # ======================== #### 设置变量#### # 容器名称 CONTAINER_NAME="drpyS25" # 后台登陆账号 AUTH_NAME="admin" #后台登陆密码 AUTH_PWD="drpys" #API密码 API_PWD="xxxx" #自定义端口 port="9098" # 安装路径 TARGET_DIR="/volume1/docker/drpy-node-main" # drpys资源文件 GH_API="https://api.github.com/repos/hjdhnx/drpy-node/releases/latest" # docker加速 proxy_docker="docker.1ms.run" # 是否代理 proxy_list=("https://gh.llkk.cc" "https://ghproxy.net" "https://gitproxy.click" "https://github.tbedu.top" "https://ghfile.geekertao.top" "https://github.proxy.class3.fun" "https://ghf.无名氏.top" "https://ghm.078465.xyz" "https://gh-proxy.net" "https://jiashu.1win.eu.org" "https://j.1win.ggff.net" "https://j.1lin.dpdns.org" "https://gh-deno.mocn.top" "https://git.yylx.win" "https://tvv.tw" "https://gp-us.fyan.top" "https://gitproxy.127731.xyz" "https://github.cmsz.dpdns.org" "https://ghproxy.fangkuai.fun" "https://github.3x25.com" "https://ghproxy.vansour.top" "https://ghp.ml1.one" "https://x.whereisdoge.work" "https://y.whereisdoge.work" "https://gh.catmak.name" "https://hub.gitmirror.com" "https://github.dpik.top" "https://gh.dpik.top" "http://fast.qmwneb946.dpdns.org" "https://gh-proxy.com" "https://gh.b52m.cn" "https://gh.bugdey.us.kg" "https://gh.wsmdn.dpdns.org" "https://github.lxxz.xyz" "http://gh.927223.xyz") # 旁路代理 Local_proxy="http://192.168.1.2:1085" export http_proxy=$Local_proxy export https_proxy=$Local_proxy # 版本选择 Green=1 # 1=绿色版, 0=完整版 ####检查容器#### # 检查是否存在同名容器 EXISTING_CONTAINER=$(docker ps -a -q -f name=$CONTAINER_NAME) if [ -z "$EXISTING_CONTAINER" ]; then # 准备环境文件 cat > /tmp/.env <<EOF NODE_ENV=production #justaflag ENV='staging' LOG_WITH_FILE=1 #trace/debug/info/warn/error/fatal LOG_LEVEL=info COOKIE_AUTH_CODE=drpys API_AUTH_NAME=${AUTH_NAME} API_AUTH_CODE=${AUTH_PWD} API_PWD=${API_PWD} EPG_URL=https://iptv.crestekk.cn/epgphp/index.php?ch={name}&date={date} LOGO_URL=https://live.mxdyeah.top/logo/{name}.png LIVE_URL=https://livetv.wqwqwq.sbs/tv.m3u MAX_TASK=8 EOF # 拉取容器 # mypull eulac/my-drpys:latest # 安装容器,如未拉取则先拉取再安装 docker create --name $CONTAINER_NAME -p $port:5757 --env-file /tmp/.env -v $TARGET_DIR:/drpy-node $proxy_docker/eulac/my-drpys:latest else # 停止容器 echo "🛑 停止容器 $CONTAINER_NAME ..." docker stop "$CONTAINER_NAME" fi ####更新资源#### # 获取最新 release 的 .7z 下载地址 echo "🌐 正在获取最新发布的 .7z 文件..." if [ "$Green" == "1" ]; then # 绿色版(包含 green) download_url=$(curl -s "$GH_API" | grep "browser_download_url" | grep "\.7z" | grep -i green | head -n 1 | cut -d '"' -f 4) else # 完整版(排除 green) download_url=$(curl -s "$GH_API" | grep "browser_download_url" | grep "\.7z" | grep -vi green | head -n 1 | cut -d '"' -f 4) fi # 校验下载地址 if [[ -z "$download_url" ]]; then echo "❌ 未找到符合条件的 .7z 文件,操作终止。" exit 1 fi # 创建临时目录 tmp_dir=$(mktemp -d) cd "$tmp_dir" || exit 1 # 初始化 final_download_url="" # 优先走旁路,其次走加速,不行就尝试直连 if [ -n "$Local_proxy" ] || [ "${#proxy_list[@]}" -eq 0 ]; then final_download_url="$download_url" else for proxy in "${proxy_list[@]}"; do [[ "${proxy}" != */ ]] && proxy="${proxy}/" echo "尝试代理: $proxy" try_url="${proxy}${download_url}" if wget --spider -q "$try_url"; then echo "✅ 可用代理:$proxy" final_download_url="$try_url" break else echo "❌ 代理失败:$proxy" fi done if [ -z "$final_download_url" ]; then echo "⚠️ 所有代理均失败,使用原始地址" final_download_url="$download_url" fi fi echo "✅ 下载地址: $final_download_url" echo "⬇️ 开始下载 release.7z ..." wget -q --show-progress "$final_download_url" -O release.7z # 清空并准备目标目录 echo "🧹 清空目标目录 $TARGET_DIR ..." mkdir -p "$TARGET_DIR" rm -rf "$TARGET_DIR"/* # 解压文件 echo "📦 解压 release.7z 到 $TARGET_DIR ..." 7z x release.7z -o"$TARGET_DIR" -y # 清理临时目录 cd / || exit 1 rm -rf "$tmp_dir" ####启动容器#### echo "🚀 启动容器 $CONTAINER_NAME ..." docker start "$CONTAINER_NAME" MAX_RETRIES=10 # 重试启动最大次数 SLEEP_SECONDS=3 # 重试启动间隔时间 attempt=1 while true; do running=$(docker ps --filter "name=$CONTAINER_NAME" --filter "status=running" --format "{{.Names}}") if [ "$running" == "$CONTAINER_NAME" ]; then echo "✅ 容器 $CONTAINER_NAME 已成功启动" echo "🎉 更新完成 ✅" break else echo "❌ 容器 $CONTAINER_NAME 尚未启动,等待 $SLEEP_SECONDS 秒后重试 ($attempt/$MAX_RETRIES)..." ((attempt++)) if [ $attempt -gt $MAX_RETRIES ]; then echo "⚠️ 达到最大重试次数,启动失败" exit 1 fi sleep $SLEEP_SECONDS fi done
文章对你有帮助吗?
- 一般[0]
- 很赞[0]
- 没用[0]
- 垃圾[0]
- 无语[0]