V2EX 07月25日 11:29
[科技] emby 网盘服的搭建以及关于更优方案的探讨
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了一个利用Emby、alist、cd2、auto_symlink等开源工具,结合网盘实现媒体库快速入库和播放的解决方案。该方案的核心在于利用alist的302重定向功能,配合cd2的网盘挂载和auto_symlink的目录监控,最终通过Emby快速加载strm文件实现媒体资源的即时访问。文章详细阐述了各组件的部署方法、作用以及可能遇到的问题和解决方案,特别提及了115网盘的风控问题,并提供了相应的配置建议。整体流程旨在提升媒体库的加载速度和管理效率。

🚀 **核心方案概览**: 该方案利用Emby的strm文件快速入库特性,结合alist等工具实现网盘资源的302重定向,达到快速起播的效果。所有工具均为开源项目,并提供了替代方案,如rclone替代cd2,go-emby2openlist替代emby2alist。

🔗 **网盘挂载与重定向**: openlist作为网盘挂载工具,支持WebDAV访问和302重定向。cd2则用于挂载网盘本地路径,并支持套娃挂载alist的WebDAV,以兼容更多网盘类型(如夸克网盘)。部署时需注意目录映射和Docker的MountFlags设置。

⚙️ **自动化入库与监控**: auto_symlink用于实时监控目录变化,进行扫盘和入库操作。其Docker部署需要注意卷的宿主机与容器路径对应,以及区分支持302重定向的网盘与其他网盘的根路径,以避免Emby播放时出现问题。

💡 **Emby配置与优化**: Emby媒体库只需添加包含strm文件的文件夹,且不建议开启转码。Docker部署时,需注意将相关网盘路径映射到容器内,并开启`rslave`模式以确保新挂载网盘内容的正常识别和播放。

⚠️ **常见问题与解决方案**: 文章详细解答了115网盘资源无法播放(涉及Nginx转发规则)、新增网盘后Emby无法播放(需确保路径映射开启rslave模式)、以及Emby提示无兼容流(通常是文件路径不存在或网盘挂载问题),并提供了相应的临时或永久解决方案。

1 原理

这个方案利用 emby 支持 strm 文件可以快速入库,切通过 openlist 等支持网盘的 302 重定向,实现快速起播,以下内容中提到的所有工具均为开源项目,当然也有其他可选的工具替代,例如 cd2 可以用 rclone 替代,auto_symlink 可以用其他 strm 工具替代,emby2alist 可以用 go-emby2openlist 替代等。(同时也推荐使用 auto_symlink 作者的 symedia 和 fastemby 项目)

2 关于更优方案的讨论

2.1 115 网盘 302 风控/封号

目前已知 115 网盘在多个地区或超过一定连接数使用 302 重定向可能会触发风控,想请问下各位是否有更好的解决方案,如是否可以做多网盘资源的负载均衡(也可以推荐相应的 vps 走代理的方式)

3 openlist

3.1 作用

3.2 docker 部署

mkdir -p /media/docker/alistdocker run -d \--restart=always \-p 5244:5244 \-p 6801:6800 \-e PUID=0 \-e PGID=0 \-e UMASK=022 \--name=openlist \-e TZ=Asia/Shanghai \openlistteam/openlist:beta

4 cd2

4.1 作用

4.2 docker 部署

注意点:这里映射了两个媒体目录,一个是cloud_media,一个是webdav_media

部署前请确认 docker 已开启 MountFlags

version: '3'services:  clouddrive:    image: cloudnas/clouddrive2    container_name: clouddrive    restart: unless-stopped    environment:      - CLOUDDRIVE_HOME=/Config    volumes:      - /volume2/Media/mp_downloads:/CloudNAS:shared      - /volume2/Media/cloud_media:/media:shared      - /volume2/Media/webdav_media:/webdav_media:shared      - /volume1/docker_dir/clouddrive2:/Config    ports:      - "8097:19798"    pid: "host"    privileged: true    devices:      - /dev/fuse:/dev/fuse

4.3 针对 115 风控的配置

5 auto_symlink

5.1 作用

5.2 docker 部署

需注意:

version: '3'services:  auto_symlink:    image: shenxianmq/auto_symlink:latest    container_name: auto_symlink    environment:      - TZ=Asia/Shanghai    volumes:      - /volume2/Media/cloud_media/clouddrive:/volume2/Media/cloud_media/clouddrive:rslave # cd2 挂载目录      - /volume2/Media/webdav_media/clouddrive:/volume2/Media/webdav_media/clouddrive:rslave     - /volume2/Media/strm:/volume2/Media/strm # emby 扫描媒体目录     - /volume2/Media/webdav_strm:/volume2/Media/webdav_strm       - /volume1/docker_dir/auto_symlink/config:/app/config    ports:      - "8095:8095"    user: "0:0"    restart: unless-stopped

5.3 网页配置

6 emby

6.1 docker 部署

需注意:

version: '3'services:  emby-server:    image: amilys/embyserver    container_name: emby-local    network_mode: bridge # DLNA and Wake-on-Lan 需要 bridge    environment:      - UID=0 # 设置容器用户 ID 为 0 (通常是 root)      - GID=0 # 设置容器组 ID 为 0 (通常是 root)      - GIDLIST=0 # 设置容器组 ID 列表为 0      - TZ=Asia/Shanghai # 设置容器的时区为亚洲/上海    devices:      - /dev/dri:/dev/dri             # 将主机的 /dev/dri 设备挂载到容器 开启硬解    ports:      - 8096:8096 # 对外访问端口    restart: unless-stopped    privileged: true    volumes:      - /volume1/docker_dir/emby_local/config:/config      - /volume2/Media/cloud_media/clouddrive:/volume2/Media/cloud_media/clouddrive:rslave      - /volume2/Media/local_media:/volume2/Media/local_media      - /volume2/Media/webdav_media/clouddrive:/volume2/Media/webdav_media/clouddrive:rslave      - /volume2/Media/webdav_strm:/webdav_strm # 其他网盘的 strm(夸克等)      - /volume2/Media/strm:/strm # 支持 302 重定向的网盘 strm(115 ,天翼等)

7 emby2alist

7.1 作用

7.2 部署

wget https://github.com/bpking1/embyExternalUrl/archive/refs/tags/v0.4.5.tar.gztar -zxvf v0.4.5.tar.gzcd embyExternalUrl-v0.4.5/cd emby2Alist# modify nginx/conf.d/constant.js# 参考下图 1 配置# embyHost 如果是本地 docker 部署的,就是图中的 http://172.17.0.1:8096(端口自行确认)# modify nginx/conf.d/config/constant-mount.js# 参考下图 2 配置# alistAddr 如果是本地 docker 部署的,就是图中的 http://172.17.0.1:5244(端口自行确认)# modify nginx/conf.d/config/constant-pro.js# 参考下图 3 配置# 待替换路径需确认 emby 媒体库内资源路径和 alist 内的路径,填写多出来的部分(仅限支持 302 重定向的网盘资源)

nginx/conf.d/constant.js

nginx/conf.d/config/constant-mount.js

nginx/conf.d/config/constant-pro.js

7.3 常见问题

7.3.1 115 资源无法播放

nginx-emby 容器内日志如下:

[warn] 21#21: *155 js: redirect to: /d/115/xxx

7.3.1.1 原因

匹配到 emby2alist 里的 115 规则,并使用 alist 公网地址进行转发

7.3.1.2 临时解决方案

屏蔽位于constant-mount.jsclientSelfAlistRule中与 115 有关的规则

7.3.2 新增网盘后 emby 无法播放

问题描述:在上面的环境正常运转的情况下(emby 启动后),新增了一个夸克盘通过alist -> cd2挂载到本地目录/volume2/Media/webdav_media,可以正常生成新的 strm 文件,emby 也可以正常入库,但是无法播放,并提示无兼容的流。此时在 emby 中查看挂载在 emby 容器上的/volume2/Media/webdav_media路径,里面的夸克盘路径下是没有东西的

复现方式:

7.3.2.1 原因

这是因为在之前的步骤中,emby 容器配置中与网盘相关的路径映射如cloud_media, webdav_media没有开启 rslave 模式,现已修正

7.3.2.2 解决方案

emby 容器与网盘相关的路径挂载时开启 rslave 模式,详见 4.1

以下操作可保留原先所有配置和刮削记录

# add :rslave to docker-compose.yml 按照 4.1emby 部署的 compose 文件更改docker stop emby_container # emby_container 替换成自己的容器名docker rm emby_container # emby_container 替换成自己的容器名docker-compose up -d # 重新部署

7.3.3 emby 提示无兼容的流

7.3.3.1 原因

该问题一般由指定路径下的文件不存在引起,可以检查下网盘是否正确挂载


参考教程:

url: https://www.nerocats.com/archives/58/title: "alist-clouddrive2-auto_symlink-emby-nginx 实现 emby 播放 115 直链 - 偏爱一丛花"description: "完成效果:1. moviepilot 下载目录(可以不用)   如:/media/docker/moviepilot/downloads2. moviepilot 整理后的媒体库目录,同时也是 cd2..."host: www.nerocats.comfavicon: https://www.nerocats.com/usr/uploads/logo/favicon.ico

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Emby alist 网盘 媒体库 开源工具
相关文章