使用脚本快速搭建 qbittorrent、moivepilot、jellyfin/emby/plex 等服务
一、准备三个文件 .env 、docker-compose.yml 、install.sh
1、.env
DOCKER_ROOT_PATH=/vol1/1001/docker
VIDEO_ROOT_PATH=/vol1/1001/video
HOST_IP=10.0.92.3
JELLYFIN_API_KEY=23a47fc7a15c442b8634cd3de9fa7641
EMBY_API_KEY_AMILY=4a138e7210704d948dbdd6853e316d9c
EMBY_API_KEY=584800bad1c9401e9f150e073413f5fd
PLEX_CLAIM_TOKEN=claim-mULk2Lxu8m-PjUXG1z2d
ICC2022_UID=xxxxx
ICC2022_PASSKEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DOCKER_ROOT_PATH :飞牛docker文件夹的根路径
VIDEO_ROOT_PATH :video文件夹的根路径
HOST_IP :飞牛的IP地址
ICC2022_UID 、ICC2022_PASSKEY :用于mp认证的pt站点的uid与密钥,v1必须,v2非必须,也可更换其他站点
2、docker-compose.yml 直接复制就好
version: '3.2'
services:
nastool:
container_name: nastool
#image: nastool/nas-tools:latest
image: hsuyelin/nas-tools:latest
#image: registry.cn-hangzhou.aliyuncs.com/ptlj/nas-tools:latest
volumes:
- ${DOCKER_ROOT_PATH}/nastool/config:/config # 冒号左边请修改为你想保存配置的路径
- ${VIDEO_ROOT_PATH}:/video # 媒体目录,多个目录需要分别映射进来,需要满足配置文件说明中的要求
environment:
- PUID=0 # 想切换为哪个用户来运行程序,该用户的uid
- PGID=0 # 想切换为哪个用户来运行程序,该用户的gid
- UMASK=022 # 掩码权限,默认000,可以考虑设置为022
- NASTOOL_AUTO_UPDATE=false # 如需在启动容器时自动升级程程序请设置为true
- NASTOOL_CN_UPDATE=false # 如果开启了容器启动自动升级程序,并且网络不太友好时,可以设置为true,会使用国内源进行软件更新
#- REPO_URL=https://ghproxy.com/https://github.com/NAStool/nas-tools.git # 当你访问github网络很差时,可以考虑解释本行注释
restart: unless-stopped
network_mode: host
privileged: true
moviepilot:
container_name: moviepilot
#image: jxxghp/moviepilot:latest
image: registry.cn-hangzhou.aliyuncs.com/ptlj/moviepilot:latest
volumes:
- ${DOCKER_ROOT_PATH}/moviepilot/main:/moviepilot #程序主目录,必选
- ${DOCKER_ROOT_PATH}/moviepilot/config:/config #config 配置文件,必选
- ${VIDEO_ROOT_PATH}:/video
environment:
# 基础设置
- NGINX_PORT=3000
- PUID=0
- PGID=0
- UMASK=022
- SUPERUSER=admin #登录账号
- SUPERUSER_PASSWORD=password #登录密码
- API_TOKEN=moviepilot
- MOVIEPILOT_AUTO_UPDATE=false #重启更新
# - PROXY_HOST=代理地址 # 代理地址
- TMDB_API_DOMAIN=api.tmdb.org
# 下载目录设置
- DOWNLOAD_PATH=/video/downloads # 下载保存目录
- DOWNLOAD_CATEGORY=false #下载二级分类开关
- DOWNLOAD_MOVIE_PATH=/video/downloads/movie
- DOWNLOAD_TV_PATH=/video/downloads/tv
- DOWNLOAD_ANIME_PATH=/video/downloads/anime
# 媒体库目录设置
- LIBRARY_PATH=/video/link #媒体库目录
- LIBRARY_MOVIE_NAME=movie #电影目录名
- LIBRARY_TV_NAME=tv #电视剧目录名
- LIBRARY_ANIME_NAME=anime # 动漫目录名
- LIBRARY_CATEGORY=true # 媒体库自动分类功能
# 媒体库功能设置
- DOWNLOAD_SUBTITLE=true # 下载站点字幕
- DOWNLOADER_MONITOR=true # 下载器监控
- TORRENT_TAG=MOVIEPILOT #种子标签
- SCRAP_METADATA=true # 刮削入库的媒体文件
- REFRESH_MEDIASERVER=true # 入库刷新媒体库
- TRANSFER_TYPE=link #转移方式,支持link/copy/move/softlink
# CookieCloud设置
# - COOKIECLOUD_HOST=http://xxx:8080 #CookieCloud服务器地址 必须添加
# - COOKIECLOUD_KEY= #cc用户KEY
# - COOKIECLOUD_PASSWORD= #cc端对端加密密码
# - COOKIECLOUD_INTERVAL=180 # CookieCloud同步间隔(分钟)
# - USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203 #CookieCloud对应的浏览器UA,可选,同步站点后可以在管理界面中修改
# 消息通知渠道
# - MESSAGER=slack #消息通知渠道
# slack通知
# - SLACK_OAUTH_TOKEN=xoxb-xxx #Slack Bot User OAuth Token
# - SLACK_APP_TOKEN=xapp-xxx #Slack App-Level Token
# - SLACK_CHANNEL= #频道名称,默认全体
# 下载器设置
##qbittorrent设置项
- QB_HOST=http://${HOST_IP}:9000 # qbittorrent地址,http://开头
- QB_USER=admin #qbittorrent用户名
- QB_PASSWORD=adminadmin #qbittorrent密码
# 媒体服务器 emby/jellyfin/plex
- MEDIASERVER=emby
# - JELLYFIN_HOST=http://${HOST_IP}:8096
# - JELLYFIN_API_KEY=${JELLYFIN_API_KEY}
- EMBY_HOST=http://${HOST_IP}:8096
# - EMBY_API_KEY=${EMBY_API_KEY}
- EMBY_API_KEY=${EMBY_API_KEY_AMILY}
- MEDIASERVER_SYNC_INTERVAL:6 # 媒体服务器同步间隔(小时)
# 用户认证
- AUTH_SITE=icc2022 #认证站点
- ICC2022_UID=${ICC2022_UID} #UID
- ICC2022_PASSKEY=${ICC2022_PASSKEY} #passkey
# 其他设置
- BI**EMORY_MODE=false #大内存模式
# ports:
# - 3000:3000 # web 接口
# - 3001:3001 # overseerr 接口
restart: unless-stopped
network_mode: host
hostname: moviepilot
privileged: true
moviepilot_v2:
container_name: moviepilot_v2
image: jxxghp/moviepilot-v2:latest
stdin_open: true
tty: true
volumes:
- ${DOCKER_ROOT_PATH}/moviepilot_v2/core:/moviepilot/.cache/ms-playwright #程序主目录,必选
- ${DOCKER_ROOT_PATH}/moviepilot_v2/config:/config #config 配置文件,必选
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${VIDEO_ROOT_PATH}:/video
environment:
- 'NGINX_PORT=3000'
- 'PORT=3001'
- 'PUID=0'
- 'PGID=0'
- 'UMASK=000'
- 'TZ=Asia/Shanghai'
# - 'AUTH_SITE=iyuu' # v2.0.7+版本以后,可不设置,直接通过 UI 配置
# - 'IYUU_SIGN=xxxx'
- 'SUPERUSER=admin' # 设置超级用户
# - 'API_TOKEN=无需手动配置,系统会自动生成。如果需要自定义配置,必须为16位以上的复杂字符串'
restart: unless-stopped
network_mode: host
hostname: moviepilot-v2
privileged: true
qb-9000:
container_name: qb-9000
image: linuxserver/qbittorrent:4.5.5-r0-ls287
#image: registry.cn-hangzhou.aliyuncs.com/ptlj/qbittorrent:4.5.5-r0-ls287
volumes:
- ${DOCKER_ROOT_PATH}/qbittorrent/config:/config
- ${VIDEO_ROOT_PATH}/downloads:/video/downloads
environment:
- PUID=0
- PGID=0
- TZ=Asia/Shanghai
- WEBUI_PORT=9000
- SavePatch=/video/downloads
- TempPatch=/video/downloads
# ports:
# - 9000:9000
# - 32156:32156
# - 32156:32156/udp
restart: unless-stopped
network_mode: host
privileged: true
jellyfin:
image: nyanmisaka/jellyfin:latest
#image: registry.cn-hangzhou.aliyuncs.com/ptlj/jellyfin:latest
container_name: jellyfin
volumes:
- ${DOCKER_ROOT_PATH}/jellyfin/config:/config
- ${DOCKER_ROOT_PATH}/jellyfin/cache:/cache
- ${VIDEO_ROOT_PATH}:/video
environment:
- PUID=0
- PGID=0
- TZ=Asia/Shanghai
- JELLYFIN_PublishedServerUrl=${HOST_IP}
# ports:
# - 8096:8096 # http访问端口
# - 8920:8920 # https访问端口
# - 7359:7359/udp
# - 1900:1900/udp
devices:
- /dev/dri:/dev/dri
#- /dev/nvidia0:/dev/nvidia0
#- /dev/nvidiactl:/dev/nvidiactl
#- /dev/nvidia-uvm:/dev/nvidia-uvm
#- /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools
restart: unless-stopped
network_mode: host
privileged: true
emby:
#image: lovechen/embyserver:latest
image: amilys/embyserver:beta
#image: registry.cn-hangzhou.aliyuncs.com/ptlj/embyserver:beta
container_name: emby
volumes:
- ${DOCKER_ROOT_PATH}/emby/config:/config
- ${VIDEO_ROOT_PATH}:/video
environment:
- UID=0
- GID=0
- GIDLIST=0
- TZ=Asia/Shanghai
# ports:
# - 8096:8096 # http访问端口
# - 8920:8920 # https访问端口
# - 7359:7359/udp #local network discovery
# - 1900:1900/udp #dlna
devices:
- /dev/dri:/dev/dri
#- /dev/nvidia0:/dev/nvidia0
#- /dev/nvidiactl:/dev/nvidiactl
#- /dev/nvidia-uvm:/dev/nvidia-uvm
#- /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools
#- /dev/nvidia-modeset:/dev/nvidia-modeset
#runtime: nvidia
restart: unless-stopped
network_mode: host
privileged: true
plex:
image: plexinc/pms-docker:latest # latest 安装最新的版本
#image: registry.cn-hangzhou.aliyuncs.com/ptlj/pms-docker:latest
container_name: plex
hostname: PlexServer # 自定义主机名称
restart: unless-stopped
network_mode: host
privileged: true # 设置重启策略
volumes:
- ${DOCKER_ROOT_PATH}/plex/config:/config # Plex 配置文件目录
- ${DOCKER_ROOT_PATH}/plex/transcode:/transcode # Plex 转码文件目录
- ${DOCKER_ROOT_PATH}/plex/data:/data # Plex 数据文件目录
- ${VIDEO_ROOT_PATH}:/video"
#ports:
# - 32400:32400/tcp # Plex 网页访问端口,例如要改为通过 8080 端口访问,就修改为8080:32400
# - 3005:3005/tcp # Plex Companion
# - 8324:8324/tcp # controlling Plex for Roku via Plex Companion
# - 32469:32469/tcp # access to the Plex DLNA Server
# - 32468:1900/udp # access to the Plex DLNA Server
# - 32410:32410/udp # current GDM network discovery
# - 32412:32412/udp # current GDM network discovery
# - 32413:32413/udp # current GDM network discovery
# - 32414:32414/udp # current GDM network discovery
devices: # Share hardware devices with FFmpeg (optional)
- /dev/dri:/dev/dri # Intel QSV
# - "/dev/nvidia0:/dev/nvidia0" # Nvidia CUDA
# - "/dev/nvidiactl:/dev/nvidiactl"
# - "/dev/nvidia-modeset:/dev/nvidia-modeset"
# - "/dev/nvidia-nvswitchctl:/dev/nvidia-nvswitchctl"
# - "/dev/nvidia-uvm:/dev/nvidia-uvm"
# - "/dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools"
# - "/dev/video11:/dev/video11" # Raspberry V4L2
environment:
TZ: Asia/Shanghai # 容器内部时区
PLEX_UID: 0 # 在容器内创建的用户 ID(不懂勿改)
PLEX_GID: 0 # 在容器内创建的用户组 ID(不懂勿改)
PLEX_CLAIM: ${PLEX_CLAIM_TOKEN} # 真实服务器的声明令牌,您可以通过访问 https://www.plex.tv/claim 获取声明令牌以将您的服务器登录到您的 Plex 帐户
#ADVERTISE_IP: hostIPAddress:32400/ # 填写外部访问的固定 IP 或域名,没有的话可以删除此行
chinese-sub-finder:
container_name: chinese-sub-finder
image: allanpk716/chinesesubfinder:latest
#image: registry.cn-hangzhou.aliyuncs.com/ptlj/chinesesubfinder:latest
volumes:
- ${DOCKER_ROOT_PATH}/chinese-sub-finder/config:/config
- ${DOCKER_ROOT_PATH}/chinese-sub-finder/cache:/app/cache
- ${VIDEO_ROOT_PATH}:/media
environment:
- PUID=0
- PGID=0
- UMASK=022
- TZ=Asia/Shanghai
restart: unless-stopped
network_mode: host
privileged: true
3、install.sh 直接复制就行
#!/bin/sh
source ./.env
NT / nt"
NON / non"
QB / qb"
JEF / jef"
MP / mp"
MPV / mpv"
EB / eb"
PE / pe"
CSF / csf"
read -p "请输入你想安装的服务:" server
# 创建文件夹
echo "初始化文件夹"
mkdir -p $VIDEO_ROOT_PATH/downloads/movie \
&& mkdir -p $VIDEO_ROOT_PATH/downloads/tv \
&& mkdir -p $VIDEO_ROOT_PATH/downloads/anime \
&& mkdir -p $VIDEO_ROOT_PATH/link/movie \
&& mkdir -p $VIDEO_ROOT_PATH/link/tv \
&& mkdir -p $VIDEO_ROOT_PATH/link/anime
# 安装 qbittorrent
if [[ $server =~ $QB ]]
then
echo "安装 qbittorrent"
mkdir -p $DOCKER_ROOT_PATH/qbittorrent \
&& curl -L https://pt-cdn.oss-cn-hangzhou.aliyuncs.com/qbittorrentbak.tgz > qbittorrentbak.tgz \
&& tar -zxvf qbittorrentbak.tgz \
&& cp -rf qbittorrent/* $DOCKER_ROOT_PATH/qbittorrent/ \
&& docker compose up -d qb-9000
fi
# 安装 nastool
if [[ $server =~ $NT ]]
then
echo "安装 nastool"
mkdir -p $DOCKER_ROOT_PATH/nastool \
&& curl -L https://pt-cdn.oss-cn-hangzhou.aliyuncs.com/nastoolbak.tgz > nastoolbak.tgz \
&& tar -zxvf nastoolbak.tgz \
&& cp -rf nastool/* $DOCKER_ROOT_PATH/nastool/ \
&& docker compose up -d nastool
fi
# 安装 nastool 非官方版本
if [[ $server =~ $NON ]]
then
echo "安装 nastool 非官方版本"
mkdir -p $DOCKER_ROOT_PATH/nastool \
&& curl -L https://pt-cdn.oss-cn-hangzhou.aliyuncs.com/nastoolnobak.tgz > nastoolnobak.tgz \
&& tar -zxvf nastoolnobak.tgz \
&& cp -rf nastool/* $DOCKER_ROOT_PATH/nastool/ \
&& sed -i "s/192.168.2.100/$HOST_IP/g" `grep '192.168.2.100' -rl $DOCKER_ROOT_PATH/nastool` \
&& docker compose up -d nastool
fi
# 安装 jellyfin
if [[ $server =~ $JEF ]]
then
echo "安装 jellyfin"
mkdir -p $DOCKER_ROOT_PATH/jellyfin \
&& curl -L https://pt-cdn.oss-cn-hangzhou.aliyuncs.com/jellyfinbak.tgz > jellyfinbak.tgz \
&& tar -zxvf jellyfinbak.tgz \
&& cp -rf jellyfin/* $DOCKER_ROOT_PATH/jellyfin/ \
&& docker compose up -d jellyfin
fi
# 安装 emby
if [[ $server =~ $EB ]]
then
echo "安装 emby"
mkdir -p $DOCKER_ROOT_PATH/emby \
&& curl -L https://pt-cdn.oss-cn-hangzhou.aliyuncs.com/embybak4.8.tgz > embybak.tgz \
&& tar -zxvf embybak.tgz \
&& cp -rf emby/* $DOCKER_ROOT_PATH/emby/ \
&& docker compose up -d emby
fi
# 安装 plex
if [[ $server =~ $PE ]]
then
echo "安装 plex"
mkdir -p $DOCKER_ROOT_PATH/plex \
&& curl -L https://pt-cdn.oss-cn-hangzhou.aliyuncs.com/plexbak.tgz > plexbak.tgz \
&& tar -zxvf plexbak.tgz \
&& cp -rf plex/* $DOCKER_ROOT_PATH/plex/ \
&& docker compose up -d plex
fi
# 安装 moivepilot
if [[ $server =~ $MP ]]
then
echo "安装 moivepilot"
mkdir -p $DOCKER_ROOT_PATH/moviepilot/main \
&& mkdir -p $DOCKER_ROOT_PATH/moviepilot/config \
&& docker compose up -d moviepilot
fi
# 安装 moivepilot_v2
if [[ $server =~ $MPV ]]
then
echo "安装 moivepilot_v2"
mkdir -p $DOCKER_ROOT_PATH/moviepilot_v2/core \
&& mkdir -p $DOCKER_ROOT_PATH/moviepilot_v2/config \
&& docker compose up -d moviepilot_v2
fi
# 安装 chinese-sub-finder
if [[ $server =~ $CSF ]]
then
echo "安装 chinese-sub-finder"
mkdir -p $DOCKER_ROOT_PATH/chinese-sub-finder \
&& curl -L https://pt-cdn.oss-cn-hangzhou.aliyuncs.com/chinese-sub-finder.tgz > chinese-sub-finder.tgz \
&& tar -zxvf chinese-sub-finder.tgz \
&& cp -rf chinese-sub-finder/* $DOCKER_ROOT_PATH/chinese-sub-finder/ \
&& sed -i "s/192.168.2.100/$HOST_IP/g" `grep '192.168.2.100' -rl $DOCKER_ROOT_PATH/chinese-sub-finder` \
&& docker compose up -d chinese-sub-finder
fi
二、如何使用脚本
将步骤二的创建的三个文件上传到你的飞牛nas里,使用ssh工具连接飞牛,使用 cd 命令进入文件所在的目录
#我直接把文件放到了DockerFile目录下,所以进入DockerFile目录
cd /vol1/1001/docker/DockerFile
赋予 install.sh 执行权限
chmod +x install.sh
或
chmod 755 install.sh
运行脚本
bash install.sh

NT / nt : 安装 nastool
NON / non : 安装 nastool 非官方版本
QB / qb : 安装 qbittorrent
JEF / jef : 安装 jellyfin
MP / mp : 安装 moivepilot
MPV / mpv : 安装 moivepilot_v2
EB / eb : 安装 emby
PE / pe : 安装 plex
CSF / csf : 安装 chinese-sub-finder
如果需要安装 nastool、qbittorrent、jellyfin ,只需要输入 bash install.sh 按下回车,再输入 nt qb jef 即可等待飞牛自动拉取镜像、部署容器 |