有593人阅读过
快速安装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]


