HomeLab | 3 下载观影一条龙:NASTool/JellyFin/qBittorrent 半自动化家庭影院搭建指北


请注意!!!

本系列的文章是断断续续写的,本文最早写于 2022 年 12 月,可能有些信息已经过时!

别问,问就是写了一半然后放草稿箱里长草了。

请知悉,NASTool 官方已经不再维护了,但是现有版本的大部分功能还是能用的,希望本文对你还是有意义的喵!

0x00 引言

HomeLab 系列回顾:

HomeLab | 1 Proxmox Virtual Environment(PVE) 安装及配置

HomeLab | 2 OpenMediaVault 安装 & 硬盘直通 & 相关配置

在数字时代,随着流媒体服务的兴起,我们的娱乐方式正发生翻天覆地的变化。想象一下,既然已经有 HomeLab 了,如果你能够在此基础上拥有一个私人定制的家庭影院,不仅能够自动下载你最喜爱的电影和电视剧,还能在任何设备上随心所欲地观看,那会是怎样的体验呢?

听起来像是科幻电影中的场景,但实际上,这完全可以通过技术实现!

本文将带你走进 NASTool、JellyFin 和 qBittorrent 等工具的世界,展示如何将这些工具巧妙地组合在一起,构建出一个既高效又用户友好的半自动化家庭娱乐系统,实现下载观影一条龙。我们将一步步探索如何从零开始,把这个看似复杂的技术梦想变成现实。

这篇博客主要就是记录下搭建的过程,可能不会说太多为啥这么配置的,反正也是喵喵按照自己的感受来的(

为了部署和迁移方便,主要是基于 docker 进行搭建,而且尽量使用 docker compose 配置文件。

当然了,主要是喵喵随手写的笔记,具体咋用看你自己,你喜欢就好。

准备好了吗?让我们开始这趟激动人心的科技之旅,打造你的个人家庭影院吧!

(头图&引言部分 AI 参与创作

0x01 存储相关配置

这么多片子,没存储怎么活?快配!

在你的 NAS 上建立好存储,喵喵这里用的是 上一篇里配好的 omv,配置好之后为了方便先挂载一下

nano /etc/fstab

在最下面加入你的文件系统、挂载点等

/srv/dev-disk-by-uuid-xxxxx/media/         /mnt/media     none    bind,nofail     0 0

保存,退出,立即应用挂载配置

mount -a
ls -al /mnt/

然后就能看到你的 media 目录了。

新建目录并赋予权限,虽然不一定需要那么多(看个人吧

mkdir /mnt/media/{cache,downloads,links,watch,config,transcodes}
chmod -R 775 /mnt/media  # 如果没配用户组的话或者不行的话直接 777

0x02 qBittorrent 安装与配置

影片哪里来?下种子!

qBittorrent 是一个跨平台的开源、自由的 BitTorrent 客户端,其图形用户界面是通过 Qt 所写,后端使用 libtorrent。

mkdir -p ~/docker/qbittorrent
cd ~/docker/qbittorrent
nano docker-compose.yml
version: "2.1"
services:
  qbittorrent:
    image: linuxserver/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - WEBUI_PORT=8080
    volumes:
      - /mnt/media/config:/config
      - /mnt/media/downloads:/downloads
      - /mnt/media/watch:/watch
    network_mode: host
    #ports:
    #  - 8080:8080
    #  - 32940:32940
    #  - 32940:32940/udp
    restart: unless-stopped

启动 qbittorrent

docker compose up -d

默认用户名和密码是 admin / adminadmin

登录后设置下默认存储,喵喵这里默认存在 /downloads/movie 目录下,这里是 docker 映射进去的目录

/watch 目录是咱用来实现自动化下载的,比如从 byr / tjupt / etc. 把 torrents 下载下来,丢到 host 的 /mnt/media/watch 这个目录下,qb 就会自动开始下载了。

(很明显 /mnt/media 这个目录一般人都会走 NFS / SMB 共享出去的吧

(噢不好说,说不定直接用下文的 JellyFin 了

其他的设置就根据个人的喜好配置下就好了。

0x03 JellyFin 安装与配置

喵喵,我想随时随地看片!

Jellyfin is the volunteer-built media solution that puts you in control of your media. Stream to any device from your own server, with no strings attached. Your media, your server, your way.

Jellyfin enables you to collect, manage, and stream your media. Run the Jellyfin server on your system and gain access to the leading free-software entertainment system, bells and whistles included.

Jellyfin 是一套多媒体应用程序软件套装,旨在组织、管理和共享数字媒体文件,是 Emby 的一个自由开源分叉。Jellyfin 分为服务端和客户端应用程序,服务端应用程序安装在运行 Microsoft Windows、MacOS、Linux 等系统的服务器上或 Docker 上,客户端应用程序安装在智能手机、平板电脑、智能电视、网络机顶盒、电子游戏机或网页浏览器上。支持 DLNA 以及插有 Chromecast 的设备也能接收 Jellyfin 服务端发来的文件。

docker-compose 安装

这里先不考虑核显或者独显硬解码,后面喵喵另外写一篇,可以期待一下哈哈。

Update: 写好了!

欢迎来看 -> HomeLab | 4 GPU 硬解新境界:LXC 环境下玩转 JellyFin 核显硬解转码

参考官方文档 https://jellyfin.org/docs/general/administration/installing#docker

稍微改一改自己的目录,看你心情

mkdir -p ~/docker/jellyfin
cd ~/docker/jellyfin
mkdir config
chmod 777 config
mkdir -p /mnt/media/cache/
chmod 777 /mnt/media/cache
nano docker-compose.yml

配置文件

version: '3.5'
services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    user: 1000:1000
    network_mode: 'host'
    volumes:
      - /mnt/media/config/jellyfin:/config
      - /mnt/media/cache:/cache
      - /mnt/media/transcodes:/config/transcodes  # ffmpeg转码的缓存目录
      - /mnt/media/links:/media
      # - /path/to/media2:/media2:ro
    restart: 'unless-stopped'
    # Optional - alternative address used for autodiscovery
    environment:
      - TZ=Asia/Shanghai
      # - JELLYFIN_PublishedServerUrl=http://example.com
    # Optional - may be necessary for docker healthcheck to pass if running in host network mode
    extra_hosts:
      - "host.docker.internal:host-gateway"

然后启动

docker compose up -d

配置

如果没问题的话,访问这台机器的 8096 端口,比如 http://192.168.1.100:8096/ ,就能进入到配置界面了

配置管理员信息

设置你的媒体库,这里喵喵分别新建 电影、电视剧、动漫 三个,当然你也可以按照你的需要自己来建立

这里先把目录建立一下

cd /mnt/media/links/
mkdir {movie,comic,tv}

添加媒体库,注意下这里的文件夹是挂载进 docker 的,也就是 /media/xxx

这个 文件夹 点一下 +,然后把对应的路径填上,比如电影是 /media/movie

同理,新建 动漫 和 电视剧

首选元数据语言

到这里就初始化完成了。

点击左上角的按钮,找到 控制台

新建一个 API 密钥,方便后面配置 nas-tools

0x04 ChineseSubFinder 安装与配置

喵呜,这个鸟语听不懂咋办啊?上字幕!

ChineseSubFinder 项目的初衷仅仅是想自动化搞定限定条件中文 字幕下载。

docker-compose 安装

mkdir -p ~/docker/chinesesubfinder
cd ~/docker/chinesesubfinder
nano docker-compose.yml

咱这里用的是 lite 版本的容器,感觉能用就行,

version: "3"
services:
  chinesesubfinder:
    image: allanpk716/chinesesubfinder:latest-lite
    volumes:
      - ./config:/config  # 冒号左边请修改为你想在主机上保存配置、日志等文件的路径
      - /mnt/media:/media    # 请修改为你的媒体目录,冒号右边可以改成你方便记忆的目录,多个媒体目录需要分别映射进来
    environment:
      - PUID=1000         # uid
      - PGID=1000         # gid
      - PERMS=false       # 是否重设/media权限
      - TZ=Asia/Shanghai  # 时区
      - UMASK=022         # 权限掩码
    restart: always
    network_mode: bridge
    hostname: chinesesubfinder
    container_name: chinesesubfinder
    ports:
      - 19035:19035
      - 19037:19037  # webui 的视频列表读取图片用,务必设置不要暴露到外网
    logging:
        driver: "json-file"
        options:
          max-size: "100m" # 限制docker控制台日志大小,可自行调整

启动

docker compose up -d

配置

访问 http://ip:19035 进入配置界面

这个电影和连续剧的目录输入链接后的,也就是 /media/links/movie/media/links/tv

选择媒体服务器 JellyFin

应用完配置之后,就可以登录进入系统了。

为了与接下来的 NasTools 联动,这里在 配置中心 - 实验室 里把 API Key 打开,生成个新的 key

这里顺便注册个 Assrt,借助这个 API 说不定能找到更多字幕

https://secure.assrt.net/user/register.xml

唉,不懂为啥他这里老半天注册不成,提示 wtf,那个验证码还烦的一批,算了(就这样吧

配置好之后,回到 总览,把守护进程给开启了。

如果守护进程没有在运行,那么就无法开始字幕的下载的。

注意,一旦守护进程启动,设置就无法更改,要改设置就停止守护进程。

0x05 NASTool 安装与配置

什么,这么多好康的影片能自动搜刮整理?太好了!

简介

NASTool / nas-tools

NAS 媒体库资源归集、整理自动化工具

本软件的初衷是实现影视资源的自动化管理,释放双手、聚焦观影。需要有良好的网络环境及私有站点才能获得较好的使用体验。

1、资源检索和订阅

  • 站点RSS聚合,想看的加入订阅,资源自动实时追新。
  • 通过微信、Telegram、Slack、Synology Chat或者WEB界面聚合资源搜索下载,最新热门资源一键搜索或者订阅。
  • 与豆瓣联动,在豆瓣中标记想看后台自动检索下载,未出全的自动加入订阅。

2、媒体库整理

  • 监控下载软件,下载完成后自动识别真实名称,硬链接到媒体库并重命名。
  • 对目录进行监控,文件变化时自动识别媒体信息硬链接到媒体库并重命名。
  • 解决保种与媒体库整理冲突的问题,专为中文环境优化,支持国产剧集和动漫,重命名准确率高,改名后Emby/Jellyfin/Plex完美刮削海报墙。

3、站点养护

  • 全面的站点数据统计,实时监测你的站点流量情况。
  • 全自动化托管养站,支持远程下载器(本工具内建刷流功能仅为日常养站使用,如果追求数据建议使用更加强大的刷流工具:Vertex)。
  • 站点每日自动登录保号。

4、消息服务

  • 支持微信、Telegram、Slack、Synology Chat、Bark、PushPlus、爱语飞飞等近十种渠道图文消息通知
  • 支持通过微信、Telegram、Slack、Synology Chat远程控制订阅和下载。
  • Emby/Jellyfin/Plex播放状态通知。

Via https://github.com/jxxghp/nas-tools

https://github.com/NAStool/nas-tools


Update1: 2023.5.15 NAStool 官方表示该项目停止维护,源代码不再上 GitHub 仓库,且发布了已关闭自动更新的最新版本介质

v3.2.3:
Docker:https://hub.docker.com/r/nastool/nas-tools
Windows:https://github.com/NAStool/nas-tools/releases/tag/v3.2.3

Update2: 不过还是有人做了镜像备份的,比如 https://hub.docker.com/r/nastools/nas-tools 中的 v2.9.1 版本,也就是最后未阉割版,可以使用 nastools/nas-tools:2.9.1 镜像


下面的是 原版的安装配置

改成未阉割版的了,看个人需要吧,use at your own risk

别没事点更新就行

docker-compose 安装

mkdir -p ~/docker/nas-tools
cd ~/docker/nas-tools
nano docker-compose.yml
version: "3"
services:
  nas-tools:
    image: nastools/nas-tools:2.9.1
    ports:
      - 3000:3000        # 默认的webui控制端口
    volumes:
      - ./config:/config   # 冒号左边请修改为你想保存配置的路径
      - /mnt/media:/media   # 媒体目录,多个目录需要分别映射进来,需要满足配置文件说明中的要求
    environment: 
      - PUID=1000    # 想切换为哪个用户来运行程序,该用户的uid
      - PGID=1000    # 想切换为哪个用户来运行程序,该用户的gid
      - UMASK=000    # 掩码权限,默认000,可以考虑设置为022
      - NASTOOL_AUTO_UPDATE=false  # 如需在启动容器时自动升级程程序请设置为true
      # - REPO_URL=https://ghproxy.com/https://github.com/jxxghp/nas-tools.git  # 当你访问github网络很差时,可以考虑解释本行注释
    restart: always
    network_mode: bridge
    hostname: nas-tools
    container_name: nas-tools
docker compose up -d

看起来这个背景是用的 Bing 每日壁纸,顺便给喵喵写的项目打个广告:

BingImages

Bing Homepage Images / Image of the day / Wallpaper

必应首页壁纸爬取,基于 GitHub Action 实现 Telegram Channel 推送等

Everyday push channel: @BingImage

https://github.com/miaotony/BingImages/

欢迎顺手点个 star 喵~

默认用户名及密码是 admin / password

登录后提示 请先配置 TMDB API Key,并修改登录密码!

确定后 在这里把登录密码改一改,然后保存

申请 TMDB API Key

https://www.themoviedb.org 注册个账号,然后申请 API Key

https://www.themoviedb.org/settings/api

申请的时候 url 可以写 http://localhost ,简介的话最好用英语稍微写长一点,比如描述一下你要用这个 API 来干啥(方便获取电影、剧集的元数据啥的),不然可能不会通过,其他信息的话随你心情填一下就行了

完成之后这里就会有个 API 密钥 (v3 auth) ,这个就是我们需要的 TMDB API Key

填到 媒体 这里,保存

其他的设置的话按照个人喜好改一改就完事了。

配置媒体库

如图,注意是 links 目录下的

这个未识别的话也可以看心情建一个目录配一下,如果不能自动识别的影片就会放到这里面。

配置同步目录

/media/downloads/movie/ 同步到 /media/links/movie/

同理配置其他几个

另外,这里可以配置下加个未识别的目录,比如 /media/links/unrecognized,当然这个目录需要自己事先建立好配好权限。配了这个的话如何没能自动识别出来的话,可以手动进到这个目录里去手动点识别。

配置下载器

这里用的是 qBittorrent

IP 地址不能是 127.0.0.1,因为这个应用跑在 docker 里,可以输入服务器的 IP,比如内网的话一般是 192.168.xxx.xxx

如果用户名密码没改的话,默认是 admin / adminadmin

然后配置下载目录,这个藏在这里我找了老半天才发现。。

由于在 qb 里我把 /mnt/media/downloads 映射到了 /downloads,这里 下载保存目录要填 qb 那边的目录,访问目录的话就是 nas-tools 这边的目录

配置媒体服务器

这里的服务器地址也要填写 nas 所在机器的 IP,不能是 127.0.0.1

Api Key 就是在 0x03 JellyFin 配置中最后一步里生成的那个

配置字幕

服务器地址就是 http://ip:19035 ,API Key 填写在 ChineseSubFinder 中生成的那个

本地路径和远程路径的话,因为喵喵这里都是将 /mnt/media 映射到各自容器的 /media 下,所以可以不用填写了。

自动删种任务

从公网 BT 下载的种子在做种的时候也一般会消耗大量带宽,于是咱在 下载管理-自动删种 这里加了个任务,当做种 1h 之后自动暂停种子

60min 执行一次,这里其实还可以匹配下 tracker 关键词,如果是公网 BT 那就执行这个动作这样,不过咱先摸了(能用就行

可以点击那个 闪电 的图标,立即执行任务看看是否满足预期效果。

0x06 使用示例

啊,终于可以自动化下载观影一条龙了嘛!(抓爆米花

在 nastool 资源搜索里搜索你喜欢的电影、电视剧、动漫,或者在推荐里看看有没有你喜欢的,然后点进去

BTW,继续写这部分的时候(后注:大概是 2023年2月?) nastool 更新到了 2.9.0 版本,前端界面变得好看多了!

请注意,最新的 3.x 版本的话应该是阉割掉了 BT 索引等功能,而且加入了用户认证等,请根据实际需要谨慎更新。

不更新的话就低调使用吧

搜索资源 就会调用索引器进行检索

然后选择你喜欢的下载站点进行下载,这里的标签清晰地显示出了视频的来源、格式、大小、分辨率等

然后就可以在 下载管理 这里面看到下载的文件,他会自动管理 qBittorrent 进行下载

当然你也可以直接在这里面添加要下载的种子或者磁链

噢对了,这里好像是能支持一些 PT 站的搜索,但是适配情况不好说,自己看着用吧(反正喵喵没试过,听说不大好用,而且这个版本不更新了应该缺乏维护了?

添加种子下载

近期下载 里面就有你下载过的记录

下载完成后 NAStool 会进行目录同步,比如喵喵这里就会自己重命名,然后按照目录格式硬链接到自己的媒体目录下,然后调用 TMDB 等 API 去生成 nfo 文件

注意,这个 TMDB 国内有可能上不去,比如喵喵这里直连访问情况堪忧,可以的话最好把代理给配好!!! (或者改改 hosts 之类的缓解措施

然后会调用 ChineseSubFinder 寻找字幕自动下载

另外,进行媒体同步,调用 JellyFin 的 API 进行同步,这时候再打开 JellyFin,里面就会出现你喜欢的电影墙啦~

(这里有个坑,JellyFin 自己也会进行刮削,但是吧他也会用 TMDB 这些不一定上得去的资源,喵喵这里扫描媒体库卡老半天,最后看了 log 半天才发现是卡网络问题上了。。

所以可以只用 NAStool 的刮削,而把 JellyFin 的刮削给关了,步骤如下:

进入 控制台-媒体库,点击相应的库,然后把 元数据下载器、图片获取程序 里的勾去掉,然后勾选 媒体资料储存方式 里的 Nfo,最后点确定

然后回到 控制台,点下 扫描所有媒体库

结束之后你就可以享受你自己的电影墙了!

当然喵喵这里发现一个不足,NAStool 貌似不会生成电视剧里每一集的预览图,而 JellyFin 的刮削可以,当然这也不是刚需了。

你也可以在 JellyFin 的 docker compose 配置里加个 http_proxy https_proxy 环境变量,从而让流量走代理,反正看个人了。


另外,JellyFin 还有 iOS、Android 端 APP,在电视上也有相应的适配版本,于是你还可以不局限于电脑,随时在手机、平板、电视等设备上观看 NAS 上的影片啦~

啥,你不喜欢安装 APP?那直接访问 web 端就完事了啊!

再配上内网穿透或者 Cloudflare tunnel 类似物,你还能在外随时随地连回家里看片,心动了嘛?快来动手试试吧!

0x07 小结

随着探索的结束,本文不仅揭示了如何利用 NASTool、JellyFin 和 qBittorrent 等工具来搭建一个半自动化的家庭影院系统,还展现了这一系统如何能够融入我们的日常生活,带来更加丰富和个性化的娱乐体验。从自动化下载到在舒适的家庭环境中享受定制化的观影体验,这一系统无疑为电影爱好者和技术爱好者提供了一个新的视角。

总的来说,希望这篇文章能激发读者对家庭娱乐技术的兴趣,动手去探索和实践,在 homelab 基础上打造出一个既符合个人口味又充满科技感的家庭影院。

通过整合 NASTool、JellyFin 和 qBittorrent 等,我们不仅可以实现一个高效的媒体下载和管理系统,还能享受到在任何设备上无缝观看的便利。这个半自动化系统不仅节省了寻找和下载媒体内容的时间,还提高了整个观影体验的质量。

当然了,大家在享受这些技术带来的便利时,应当遵守相关的法律法规,尊重版权和个人隐私。

喵呜喵呜喵!

Update: 核显转码的写好了,欢迎来看 -> HomeLab | 4 GPU 硬解新境界:LXC 环境下玩转 JellyFin 核显硬解转码

(溜了溜了喵~


文章作者: MiaoTony
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 MiaoTony !
评论
 上一篇
CTF | 2023 USTC Hackergame WriteUp CTF | 2023 USTC Hackergame WriteUp
又是一年Hackergame,今年题目难度整体偏基础好入门,给这周增添了点娱乐气息,和往年一样比赛中也学到了许多。
2023-11-05
下一篇 
HomeLab | 2 OpenMediaVault 安装 & 硬盘直通 & 相关配置 HomeLab | 2 OpenMediaVault 安装 & 硬盘直通 & 相关配置
大概介绍了一下 OpenMediaVault 的安装,硬盘直通,RAID 组建,LVM 配置,文件系统,文件共享,以及 OMV 里一些基本功能的使用等。
2023-06-10
  目录