coderstory@DXP2800-NAS:/volume2/docker/med$ lsdocker-compose.yaml emby jellyfin moviepilot-v2 pgsql postgresql v2rayacoderstory@DXP2800-NAS:/volume2/docker/med$ rm -rf pgsql/coderstory@DXP2800-NAS:/volume2/docker/med$ rm -rf postgresql/coderstory@DXP2800-NAS:/volume2/docker/med$ lsdocker-compose.yaml emby jellyfin moviepilot-v2 v2rayacoderstory@DXP2800-NAS:/volume2/docker/med$ sudo docker compose -f docker-compose.yaml up -dWARN[0000] /volume2/docker/med/docker-compose.yaml: `version` is obsolete [+] Running 5/6 ✔ Container v2raya Running 0.0s ✔ Container mp-redis Running 0.0s ✔ Container jellyfin Running 0.0s ✔ Container emby Running 0.0s ✔ Container watchtower Running 0.0s ⠸ Container postgres Starting 0.3s Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/volume2/docker/med/postgresql" to rootfs at "/var/lib/postgresql/data": change mount propagation through procfd: open o_path procfd: open /volume2/@docker/overlay2/2d07030109595a75379f1bd753830c59b15a852610f6093fd681388e874060fa/merged/var/lib/postgresql/data: no such file or directory: unknown错误提示的目录是自动生成的,之前创建的我都手动删除了。。不知道为什么挂不上去
coderstory@DXP2800-NAS:/volume2/docker/med$ uname -aLinux DXP2800-NAS 6.12.30+ #3 SMP PREEMPT_DYNAMIC Fri Sep 5 21:51:19 CST 2025 x86_64 GNU/Linuxcoderstory@DXP2800-NAS:/volume2/docker/med$ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"NAME="Debian GNU/Linux"VERSION_ID="12"VERSION="12(bookworm)"VERSION_CODENAME=bookwormID=debianHOME_URL="https://www.debian.org/"SUPPORT_URL="https://www.debian.org/support"BUG_REPORT_URL="https://bugs.debian.org/"OS_VERSION=1.9.0.0075coderstory@DXP2800-NAS:/volume2/docker/med$ docker --versionDocker version 26.1.0, build 9714adccoderstory@DXP2800-NAS:/volume2/docker/med$ # 根据 PT 站站规,MP 作者文档,ANI-RSS 作者声明,严禁在互联网任何公开场合讨论相关内容,本模板同上# 根据 PT 站站规,MP 作者文档,ANI-RSS 作者声明,严禁在互联网任何公开场合讨论相关内容,本模板同上# 根据 PT 站站规,MP 作者文档,ANI-RSS 作者声明,严禁在互联网任何公开场合讨论相关内容,本模板同上# 根据 PT 站站规,MP 作者文档,ANI-RSS 作者声明,严禁在互联网任何公开场合讨论相关内容,本模板同上# 根据 PT 站站规,MP 作者文档,ANI-RSS 作者声明,严禁在互联网任何公开场合讨论相关内容,本模板同上# 根据 PT 站站规,MP 作者文档,ANI-RSS 作者声明,严禁在互联网任何公开场合讨论相关内容,本模板同上# 根据 PT 站站规,MP 作者文档,ANI-RSS 作者声明,严禁在互联网任何公开场合讨论相关内容,本模板同上# 根据 PT 站站规,MP 作者文档,ANI-RSS 作者声明,严禁在互联网任何公开场合讨论相关内容,本模板同上# 根据 PT 站站规,MP 作者文档,ANI-RSS 作者声明,严禁在互联网任何公开场合讨论相关内容,本模板同上############################################### 如果 docker 网络拉取失败,可以给镜像地址加上加速源,使用文本批量替换即可将下方中括号的内容批量替换掉# [images: ] → [images: docker.1ms.run/],注意"images: "是带空格############################################### 自动化媒体库的工作流程# MP 负责订阅搜刮 PT 站内的资源,将种子以及下载路径(容器的路径),发送给 QB/TR 进行下载# 当 MP 检测下载完毕后,将会根据整理刮削命名规则进行处理,转移到媒体库目录中# 这样一来,PEJ 检测到本地有新的媒体入库,并且本地已经存在刮削数据可以读取,即完成入库# iyuu 是用于辅助做种的; v2raya 是用于解决网络不顺畅的问题,可以不搞; cookiecloud 用于定期把电脑浏览器的 PT 站 cookie 同步到 MP 上# QB 适合下种,TR 适合做种############################################### 重要内容,硬链接只能够存在于同一个存储池上# 重要内容,硬链接只能够存在于同一个存储池上# 重要内容,硬链接只能够存在于同一个存储池上# /volume1/media# |---/动漫# |---/下载# |# |---/电影# | |---/国产电影# | |---/欧美电影# | |---/日韩电影# |# |---/电视剧# |---/国产电视剧# |---/欧美电视剧# |---/日韩电视剧# ①:/volume1/media——————media 为共享文件夹,存储池预设为第 1 个存储池,请根据自己实际情况修改 [这是实际路径] # ②:/volume1/media/下载——————用于 QB 和 TR 下载,MP 中设置对应的容器路径/downloads 用于传递 [这是实际路径] # ③:/volume1/media/电影;/volume1/media/电视剧——————用于媒体库的分类存放,可根据自己需要增添 [这是实际路径] # ④:请在 MP 设置中,把下载目录设置为“/meida/下载”;把 电影/电视剧 等分类的目录设置从“/meida”开始选择 [这是容器路径] # ⑤:MP 和 QB,TR 都使用同一条路径映射“/meida/下载” [必须完全一样] # 不懂可以看看 MP-01 和 MP-03 这两张图,MP-02 是效果图# ⑥:/volume1/media/动漫——————用于 ani-rss 动漫 bt 下载,自身带重命名整理功能,刮削功能可以由 PEJ 负责# ⑦:注意,需要在 ani-rss 的设置中,将下载地址修改为/ani-rss############################################### 注意事项# 本模板包含 PLEX,EMBY,JF,QB,TR,MP,ANI-RSS,COOKIECLOUD,IYUU,V2RAYA,WATCHTOWER,PEERBANHELPER,VOCECHAT# 如果设置了使用网络代理(不一定是 v2raya ,可以是软路由),请提前启用并激活好魔法,否则 EMBY,JF,MP 无法正常连接 TMDB ,MP 可能无法正常下载核心文件# 模板预设使用的网络代理为 v2raya 的 http 端口 20171 ,如果使用了别的,请根据实际情况修改,总不会有人连魔法都不会用不?不会吧?不会吧?# 部分参数不说明,如果想知道有什么用,可以参考其他的模板# 权限均设置为 root 以保证访问不会出错,注释内容多多阅读# 媒体库路径请根据实际情况修改# 媒体库,iyuu ,cookiecloud 使用 bridge ;其余统一使用 host ,需要改变端口就去修改变量,看注释说明# iyuu 使用 host 模式会占用 mariadb/mysql 的 3306 端口,所以使用 bridge# QB 和 TR 使用 host ,只要宿主机拥有 IPV6 ,即可连上 IPV6 传输数据,如果宿主机没有,请检查网络环境# EMBY 和 JF 在 [控制台-高级] 中生成 [ API 密钥] ,MP 需要用# PLEX 需要注册登录生成登录密钥,用于登录使用,设置好后,浏览器 F12->网络,从 Plex 请求 URL 中获取的 X-Plex-Token ,MP 需要用# QB 初始化账号为 admin ,密码在日志中查看# QB 可选修改:用于传入连接的端口,随机生成一个,记得看站规;并且在路由器上做好端口映射,如果有公网的话# QB 关闭:启用 DHT (去中心化网络) 以找到更多用户# QB 关闭:启用用户交换 (PeX) 以找到更多用户# QB 关闭:启用本地用户发现以找到更多用户# QB 关闭:启用跨站请求伪造 (CSRF) 保护# TR 需要把汉化文件存放到对应目录,看注释说明# TR 不打开:启用随机端口,或使用固定端口。端口号设置好并且在路由器上做好端口映射,如果有公网的话# TR 关闭:启用本地用户发现(LPD)# TR 关闭:启用带宽管理(µTP)# TR 关闭:启用分布式哈希表(DHT)# TR 关闭:启用用户交换# iyuu 需要注册扫码获取 token ,初始化安装第一步只需要输入 token 即可# MP 如果遇到 cookiecloud 设置正确但是无法同步成功的,试试重启几次再去同步,实在不是,手动添加吧# MP v2.0.7 及以上版本,已支持通过 UI 进行用户认证:点击用户头像 -> 用户认证,无需配置环境变量,模板继续保留原有的认证变量# ANI-RSS 的用户名和密码均为 admin# cookiecloud 使用教程: https://post.smzdm.com/p/a905kd5p############################################### 镜像地址# https://hub.docker.com/r/linuxserver/plex# https://hub.docker.com/r/linuxserver/emby# https://hub.docker.com/r/nyanmisaka/jellyfin# https://hub.docker.com/r/linuxserver/qbittorrent# https://hub.docker.com/r/linuxserver/transmission# https://hub.docker.com/r/jxxghp/moviepilot# https://hub.docker.com/r/easychen/cookiecloud# https://hub.docker.com/r/iyuucn/iyuuplus-dev# https://hub.docker.com/r/mzz2017/v2raya# https://hub.docker.com/r/containrrr/watchtower# https://hub.docker.com/r/privoce/vocechat-server# https://hub.docker.com/_/redis# https://hub.docker.com/_/postgres############################################### MP 文档# https://github.com/jxxghp/MoviePilot# https://wiki.movie-pilot.org# MP 插件# https://wiki.movie-pilot.org/zh/plugin# PT 玩家看站规!!! PT 玩家看站规!!! PT 玩家看站规!!!# ani-rss 文档: https://docs.wushuo.top# iyuu 文档: https://doc.iyuu.cn/guide/getting-started# 媒体库规范化命名手册( PEJ 通用): https://emby.media/support/articles/Home.html# peerbanhelper 文档: https://github.com/PBH-BTN/PeerBanHelper# vocecha 文档: https://doc.voce.chat/zh-cn############################################### 各个服务的 WebUI# plex ip:32400# emby ip:8096# jellyfin ip:8097# qbittorrent ip:8085# transmission ip:9091# moviepilot ip:55055# ani-rss ip:7789# cookiecloud ip:8188# peerbanhelper ip:9898# iyuu ip:8780# v2raya ip:2017 # sock 代理端口:20170 # http 代理端口:20171 # http 代理端口(带分流规则):20172# watchtower 不存在,后台自动更新容器镜像# vocechat ip:3456# redis + pgsql 不存在 webui ,只需要让 mp 链接即可# 如果要使用 peerbanhelper ,QB 和 TR 必须使用 host 网络模式,模板默认为 host 网络模式,且对 QB 和 TR 的版本号有要求,注意查看文档# redis 和 pgsql 均使用 bridge 网络模式,仅提供给 MP 使用,如果你有单独已经部署好的 redis 和 pgsql 容器,懂得如何链接上,自行修改,本模板已经整合号,部署即可使用# 2025-09-10:MP 已经支持在 WebUI 上进行认证,因此删除掉认证部分,同时,部分变量在 compose 中写了,就无法在 WebUI 上随时修改,因此也删掉了# 2025-09-10:本模板改为 MP 使用带数据库且全新部署的版本,如需原有数据库迁移升级,多加一个 pgsql 稍微修改一下路径即可,绿联 amd64 和 arm64 实测没问题##############################################---version: "3"# 最后编辑时间:2025-09-10services:############################################### ## 媒体库部分,全选/不选/选其一 ## ############################################################################################# emby: image: linuxserver/emby:latest # 镜像地址,如需测试版追新,latest 更改为 beta ,不区分设备架构 # 如果使用开心版,将镜像改为 amilys/embyserver ,arm64v8 设备使用 amilys/embyserver_arm64v8 container_name: emby hostname: emby # privileged: true devices: - /dev/dri:/dev/dri volumes: - ./emby:/config # 配置文件目录 - /volume3/1TSSD/影音:/data # 媒体库目录,可以自定义,可以写多个 environment: - PUID=0 - PGID=0 - UMASK=022 - TZ=Asia/Shanghai # 以下是为 EMBY 添加网络代理,自行准备好魔法,将 IP 改为 NAS 的 IP ,如需使用,去掉#号注释 # emby 推荐不写,而是安装神医插件: https://github.com/sjtuross/StrmAssistant - NO_PROXY=172.17.0.1,127.0.0.1,localhost # 保持默认 - ALL_PROXY=http://localhost:20171 - HTTP_PROXY=http://localhost:20171 # 更换为自己的 http 代理 # 切记设置好 V2raya ,如果你没有配置魔法就注释掉 network_mode: bridge ports: - 8096:8096 restart: unless-stopped############################################## jellyfin: image: nyanmisaka/jellyfin:latest # 镜像地址,无脑推荐使用 ny 大佬的 JF ,做好了全部修正优化,开箱即用 # x86 设备默认用 latest ,arm64v8 设备用 latest-rockchip container_name: jellyfin hostname: jellyfin # privileged: true devices: - /dev/dri:/dev/dri volumes: - ./jellyfin/config:/config # 配置文件目录 - /volume3/1TSSD/影音:/media # 媒体库目录,可以自定义,可以写多个 - ./jellyfin/cache:/cache # 缓存目录 # - /dev/shm:/config/transcodes # 使用内存作为转码缓冲目录,推荐至少 8G 才使用,默认不用 # 效果是,硬件转码的时候,会将转码文件生成在内存上,退出播放的时,会自动清理,优点和缺点都是不保留缓冲的转码文件 environment: - TZ=Asia/Shanghai # 以下是为 JF 添加网络代理,自行准备好魔法,将 IP 改为 NAS 的 IP ,如需使用,去掉#号注释 - NO_PROXY=172.17.0.1,127.0.0.1,localhost # 保持默认 - ALL_PROXY=http://localhost:20171 - HTTP_PROXY=http://localhost:20171 # 更换为自己的 http 代理 # 切记设置好 V2raya ,如果你没有配置魔法就注释掉 network_mode: bridge ports: - 8097:8096 restart: unless-stopped############################################### ## 下载器部分,全选/不选/选其一 ## ############################################### ############################################## ############################################### ## 自动化刮削整理工具,根据需要部署 ## ############################################### ############################################## moviepilot-v2: image: jxxghp/moviepilot-v2:latest container_name: moviepilot-v2 hostname: moviepilot-v2 restart: unless-stopped network_mode: host################################################ 第一次运行时,MoviePilot 会下载大量文件到本地,请在留意日志中的进度,如果有什么问题,可以寻找网友求助 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro # 使 MP 支持内建的重启操作,用于自动更新后重启 - ./moviepilot-v2/core:/moviepilot ## 程序主目录 - ./moviepilot-v2/config:/config ## 配置目录 - /volume3/1TSSD/下载:/downloads # 默认下载目录 - /volume3/1TSSD/影音:/media # MP ,QB ,TR 统一的下载目录,见上目录结构说明的④⑤ - ./qbittorrent/qBittorrent/BT_backup:/QB-BT - ./transmission/torrents:/TR-BT # 用于自动转种所使用的路径,请根据实际情况修改,模板仅供参考,如不需要,则删除掉############################################## environment: - MOVIEPILOT_AUTO_UPDATE=true # 设置容器重启时自动更新,true/release/dev/false ,默认 release ,插件的自动更新要设置为 true # 需要能正常连接 Github 注意:如果出现网络问题可以配置 PROXY_HOST - API_TOKEN=1234567890123456 # API 密钥,V1 版本默认为 moviepilot ,V2 版本需要手动配置为大于等于 16 个字符的复杂字符串 # 如配置不符合要求将会强制重新生成,可在首次启动的启动日志或 env 配置文件中查看最新的值 # 在媒体服务器 Webhook 、微信回调等地址配置中需要加上 ?token= 该值 - NGINX_PORT=55055 # WebUI 服务端口,默认为 3000 ,预设为 55055 ,可自行修改 - PORT=55056 # API 端口,默认为 3001 ,预设为 55056 ,可自行修改 - SUPERUSER=admin # 超级管理者用户名,默认为 admin ,可在 MP 内修改,初次安装后失效 # 密码在日志里,只会在第一次部署出现,如果忘记,可以文本形式打开 /config/logs/moviepilot.log 该文件,查看日志获取 # 如果非初始密码忘记了,得删除 pgsql 的所有文件,然后重新配置,注意查看,可在 MP 内修改 - TZ=Asia/Shanghai # 时区 # - MOVIE_RENAME_FORMAT={{title}}{% if year %} ({{year}}){% endif %}/{{title}}.{{original_name}} # - TV_RENAME_FORMAT={{title}}{% if year %} ({{year}}){% endif %}/S0{{season}}/{{original_name}} # 电影和电视剧重命名格式,个人自用,默认不使用,仅作记录############################################ 数据库 ##### 不需要修改,照抄 ### 如果你有一个 pgsql 的容器,懂得使用方法,可以根据实际情况填写 ### - DB_TYPE=postgresql - DB_POSTGRESQL_HOST=localhost - DB_POSTGRESQL_PORT=55053 # pgsql 数据库的访问端口,本模板 pgsql 的端口预设为 55053 - DB_POSTGRESQL_DATABASE=moviepilot - DB_POSTGRESQL_USERNAME=moviepilot - DB_POSTGRESQL_PASSWORD=moviepilot # pgsql 数据库的子数据库的名字、账号、密码,统一为 moviepilot ### 如果你有一个 redis 的容器,懂得使用方法,可以根据实际情况填写 ### - CACHE_BACKEND_TYPE=redis - CACHE_BACKEND_URL=redis://:moviepilot@localhost:55054 # 连接 redis ,本模板 redis 的访问端口预设为 55054 depends_on: postgresql: condition: service_healthy mp-redis: condition: service_healthy # 关联 pgsql 和 redis ,照抄############################################### ## 给 MP 配上数据库,模板包含,必须 ## ################################################ 不需要修改,照抄 mp-redis: image: redis:latest container_name: mp-redis hostname: mp-redis command: redis-server --save 600 1 --requirepass moviepilot # 最后一串字符为 redis 的密码,预设为 moviepilot volumes: - ./moviepilot-v2/redis:/data # 数据目录 network_mode: bridge # 模板预设使用 bridge 网络模式,如果懂得使用方法,可以根据实际情况来修改 ports: - 55054:6379/tcp # 注意:并不存在 WebUI ,只需要通过 IP:PORT 调用即可,模板预设 restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "--raw", "incr", "ping"] interval: 10s timeout: 5s retries: 5 postgresql: image: postgres container_name: postgres hostname: postgres volumes: - ./postgresql:/var/lib/postgresql/data # 数据目录 environment: - POSTGRES_DB=moviepilot - POSTGRES_USER=moviepilot - POSTGRES_PASSWORD=moviepilot # 预设新建一个子数据库,子账号及其密码,统一为 moviepilot network_mode: bridge ports: - 55053:5432/tcp restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U moviepilot -d moviepilot"] interval: 10s timeout: 5s retries: 5############################################### ## 其他辅助工具,根据需要部署 ## ############################################### # 自动更新容器 watchtower: image: containrrr/watchtower:latest container_name: watchtower hostname: watchtower network_mode: host # 并不存在端口,只是减少新增网络 volumes: - /var/run/docker.sock:/var/run/docker.sock # docker 核心 environment: - WATCHTOWER_CLEANUP=true # 更新后移除旧的镜像 - TZ=Asia/Shanghai restart: unless-stopped v2raya: image: mzz2017/v2raya:latest container_name: v2raya hostname: v2raya environment: - V2RAYA_LOG_FILE=/tmp/v2raya.log - V2RAYA_V2RAY_BIN=/usr/local/bin/v2ray volumes: - ./v2raya:/etc/v2raya # 配置文件目录 - /etc/resolv.conf:/etc/resolv.conf # 照抄,踩点了,有该文件存在 network_mode: bridge # 由于书写有不同方式,这里统一采用 bridge ,使用不支持透明代理的模板,如果你清楚如何使用,则自行修改 # 你直接写 服务器的 IP:[201710-20172] 进行访问,例如 emby/JF 变量中的网络代理参数 ports: - 2017:2017/tcp # WebUI 端口:2017 - 20170-20172:20170-20172/tcp # sock 代理端口:20170 # http 代理端口:20171 # http 代理端口(带分流规则):20172 restart: unless-stopped
