Emby N+1(自动入库新番、直链、AList、单点认证......) 最终解决方案
最近给某个群内搭建了 Emby 媒体服务器作为群服务提供,中间因为各种原因踩了大大小小的坑,最后才有了这篇文章。
注意:此文章随时可能更新,文中用到的软件可能随时更新,因此配置文件可能过时。
为什么是 Emby
原因很简单:相较于 Jellyfin 和其竞品、Emby 的界面和体验都处于第一梯队的水平,且也有相当多的相关插件 / 第三方客户端。
但是其也不可避免的存在以下缺陷:
- 价格偏贵:尽管存在开心版,但也只能解锁一部分功能,一些插件相关的功能(如 PodCast、TVLive 等)仍然无法使用。月付 4.99 USD,年付 54 USD,永久 119(黑五期间 99)USD。
- 闭源问题:Emby 和 Jellyfin 早期有说不清道不明的关系,但是在后来分道扬镳,转为了闭源软件。
- 功能偏少:Emby 的插件丰富度不如 Jellyfin。
但即便如此,由于 Emby 在多用户管理等多个方面仍然好于其他软件,因此最终敲定了 Emby 作为媒体库的系统。
搭建目标
由于目标较多,因此文章会分为以下几个部分
- AList + 网盘挂载
- ANI-RSS 实现自动入库新番
- AutoFilm 自动生成 strm 文件供 Emby 刮削
- 部署 Emby 服务端
- MediaWarp + Emby 向客户端返回网盘直链作为播放链接
- Bangumi 插件刮削番剧和多季番剧的元数据设置
- Authentik + LDAP 插件实现统一身份认证
AList + 网盘挂载
部署 AList
参考 AList 官方文档自行部署。
Docker Compose 文件参考如下:
1 |
|
挂载网盘
假设我已经分别挂载了天翼云盘和 OneDrive,且他们都有 bangumi
这个文件夹。
那么我们可以使用别名功能,选择添加存储 - 别名,设置挂载路径为 /bangumi
、开启启用签名、关闭保护重名。
在路径中填写:
1 |
|
随后,这两个文件夹中的内容都会显示在 /bangumi
目录下。
为什么要用别名
假设我在不同网盘都存放了视频,但是一个个分别挂载太过麻烦,这时候别名功能就能让你把多个网盘的文件汇总在同一个文件夹下。
ANI-RSS 实现自动入库新番
部署 ANI-RSS 和 qBittorrent
参考 ANI-RSS 官方文档 和 ANI-RSS:自动追番新姿势! - 初之音 部署。
Docker Compose 文件参考如下:
1 |
|
ASS 的默认账户密码均为 admin,初次启动时 qBittorrent 会为 admin 用户生成一个随机密码,请查看日志获取初始密码。
配置自动上传至 AList
打开 ANI-RSS,选择设置 - 下载设置 - Alist,分别填入 AlistHost
、AlistToken
和 AlistPath
,并且将开关打开。
AlistHost
:AList 的访问链接(建议内网,HTTPS 端口请填写 alist.example:443)。AlistToken
:打开 AList 管理界面,选择设置 - 其他,填入令牌。AlistPath
:你的上传目录(不能是别名!只能填写真实目录!)。
随后,订阅的番剧都会自动上传一份至网盘,你只需要定期清理 ANI-RSS 下载到硬盘的番剧即可(删除订阅不会删除已经上传的文件)。
AutoFilm 自动生成 strm 文件供 Emby 刮削
部署 AutoFilm
参考 AutoFilm说明文档 | 秋澪的博客 部署。
Docker Compose 文件参考如下:
1 |
|
在 ./autofilm_config/config.yaml
写入以下配置文件:
1 |
|
需要注意的点:
mode
请填写AlistPath
,因为可以配合下面的 MediaWarp 使用。cron
不能填写* * * * *
,所以你不能一分钟刷新一次。
随后,定时任务执行后,./media
文件夹下应当已经生成了 .strm
文件。
部署 Emby 服务端
没什么好废话的,Docker Compose 一把梭:
1 |
|
需要注意,这里镜像需要选择 beta
版,因为下面的 Bangumi 插件和最新稳定版不兼容。
MediaWarp 向客户端返回网盘直链作为播放链接
MediaWarp 是前置于 EmbyServer 的 反向代理服务器,修改了原版 EmbyServer 的 API 返回内容以实现特殊功能。
部署 MediaWarp
参考 MediaWarp说明文档 | 秋澪的博客 部署。
Docker Compose 文件参考如下:
1 |
|
在 ./autofilm_config/config.yaml
写入以下配置文件:
1 |
|
其中,MediaServer
的 authkey
可以在 Emby 管理后台 - 高级 - API 密钥 获取。
Bangumi 插件刮削番剧和多季番剧的元数据设置
添加 Bangumi 插件
从 Releases 界面下载 Emby.Plugin.Bangumi.dll
,随后将其复制到 ./data/plugins/
下,重启 Emby 服务器。
Bangumi 插件的设置
打开 Emby 管理后台 - Bangumi Lite,登录自己的 Bangumi 账号。
你可以参考我的 Bangumi 插件设置:
多季番剧元数据设置
参考官方 WIKI:
多季动漫
使用 Season X 的文件夹存放每季的视频,jellyfin 会自动显示为 第 n 季
注意此时无法自动关联在 bangumi 上的 id,需要手动编辑该季的元数据,在 Bangumi 季 ID 中填写手动关联
关联后重新刷新元数据即可分割放送的动漫
对于分割放松的剧集,用 Season x Part y 的方式命名文件夹
此时 jellyfin 会在两个 Season x 的文件夹下分开存储元数据,但由于季号相同,界面上只会显示成一季
关联时需要点击单集动画,通过名称下方的 第 x 季 按钮返回,此时编辑元数据可以修改单个文件夹下的 ID
填写后通过同样的方式修改其他文件夹的 id,最后分别刷新元数据(或者直接在系列中刷新元数据)
因此,打开元数据管理器,找到多季放送的番剧,展开后分别填写每一季的 Bangumi ID,随后点击保存 - 右侧三个点 - 刷新元数据 - 替换所有元数据,即可显示正确的元数据。
Authentik + LDAP 插件实现统一身份认证
LDAP 插件需要 Emby Premiere 订阅才能工作,开心版无法绕过此限制。
配置 Authentik
按照正常流程配置 LDAP 和和前哨即可才不是我懒得写了(
配置 LDAP 插件
打开 Emby 管理后台 - 高级 - 插件 - LDAP,随后填写以下参数:
LDAP server address
:LDAP 服务器地址,只需要填写 IP 或者是域名即可,不需要带协议头。LDAP server Port number
:LDAP 服务器端口,启用 SSL 根据实际情况填写。
Bind DN
:填写 Authentik 提示的 Bind DN
内容。Bind credentials
:填写 Authentik 提示的 Bind 密码
内容。
User search base
:填写为 OU=users,DC=ldap,DC=goauthentik,DC=io
。User search filter
:填写为:(cn={0})
如果一切顺利的话,这个时候 Emby 已经可以通过 LDAP 认证了。
已知问题
AutoFilm
- 长时间运行任务时导致崩溃(#89)
- 不支持音乐文件
MediaWarp
- 影响到 Emby 播放电视直播(#26)
- 不支持音乐文件
Bangumi 插件
后记
说实话尽管发展了这么久,实际上整套系统还是不怎么成熟的。
如果有条件的话,我还是建议本地大硬盘会更好,也没必要这么折腾。