扯淡
近几年由于众所周知的原因,B站能看的番越来越少(除了港澳台区)。为了能及时看到新番,一些小网站是必不可少的。但是最近竟然连小网站都时不时会出现没有播放源的问题,只能自己动手丰衣足食了。
事实上,下载新番并做种不仅满足了收藏党的癖好,也会对bt的生态做出贡献,毕竟做种的人越多,这些资源才能活得越好。最近vcb-s又复活了,趁着期末的空隙,我就整了个全自动追番下载做种刮削一体的套装,放在群晖上跑。最后再加个Telegram通知,免得下完了自己都不知道。
如果你不满足于在网站上看番想要尝试bt,或者是已经安装了jellyfin但是不会/不想组织已经下载的种子所以都刮削不出来,那么这篇文章应该会对你有帮助。
正篇
教程从这里开始,下面所有的服务都跑在群晖的docker上面,当然实际上任何一台拥有大硬盘的电脑都行。
Sonarr
首先来看Sonarr。Sonarr是一个用来管理电视剧的软件,能够自动从The TVDB获取电视剧/番剧的信息,并且在各大种子站搜索对应的磁力链接发送到torrent客户端下载,并在下载完成后自动组织下载完的文件使得这些文件能够被jellyfin等软件刮削。并且一个很重要的点是:组织文件的时候可以选择硬链接,因此你可以一边做种一边在jellyfin观看。这算是解决了bt+jellyfin的一大痛点。虽然我没有使用过TMM,但是我觉得应该比TMM好。并且,当你在qBittorrent下载文件时,只要设置了Sonarr特定的分类,它就会帮你自动导入。
群晖安装Sonarr很简单,docker中搜索linuxserver/sonarr:
然后双击进入设置,既可以使用bridge模式也可以用host模式,无需特权。如果是bridge模式记得要在这里设置端口映射。
然后挂载一个数据文件夹放番剧文件,一个文件夹放配置(配置文件夹需要挂载到/config下),可以看到这里我还挂载了一个notification文件夹,是用于发送telegram通知的。
容器启动后进入你的ip:8989即可看到界面。
settings中有两个比较重要的地方需要设置:indexers和download client。先来看indexers。Sonarr原生支持的动漫索引器不多,只有nyaa。所以我们需要借助另一个软件:jackett。
Jackett
Jackett是一个能把大量索引器转成Torznab(Sonarr支持的格式)的工具。用这个可以支持acg.rip,bangumi.moe,动漫花园等等。同样我们还是搜索linuxserver/jackett,下载镜像之后启动。注意要选择bridge网络
这里既可以选择挂载配置文件也可以不挂载,毕竟没什么配置文件除了一个api密钥。jackett默认端口是9117,进入你的ip:9117,下图中可以看到我已经添加了两个索引器。
这里我建议启动两个jackett容器,一个用来搜索国外,一个用来搜索国内。因为外网似乎没法访问一些国内的索引站点。你可以以同样的设置让另外一个容器监听9118端口。然后在sonarr中添加indexer选择Torznab,api key就填入jackett上复制出来的,url和api path填写copy torznab feed复制出来的内容。然后Categories填空,Anime Categories选满,毕竟我们要搜的是番剧。
qBittorrent
download client方面我用的是容器linuxserver/qbittorrent,qbittorrent在群晖上没有套件,所以以容器的方式安装,也是一样的挂载数据文件夹以及挂载配置。当然那几个默认的下载端口是一定要开放的
这里有一个坑要踩:它没有办法下载到共享文件夹内。实际上是因为文件夹权限没设置对。
文件夹权限这里点新增,给Owner完全控制权限就行了。详情可以看我另一篇文章:https://www.dnlab.net/archives/46/ 。
配置完indexers和download clients,再去Sonarr设置Media Management里开启硬链接
和添加它的默认保存文件夹。
这里的Root Folders是你动画硬链接存在的位置,将来jellyfin要扫描的地方。qbittorrent下载的内容并不在这里。为了让Sonarr将下载好的文件自动硬链接到Root Folders,在Download Clients最底部,我们还需要设置一个远程下载路径映射。通过这个Sonarr可以知道你在qbittorrent容器上下载的文件究竟在自己容器的哪个位置。在这里我把数据文件夹都映射到了它们的/Data/Torrent,所以如图设置。
因此为了Sonarr能够自动硬链接,你qbittorrent一定要设置下载路径在这里面。
这些都设置完之后,Sonarr基本上能工作了。其他配置大家可以自己去做一些小修改。
Jellyfin
然后是jellyfin的安装。
这里我们选nyanmisaka/jellyfin。这是在jellyfin工作的大佬打包的中国特制版,在进行转码中字的时候不会出现奇奇怪怪的字体bug。启动容器时注意一定要勾选使用高权限执行,否则无法硬件解码。挂载文件夹要多一些,包括数据,配置,缓存还有字体。
由于sonarr是根据the tvdb重命名的,因此我们最好在jellyfin里面装一个the tvdb插件,并把它在下载剧集图片和元数据的优先级调到最高,否则在SP中可能出现集数对不上。群晖上,硬件解码要如下设置,下面的勾勾不要勾低电压,一般不支持。
做完这些之后,在jellyfin里添加媒体库,位置就选你Sonarr设置的Root Folders,就可以开始自动刮削了。
ShellClash
看到这里,整个流程基本上就完成了。不过如果你家里没有顺畅的外网环境的话,可能没有办法很好的刮削和在nyaa上搜种子。如果家里有软路由的话,在软路由上挂代理就能解决问题。如果不想再路由器上做手脚怕不稳定,也可以在群晖里面安装一个ubuntu容器来跑shellclash,开纯净模式运行并映射端口。如果你的Sonarr、Jackett等容器是通过bridge网络运行的,那么代理地址就是172.17.0.1,如果是host网络运行的,直接填127.0.0.1即可。
按照我上面说的,Jackett可以一个挂代理,一个不挂,这样同时兼顾国内外的索引器。
比较坑的一件事出现了:jellyfin目前没有支持代理,还好我们是用容器运行的。大家只要在环境变量中添加如下两个:HTTP_PROXY和HTTPS_PROXY:
这样即可。如果想要局域网不走代理,可以自行添加NO_PROXY变量。
Telegram通知
到了这里设置就基本上结束了。但是还有一个小问题:如果Sonarr添加了新番并成功下载到文件,是不是应该通知一下。大家可以在Sonarr Settings Connection里面设置个邮件提醒
不过这个邮件提醒内容非常简陋,也巨丑,一点意思也没有。所以我花了点时间赶工了一个telegram提醒小程序,有非常多的自定义字段。
https://github.com/canoziia/SonarrNotification
大家在github上下载release,通过文件夹挂载到sonarr上面,写好配置文件,然后选择Custom Script,填入脚本的地址就可以了。
这样通知的内容稍微多了点,而且有图片,不至于很难看。
终于整完了,开搜!
Jellyseerr
如果需要给自己同学等使用,也就是有多用户的需求的话,可以考虑加一个Jellyseerr(如果是Plex可以用Overseerr),来管理多用户的请求。效果图
Jellyseerr在更新最新剧集的时候似乎有点问题,可以参考 https://github.com/Fallenbagel/jellyseerr/issues/177 临时修复