声明:除引用的Github项目文件外,其他内容编写为原创。搬运请注明原作者。
看本教程之前,先查看上一篇教程,对115资源转302直链有一定的了解。有看不懂的名词,善用Google及ChatGPT。
准备条件
- 有空间及会员的115账号
- CD2(CloudDriver2),可以不需要会员。
- Emby,可以选择自己喜欢的镜像版本,如emby/embyserver、linuxserver/emby、amilys/emby
- Auto_Symlink
- Redir115
阅读此篇教程,默认你已经
- 已阅读上一篇教程
- Docker/Docker-Compose的相关配置使用
- 理解什么叫strm
原理
本教程不再使用网盘的源文件,而是使用Auto_Symlink生成的local类型的strm文件加入媒体库,并利用nginx提供的转发到redir115服务,访问115网盘获取对应直链进行302跳转给客户端,并且可以实现emby的web播放302地址。
容器配置
services:
cloudnas:
image: cloudnas/clouddrive2-unstable
container_name: clouddrive2
environment:
- TZ=Asia/Shanghai
- CLOUDDRIVE_HOME=/Config
volumes:
- ./cd2:/Config
- /CloudNAS:/CloudNAS:shared
- /Movies:/Movies
devices:
- /dev/fuse:/dev/fuse
restart: unless-stopped
pid: "host"
privileged: true
network_mode: bridge
ports:
- 19798:19798
auto_symlink:
image: shenxianmq/auto_symlink:latest
container_name: auto_symlink
restart: unless-stopped
user: 0:0
network_mode: bridge
ports:
- "8095:8095"
environment:
- TZ=Asia/Shanghai
volumes:
- ./auto_symlink:/app/config
- /CloudNAS:/CloudNAS:rslave
- /Movies:/Movies
depends_on:
- cloudnas
emby:
image: amilys/embyserver
container_name: emby
volumes:
- ./emby:/config
- /CloudNAS:/CloudNAS:rslave
- /Movies:/Movies
privileged: true
network_mode: bridge
ports:
- 8096:8096
restart: unless-stopped
redir115:
image: htnanako/redir115:nginx
container_name: redir115
restart: unless-stopped
network_mode: host
volumes:
- ./redir115:/data
- ./cache:/var/cache/nginx/emby
- ./logs:/var/log/nginx
environment:
NGINX_PORT: 8092
EMBY_HOST: http://emby.lan:8096
EMBY_API_KEY: abcdefghijklmnopqrstuv0123456789
ORIGINAL_PATH: /CloudNAS/115
REDIR_PATH: /Movies
REDIR_HOST: https://redir.abc.xyz
REDIR_MODE: strm_local
COOKIE: UID=;CID=;SEID=;
具体步骤
CloudDriver2
CloudDriver2(下称CD2)的配置与上一篇教程一致,安装后添加115网盘,并将115根目录挂载到容器的 /CloudNAS
目录,即宿主机的 /CloudNAS
目录,并注意添加 :shared
权限实现读写共享。
Auto_Symlink
Auto_Symlink(下称AS)作用是读取CD2挂载的115网盘文件,生成local类型的strm文件,并同步元数据(如有)到本地,加快扫库读取速度,减少访问网盘的次数。
路径说明
-
/CloudNAS:/CloudNAS:rslave
用于挂载CD2挂载到本地的115网盘到容器内,并添加
:rslave
权限实现读写从属。 -
/Movies:/Movies
用于生成strm文件以及同步元数据到宿主机的
/Movies
目录下,供emby扫库读取。
配置说明
点击 添加同步
按钮
媒体目录填写 /CloudNAS
目录下需要同步的子目录,如整个 影视
目录,也可将每个类型的影视目录独立一个任务。
本地目录填写 /Movies
目录下想要同步到的目标目录,该目录需先手动创建。
同步状态
按钮打开。
元数据模式
选择本地模式
清除功能
务必全部关闭
实时监控
按需打开,删除功能务必关闭
软链接模式
选择 strm
strm模式
选择 local
挂载类型
选择 cd2
云端地址
填写 CD2的内网地址及端口
cd2根目录
填写 115目录的上一级目录,如/ClouNAS
将所有需要的同步目录配置完保存后,重启一下AS。然后在 常用工具
-> 手动同步
中启动任务等待strm文件生成及元数据同步完成。
Emby
Emby的配置,将宿主机的 /CloudNAS
与 /Movies
目录均原样映射入容器后,需要使用 /Movies
目录作为媒体库目录,即 strm
文件所在目录,添加媒体库配置。
此时,在Emby扫完某一个库之后,可以打开任意一部电影或者剧集,查看对应的文件目录信息,如 /CloudNAS/影视/动漫/动画电影/铃芽之旅 (2022)/铃芽之旅 (2022) - 1080p H.264.mkv
此路径记录一下,等会要用。
你问我媒体库用的是 /Movies
,为什么显示的是 /CloudNAS
?这就是 strm
文件的特性,Emby会直接显示 strm
文件内容的路径信息。
接下来看一下该文件在115网盘内的路径,应该是 /影视/动漫/动画电影/铃芽之旅 (2022)/铃芽之旅 (2022) - 1080p H.264.mkv
,记录一下,一会也要用。
Redir115
镜像地址 htnanako/redir115,该项目使用了bpking1/embyExternalUrl以及sjtuross/redir115提供的代码进行整合,同时提供redir115及nginx代理服务在同一个容器内。感谢原项目开发大佬的付出。
使用redir115的nginx标签镜像,此镜像同时用于代理Emby请求以及请求115直链。
环境变量配置
-
NGINX_PORT
指定nginx监听端口,后续访问Emby服务均使用此端口,才可以实现直链播放,默认8092端口。
-
EMBY_HOST
Emby服务器的地址,内网地址端口即可
-
EMBY_API_KEY
Emby的ApiKey,从Emby的web中获取
-
ORIGINAL_PATH
Emby中显示的媒体路径中,不属于115网盘内路径的部分。
如上述例子的
/CloudNAS/影视/动漫/动画电影/铃芽之旅 (2022)/铃芽之旅 (2022) - 1080p H.264.mkv
中,/CloudNAS
即不属于115网盘内路径。 -
REDIR_PATH
在Emby中的媒体路径中,去掉ORIGINNAL_PATH部分之后,如果并不是115网盘内实际的完整路径,需要添加的前缀部分。
在上述例子中的/影视/动漫/动画电影/铃芽之旅 (2022)/铃芽之旅 (2022) - 1080p H.264.mkv
,已经是115网盘内的完整路径了,那么此环境变量可不填写任何内容,或者删除此环境变量。 -
REDIR_HOST
Redir115容器中的redir115服务,使用5302端口,使用你本地的反代服务器将其反代出去,并添加上ssl证书,填写反代后的https地址端口,如
https://redir.abc.xyz:5302
。 -
REDIR_MODE
此参数支持
strm_local
,strm_cloud
,symlink
,依照AS容器的配置进行填写。本教程使用的是strm_local
。 -
COOKIE
填写一个不会在其他地方使用的115网盘的Cookie,建议使用alist官方文档中、提供的扫码服务获取TV端的Cookie,格式应如
: UID=;CID=;SEID=;
。
使用
所有配置完成并启动容器后,访问Redir115容器中配置的Nginx端口,默认 8092
,即可访问到Emby服务。可支持第三方客户端、Emby Web播放302直链地址。
番外
Emby Strm Assistant 插件
Strm Assistant 是一个Emby插件,放置到Emby配置目录下的 /config/plugins/
,重启Emby即可在插件页看到。
其主要功能为提取媒体信息,即媒体的视频信息及音频信息等,并更新对应的nfo文件。如果你使用的的是amilys/emby并开启了第三方播放器按钮功能,在该插件跑完任务后才可以看到显示第三方播放器按钮。
多Emby配置
如果你不止一个Emby服务端需要进行获取直链播放,在安装完上述容器后,每新增一个Emby容器,需添加一个Nginx容器,用于Emby的一对一服务。
Nginx容器配置
services:
nginx:
image: nginx:latest
container_name: nginx
network_mode: host
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/embyCache:/var/cache/nginx/emby
- ./nginx/logs:/var/log/nginx
restart: unless-stopped
配置文件仓库bpking1/embyExternalUrl
下载完该仓库的文件,使用其中的 emby2Alist/nginx
文件夹内的配置文件。
需要进行修改的文件:
-
conf.d/constant.js
- embyHost参数修改为新增的Emby地址
- embyApiKey参数修改为新增的Emby的ApiKey
- mediaMountPath参数去掉默认的
/mnt
仅保留[""]
部分
-
conf.d/config/constant-pro.js
- mediaPathMapping为一个列表,其中的参数均为列表,仿照其中第一条参数进行填写。
- 第一个参数为0
- 如果你的文件是symlink类型,则第二个参数为0,如果文件为strm_local类型,则第二个参数为1,如果文件为strm_cloud类型,则第二个参数为2
- 第三个参数填写上述redir115服务中的
ORIGINAL_PATH
同含义的路径 - 第四个参数填写上述redir115服务的5302端口反代的https地址端口,如
https://redir.abc.xyz:5302
。但当REDIR_PATH
有任何内容时,需要填写在该地址后的路径部分,如https://redir.abc.xyz:5302/media
之类 - 总的来说,填写格式为
[0, 1, "/CloudNAS/115", "https://redir.abc.xyz:5302"]
。
- mediaPathMapping为一个列表,其中的参数均为列表,仿照其中第一条参数进行填写。
-
conf.d/includes/http.conf
- 修改两个listen后的端口号,为该nginx监听的端口,作用同redir115的NGINX_PORT
此nginx容器仅用于对应的Emby服务的代理访问。获取115直链的服务,可复用redir115容器的5302端口提供的服务即可。