597
文章
·
92041
阅读
597
文章
·
92041
阅读

有289人阅读过 快速安装drpyS服务器【docker版】
发布于2025/02/26 更新于2025/08/13
[ 教程仅保证更新时有效,请自行测试。]

修改代码中的后台登陆账号,密码,api密码,自定义端口,在群晖SSH中直接执行即可,如容器有更新,重新执行即可。

下载完整包,放在群晖上:

Releases · hjdhnx/drpy-node

例如:/volume1/docker/drpy-node-main

安装脚本:

DrpyS.sh


如需更新资源,重新运行脚本即可。


代码如下:

#!/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]
扫一扫,手机浏览手机访问本站