NAS系列 安装LXC容器和配置影视系统
本文最后更新于 70 天前,如有失效请评论区留言。

本博客由ZGOCLOUD大力赞助!如何更快地访问本站?有需要可加电报群获得更多帮助。本博客用什么VPS?创作不易,请支持苯苯!推荐购买本博客的VIP喔,10元/年即可畅享所有VIP专属内容!

日志

  • 2023-07-09:记录一次LXC相关I/O error导致的PVE虚拟机崩溃事件及其解决方案。
  • 2023-06-23:新增Jellyfin的转码缓存设置,详见“Jellyfin——控制台——播放”小节。
  • 2023-04-23:新增双transmission的提醒,即:刷流用一个transmission,日常用另外一个transmission
  • 2023-04-06:优化LXC目录备份和Jellyfin的内容。新增“缩小LXC磁盘容量”教程。
  • 2023-04-05:增加LXC目录备份的教程。优化其它内容。

前言

本文所提及的docker应用都可以通过设置Nginx Proxy Manager & DDNS-Go使用https远程访问

在写完《NAS系列 安装OpenMediaVault虚拟机》和《NAS系列 配置OpenMediaVault的ZFS阵列和共享服务》后,本来是想继续讲一些和ZFS相关的知识,但想到其中的坑挺大,一时半会讲不完,还是先不讲了。为了可以更快地在PVE中搭建起影音系统,我还是先讲LXC容器安装和影音相关docker的安装和使用的相关内容吧。这样也可以快速地使用我们的NAS (ฅ´ω`ฅ) 毕竟对于大多数人来说,家庭影音需求其实是NAS使用的“大户”,占据相当多的容量和资源。

LXC容器

为什么要安装LXC容器

首先,我展示一下目前自己正使用的Docker镜像在各系统中的分布情况:

msedge_ZVu5PUsU2i

由于NPM和DDNS-Go的重要性和特殊性,我直接在PVE中安装它们(详见《NAS系列 PVE基本设置》的“NPM & DDNS-Go”小节)。在OpenWrt里安装应该问题也不大,配个大点的虚拟硬盘就行。

OpenWrt里安装的是两个AdGuard Home,这是做DNS分流用的(详见《NAS系列 基于多ADGuard Home实现DNS分流和个性化管理》)。

LXC里我安装了Jellyfin(影视媒体管理系统),因为我已经将核显直通给LXC容器,这样Jellyfin可以使用该核显进行h265的硬件解码。其实我也可以将核显直通给OMV,但当时可能是由于Linux内核版本问题未能成功,后面LXC成功了我就没有折腾OMV的核显直通。其实,我估计不直通核显,直接在PVE中安装Jellyfin也是可行的。

此外,与普通的虚拟机相比,LXC容器与PVE共享同一个Linux内核,因此具备许多优势,比如更轻量、性能更高、启动更快、资源利用率更好。因此,我还想测试一下LXC。

在OMV中安装的Docker容器就多了,比如影音系统(浅绿色背景)相关的nas-tools、transmission和IYUUPlus。Sync是一个自动同步应用,主要是配合日用PC将重要文件夹自动备份至OMV中。duplicati和nextcloud就不多介绍,看我以前的教程。我原本也是让OMV当Docker的主力机的,因为它本来就是基于Debian的操作系统,对Docker的支持很不错;只是因为核显直通不太顺利,所以才没有将Jellyfin安装在里面。

这只是我觉得比较好的方案,大家可以根据自己的需要进行调整。

安装LXC容器

请特别关注《NAS系列 PVE基本设置》中的硬件直通/核显直通——直通给LXC确保PVE已经做好了直通核显给LXC的准备

LXC容器的具体安装过程推荐大家按老高的视频教程“【更新】免费开源影音服务Jellyfin部署,PVE下LXC套娃安装Debian Docker,核显硬解转码以N5105为例低功耗intel CPU核显通用_哔哩哔哩_bilibili”操作。我这里也简单地记录一下:

  • 下载CT模板:

  • 常规:点击右上角的创建CT。ID和名字按喜好选好,与虚拟机的不重复即可:

msedge_qfOlfY45YG

  • 模板:选刚刚下载的debian 11 CT模板。

msedge_v52Xj77l5Q

  • 磁盘:可以先选小点的空间,不够可以扩容。我们之后也会分享怎么缩小容量。

msedge_bgVWlRnAQA

msedge_qTuLwYFy3y

  • CPU:老高教程中的CPU权重是1024。取值是1-10000,代表容器相对宿主机的CPU资源占用。如果你的服务器资源比较充足,可以试试50-100。如果宿主机资源紧张,可以适当提高CPU权重。咱们安装Jellyfin,解码靠核显,我个人觉得这里的值不用设置挺大。你可以使用默认的100试试看。

msedge_bHEcgq7oCv

  • 内存:我毕竟也是用32G的人了,直接给个4G (ฅ´ω`ฅ)

msedge_j4cyJeun4f

  • 网络:关闭防火墙以避免端口号不通等问题。

msedge_s0vJYb6p11

  • DNS:默认即可,即使用宿主机的设置。

msedge_tPezJlPe11

最后,直接完成即可。先不要启动LXC容器:

msedge_50jBcMNO6v

设置开机自启和嵌套:

msedge_vw4t0FWIeJ

就可以启动容器了:

msedge_ZQ82DIQusU

这里建议大家按照《Linux基础 基于密钥对的SSH远程登陆》设置SSH登陆,这样更加安全。可以按照《Docker系列 配置Docker全局环境》管理Docker镜像源和日志。

挂载OMV的SMB分享

一般来说,我们会通过transmission下载视频,它们会保存在OMV;如果Jellyfin要导入视频,则一定要将文件夹从OMV共享至LXC。因此,我们会将OMV的SMB分享挂载到LXC中的某个路径中,然后像使用LXC的原生路径将它们映射到Jellyfin容器内部。

我们首先要按照《NAS系列 配置OpenMediaVault的ZFS阵列和共享服务》在PVE里添加好OMV的SMB服务。

我们在PVE.LXC Shell中新建文件夹(这个按自己的实际情况来即可):

mkdir -p /nas2/share

PVE Shell里运行下列命令,将SMB空间挂载给LXC容器:

pct set 103 -mp0 /mnt/pve/nas2-share,mp=/nas2/share
# 要添加更多文件夹,可以-mp1、-mp2这样下去。后面的文件夹也改了就行

该命令路径的具体内涵如下图:

msedge_EqvZDYlXP6

最后,我们回到PVE.LXC Shell里查看挂载文件夹的内容:

ls -hl /nas2/share

输出为:

total 0
drwxr-xr-x 2 root root 0 Apr  1 00:50 docker
drwxr-xr-x 2 root root 0 Apr  1 17:03 dump
drwxr-xr-x 2 root root 0 Feb 14 04:24 images
drwxr-xr-x 2 root root 0 Feb 14 04:24 private
drwxr-xr-x 2 root root 0 Apr  1 13:41 resources
drwxr-xr-x 2 root root 0 Feb 14 04:24 snippets
drwxr-xr-x 2 root root 0 Mar 28 01:54 softwares
drwxr-xr-x 2 root root 0 Feb 14 04:24 template
drwxr-xr-x 2 root root 0 Mar 26 11:01 windows

表明已经成功挂载该SMB分享。这个过程是挺简单的,不要搞混PVE和PVE.LXC的Shell就行 (ฅ´ω`ฅ)

安装Docker和Docker Compose

根据《Docker系列 配置Docker全局环境》安装Docker和Docker Compose。建议看看《Docker系列 了解Docker Compose的配置文件》,以对Docker Compose更加了解。

本教程的测试环境如下:

docker --version # Docker version 20.10.22, build 3a2c30b
docker-compose --version # Docker Compose version v2.4.1

缩小LXC磁盘容量

如果要扩大LXC磁盘容量是很容易的;但要缩小LXC磁盘容量要费点功夫。具体方法如下:

此隐藏内容仅限VIP查看。包年VIP仅10元,建议升级。VIP可享有哪些特权

LXC相关i/o错误

在2023-07-09,我遇到了一个莫名奇妙的错误,就是local-lvm的空间忽然爆满:

msedge_YUXmpvEKGN

这会导致所有的虚拟机/LXC容器发生i/o error,从而无法正常开启和使用。当时我找了很长时间也没找到原因。我推测很可能与甜糖的docker安装有关,因为当时我正在安装它的过程中出问题的。具体的docker-compose内容如下:

version: '3'
services:
  ttnode:
    image: registry.cn-hangzhou.aliyuncs.com/tiptime/ttnode:latest
    container_name: ttnode01
    hostname: ttnode01
    privileged: true
    restart: always
    volumes:
      - ./mmcblk0p1:/mnt/data/ttnode
      - /var/run/docker.sock:/var/run/docker.sock
      - /proc:/host/proc:ro
    networks:
      macvlan_network:
        ipv4_address: 192.168.1.182 # 同网段IP

networks:
  macvlan_network:
    name: PTnetwork # 之前搞好的IP 

但这里还是有古怪,因为我是在PVE.OMV而不是PVE.LXC中安装的,理论上应该不会影响整个虚拟机才对。不过privileged=true可能真的会有所影响。

总之,最后我直接删除了整个LXC容器,然后利用备份恢复LXC容器后PVE的虚拟机就正常工作了。虚惊一场啊!

Jellyfin

Jellyfin是一个非常著名的开源、免费的影音管理系统:

msedge_bY5e6LYwa5

据我所知,Emby和Plex的硬件解码功能都不是免费的;但Jellyfin是免费的。这也是我使用Jellyfin的主要原因之一。

我使用的是nyanmisaka/jellyfin镜像,它内置了很多显卡驱动,由Jellyfin的核心开发成员所维护;也是NAS玩家中较为推崇的jellyfin docker镜像(主要是免费太香)。

详细安装过程我不展示了,大家自己试试看,或者找个视频教程吧!

安装Jellyfin

PVE.LXC Shell中新建文件夹:

mkdir -p ~/jellyfin cd ~/jellyfin

新建docker-compose.yml内容(要注意看注释提示):

version: '3'
services:
  jellyfin:
    # 使用特别的镜像。并非官方镜像。
    image: nyanmisaka/jellyfin:latest
    container_name: jellyfin # 容器名
    ports:
      - 8096:8096 # 按需修改
    environment:
      - TZ=Asia/Shanghai # 中国大陆选北京时间即可
    volumes:
      - ./config:/config
      - ./cache:/cache
      # 可以添加多个目录。自定义即可
      - /nas2/share/docker/transmission:/transmission2
    # privileged对容器root权限作出了限制,没敢轻易给true。不知道默认是不是true
    # privileged: true
    devices:
      # - /dev/dri:/dev/dri/renderD128
      # - /dev/dri/card1:/dev/dri/card0
      - /dev/dri:/dev/dri
    restart: 'unless-stopped'

这里的/dev/dri已经包含了核显的相关信息,这个之前在PVE和LXC的Shell里已经检查过了:

total 0
drwxr-xr-x 2 root root        80 Apr  1 12:29 by-path
crw-rw---- 1 root video 226,   0 Apr  1 12:29 card0
crw-rw---- 1 root input 226, 128 Apr  1 12:29 renderD128

请注意,一定要挂载至少一个大容量volume用于放置临时转码文件!否则LXC容器可能在同时播放多个转码视频时崩溃!切记!

直接上线即可:

docker-compose up -d

访问http://<lXC容器的IP>:8096即可访问。

设置

播放

msedge_egbmCQpSAI

字幕

msedge_vHpvsnBQPF

控制台

我展示一些重要的设置,比如媒体库选项和播放设置。没说到的选项默认即可。

媒体库

由于我使用了OpenClash,所以可以开启自动刮削。不过,使用了nas-tool后,刮削工作一般是由nas-tool完成,你也可以关闭。我的电影库设置如下:

msedge_Gug7s9dxK8

我的电视剧/纪录片/动画片的设置如下:

msedge_D2vDmwmkq1

播放

h264也应该选上;因为有时候字幕或音频不支持时也会解码,这样不容易占用大量的CPU资源。

如果你平时只是在家里的电视中看视频,硬件解码并不是很重要。不过,如果你有远程访问Jellyfin看视频的需求,Jellyfin的硬件解码就非常重要。PT站的新资源很多都是2k/4k,并且是h265或其它比较新的编码格式。如果直接播放,对于播放设备的带宽要求和解码能力要求很高。如果是移动设备,可能并不太具备上述条件,特别是与NAS不在同一局域网的情况下。因此,如果条件允许,应该设置Jellyfin的硬件解码。这其实也是大多数人要折腾核显直通的主要原因。

在Jellyfin的控制台中,播放设置定义了核显调用的具体参数,是Jellyfin硬解行为的主要设置位置。我的设置如下:

msedge_62GujC5tgC

我用的CPU是G5400T,核显型号是Intel® UHD Graphics 610(具体见《NAS系列 硬件选择》),这样设置就可以成功转码h265至h264了。请注意,不同核显可能需要不同的设置,这个只能具体情况具体分析;大家有什么疑问可以评论区留言。完成设置后,你可以尝试打开一个h265视频看看是否可以成功转码:

msedge_VXVFWHuEgg

如果视频播放错误,就是没有成功。核显直通失败的原因很复杂,很难一一列举。有些可能只是单纯的某个设置错误;有些却可能是核显驱动与Linux内核兼容性不好(比如CPU比较新,Linux的显卡驱动开发还没跟上),这种情况是很难找到明显的设置错误的。后者其实是我选择G5400T的主要原因之一——G5400T是NAS玩家中一块比较经典的老CPU,有很多核显直通的成功先例。

另外,播放一些比较大的视频时,转码很容易会产生数十G的ts文件:

MobaXterm1_CHS_PYk3eB0OxK2

此时,如果转码路径使用默认的/config/transcodes则会导致磁盘爆满,使Jellyfin或LXC容器崩溃。因此,建议转码路径选择一个大存储。如图,我使用的路径对应的是nas存储(以T计),就不需要担心磁盘爆满的问题了:

msedge_MEoCcgVmW5

由于我的PVE/LXC是安装在系统盘里的,不使用系统路径作为转码缓存盘的另外一个好处就是可以避免频繁缓存对固态硬盘的潜在伤害 (ฅ´ω`ฅ)

虽然转码缓存在停止播放视频后会很快被删除,但还是建议添加一个定期清理转码缓存的cron命令,比如:

# clean jellyfin transcode cache
0 2 * * * root /usr/bin/rm -rf /nas2/share/docker/transmission/transcode/*

用户

可以设置多用户和家长控制:

msedge_7WXSRBX7uu

根据我的经验,国内影视的最大尺度基本相当于PG-13/T,即可能不适合13岁及以下的儿童观看,需要家长指导。你甚至可以再往下调整。你也可以单独调整某个影片的分级:

msedge_2y7e9nDF5u

这个功能是挺贴心的。如果你不想让小孩子看某些电视剧/电影,可以开一个新帐户,并设置家长控制。此外,家长控制只是让这个视频无法搜索,但并不意味着视频对该用户不可见。如果用户知道了视频地址,他是可以播放设定分级以上的视频的

其它

建议关注控制台中的联网插件。其它就不具体说了,不懂默认即可。

备份Jellyfin目录

参考ChatGPT-rsync-01

如果将Jellyfin的根目录强行设置在SMB中可能会有文件权限问题,影响正常使用。因此,我们的jellyfin根目录不一定在nas2中;但它又保存了很多关键信息,所以有备份的至OMV 的必要。

除了在PVE中备份整个LXC容器外,我们还可以通过rsync备份jellyfin根目录。使用rsync而不是cp的原因是rsync支持更加复杂的备份功能,比如增量备份、删除目标文件夹内不存在的文件。

首先,我们在PVE.LXC Shell里安装rsync

apt update && apt install rsync -y

假设jellyfin(或其它docker应用)的根目录在LXC的/root中。如果要进行1次备份,则输入下列命令:

# rsync -avzh --delete --exclude '*/.*' /path/to/source/folder/ /path/to/destination/folder/
rsync -avzh --delete --exclude '*/.*' /root/ /nas2/share/docker/lxc_backup/

请注意,文件夹末尾的斜杠是必需的,它告诉rsync复制源文件夹中的内容,而不是整个源文件夹本身。其它参数解析如下:

  • -a:以归档模式进行备份,这将保留文件的权限、所有者和时间戳等元数据。
  • -v:显示复制的文件和文件夹的详细信息。
  • -z:在传输文件时进行压缩,以减少传输的数据量。
  • -h:以人类可读的格式显示输出信息。
  • --delete:删除目标文件夹中不再存在于源文件夹中的文件和文件夹。
  • --exclude '*/.*':忽略目标文件夹中以点开头的所有隐藏文件夹。至少对于docker根目录可以这样做,因为它们的关键信息往往不保存在隐藏文件夹中。

最后,建议添加cron定时任务:

# backup LXC folder in 00:00 every day
0 0 * * * root /usr/bin/rsync -avzh --delete --exclude '*/.*' /root/ /nas2/share/docker/lxc_backup/ >/dev/null 2>&1

OMV的影视系统

如前所述,本教程的影音系统由多个不同的Docker容器组成:

  • 下载器:transmission
  • 管理器:nas-tool、Jellyfin
  • 续种转种:IYUUPlus

docker stack的根目录不一定处于共享文件夹中。我们只要令transmission的下载文件夹downloads在共享文件夹中,这样方便日用PC直接查看和LXC通过SMB引用。实际上,为了方便,我的OMV中所有docker stack的根目录都在/nas2/share/docker2内:

$ tree -h -L 2
.
├── [   6]  nas-tool
│   ├── [   8]  config
│   ├── [1.3K]  docker-compose.yml
│   ├── [1.1K]  docker-compose.yml_20230214
│   └── [1.1K]  docker-compose.yml.backup20230324
└── [   8]  transmission
    ├── [  12]  config
    ├── [ 807]  docker-compose.yml
    ├── [ 621]  docker-compose.yml.backup20230304
    ├── [   4]  downloads
    ├── [   3]  IYUU
    └── [   4]  watch

除了transmission,qBittorrent也是比较常用的下载器,而且在PT站使用者中似乎更加流行。坊间传言qBittorrent速度快,适合抢上传; 而transmission稳,适合保种和管理。不过,我没怎么用过qBittorrent,不好作比较。这个大家自行了解即可。无论是transmission还是qBittorrent,通过Docker安装都不难。

在本教程中,我们假定所有OMV中的docker stack根目录都是/nas2/share/docker的子文件夹,大家按自己的实际情况调整即可。

Macvlan

建议基于PTnetwork网络布署OMV中的影视相关容器,这样每个stack都可以获得一个局域网IP。这种状态对于Clash屏蔽流量、51413端口使用等场景的兼容性更强,故强烈推荐!

在PVE.OMV中,找到ens/enp开头的虚拟网卡:

ip a

输出结果类似:

2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:d4:92:62:2a:35 brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    inet 192.168.1.99/24 brd 192.168.1.255 scope global ens18

细心的小伙伴可能会发现,通过网络设备Mac号也可以定位该虚拟网卡:

msedge_zhpRULFxCt

记住ens18这个名字。我们开启虚拟网卡的混杂模式:

ip link set ens18 promisc on

之后,该虚拟网卡的信息略有变化:

2: ens18: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:d4:92:62:2a:35 brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    inet 192.168.1.99/24 brd 192.168.1.255 scope global ens18

不过,如果OMV重启,混杂模式设置会失效。我估计在PVE后台进行设置才可以持久化,不过暂时没找到设置的地方。而且,不开启混杂模式似乎也没有太明显的影响,或许与该网卡是虚拟网卡有关。小伙伴可以评论区发表自己的见解 (ฅ´ω`ฅ)

我们在PVE.OMV中添加一个Macvlan网络:

docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=ens18 \
  PTnetwork

PTnetwork的效果类似于在宿主网络(也就是整个局域网)里引入了一个新的网桥/交换机。更多讲解请看《Docker系列 了解Docker Compose的配置文件 》的“实例3”。

transmission

在实际使用中,推荐刷流用一个transmission,日常用另外一个transmission。因为刷流往往有删除种子的规则,如果刷流/日常混用,则可能导致日常种子被误删。当时我下载的“世界奇妙物语”就是这样被删了,浪费下载流量 Σ( ° △ °|||)︴

我就不专门展示第2个transmission的安装了。流程是一样的,你准备一个不同的文件夹和IP即可。

安装transmission

很久以前我在《Docker系列 家庭影音 使用种子下载器transmission》中介绍过怎么安装transmission,不过不再推荐在NAS里使用那种方式。

首先,创建transmission的根目录:

work=/nas2/share/docker/transmission
mkdir -p $work && cd $work

配置docker-compose.yml文件:

version: "2.1"
services:
  transmission:
    # 使用的是transmission快校版 
    image: chisbread/transmission:version-3.00-r13.1
    restart: unless-stopped
    container_name: transmission
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - USER=test_user # 按需修改
      - PASS=12345678 # 按需修改
      # - WHITELIST=iplist # 按需修改
      # - RPCPORT=rpcport # 按需修改
      # - PEERPORT=peerport # 按需修改
      # - HOST_WHITELIST=dnsnane list # 按需修改
    volumes:
      - ./config:/config
      - ./downloads:/downloads
      - ./watch:/watch
    ports:
      - 9091:9091  # 按需修改
      - 51413:51413
      - 51413:51413/udp
    networks:
      macvlan_network:
        ipv4_address: 192.168.1.100 # # 按需修改。同网段IP

networks:
  macvlan_network:
    name: PTnetwork # Host虚拟网桥  

类似的代码我在《Docker系列 了解Docker Compose的配置文件》的“实例3”中也展示过。大家要特别注意,192.168.1.100要按需修改。还有端口号、帐户/密码等也要按需修改;这些情况和以前使用docker时是一样的。

直接上线即可:

docker-compose up -d

设置transmission

直接访问http://192.168.1.100:9091,输入帐号密码即可访问。登陆成功后界面类似:

msedge_OU4LYu88Hq

我的transmission设置也贴出来供大家参考:

msedge_ri5en2i0h8

没贴出来的基本都是默认。

据坊间传言,transmission缓存的设置可按这个原则设置:缓存大小=硬盘写入速度 ×(硬盘写入速度÷最大下载速度),且一般不超过内存大小的30%。因此,我的NAS的设置上限应该是: min(1.9GB/s[1945.6MB/s] × 1.9GB/s[1945.6MB/s] ÷ 500Mbps[62.5MB/s], 24G[24576MB]×0.3)=min(60565MB/s, 7372.8MB)=7372.8MB。但这两个值的单位是不一样,而且差距也过于明显;所以我怀疑这种说法是不准确的。缓存设置得越大,硬盘写入次数越少,可能对硬盘有保护作用;但太多数据堆积在内存里,如果遇到断电等情况,可能会影响数据安全。我目前设置了100M,算是一个比较保守的设置,更多地考虑了数据安全问题。

大家还要在OpenWrt系统中做好51413的端口映射和转发:

msedge_NqwAK5VLoW

msedge_zU2xmCNwQa

在默认的docker隔离网络中,51413端口的连接始终有问题。使用了Macvlan后,我的transmission终于可以使用51413端口了 (ฅ´ω`ฅ) 开放51413端口可以更好地实现p2p连接(不依赖tracker服务器),从而提升上传/下载速度;让其它用户更稳定地连接到transmission:

msedge_HuAQCUpEw4

根据我的经验,下载速度提升是挺明显的(不太确定是不是使用了OpenWrt);上传速度的变化似乎不大,可能是因为刷流状态下大家都在抢上传,源种上传流量受限,故transmission软件设置对上传速度的强化作用比较小。

下载目录

此隐藏内容仅限VIP查看。包年VIP仅10元,建议升级。VIP可享有哪些特权

OpenClash设置

请按教程《NAS系列 基于Clash内核的策略分流方案》、《NAS系列 基于多ADGuard Home实现DNS分流和个性化管理》和《NAS系列 OpenWrt的DNS设置》提前设置好OpenClash。

将transmission的局域网IP加入到不走代理的局域网设备IP以规避PT流量:

msedge_4GYMqCwSPs

如果你使用其它类似OpenClash的工具,也要记得有类似操作。

nas-tool

nas-tool是一个自动化管理工具,对于PT站点和媒体库管理至关重要。它的功能包括查询影视信息、订阅、刷流、硬链接文件至媒体库等。建议都安装并使用,特别是使用PT站的小伙伴!大家也可以结合这个视频进行nas-tool设置。

安装nas-tool

首先,创建transmission的根目录:

work=/nas2/share/docker/nas-tool
mkdir -p $work && cd $work

配置docker-compose.yml文件:

version: "3"
services:
  nas-tools:
    image: jxxghp/nas-tools:latest
    container_name: nas-tools
    ports:
      - 3000:3000        # 默认的webui控制端口
    volumes:
      - ./config:/config   # 冒号左边请修改为你想保存配置的路径
      - /nas2/share/docker/transmission:/nas/transmission   # 媒体目录,多个目录需要分别映射进来,需要满足配置文件说明中的要求
    environment: 
      - PUID=0    # 想切换为哪个用户来运行程序,该用户的uid
      - PGID=0    # 想切换为哪个用户来运行程序,该用户的gid
      - UMASK=000 # 掩码权限,默认000,可以考虑设置为022
      - NASTOOL_AUTO_UPDATE=false  # 如需在启动容器时自动升级程程序请设置为true
      - NASTOOL_CN_UPDATE=false # 如果开启了容器启动自动升级程序,并且网络不太友好时,可以设置为true,会使用国内源进行软件更新
     #- REPO_URL=https://ghproxy.com/https://github.com/jxxghp/nas-tools.git  # 当你访问github网络很差时,可以考虑解释本行注释
    restart: unless-stopped
    networks:
      macvlan_network:
        ipv4_address: 192.168.1.102 # 按需修改

networks:
  macvlan_network:
    name: PTnetwork # 之前搞好的虚拟网桥

在这里我将transmission的目录/nas2/share/docker/transmission映射到容器里的/nas/transmission,这样nas-tool就和已经下载好的视频文件联系起来了。你也可以映射更多包含视频的目录。

最后,直接上线即可:

docker-compose up -d

通过http://192.168.1.102:3000登陆后台。请注意,nas-tool的更新是很频繁的,实际使用界面可能与本教程有较大差别;但基本选项应该相差不远。

另外,nas-tool需要先设置好基础选项,然后其它管理/服务都会引用这些设置:

msedge_Rz1rbdYfvr

设置

没提到的项目一般是默认,或者不需要特别关注。

基础设置

系统中可以设置一下代理(比如OpenWrt的Openclash),这样在刮削的时候速度会快一些:

msedge_zxaNfXBUEq

这里建议申请一个TMDB帐户(www.themoviedb.org),将token填在下面:

msedge_6bBUf526a9

TMDB Token的位置在这:

msedge_PFrfdKovID

其它项目都是默认值:

msedge_C5CpO4lgUW

媒体库/目录同步

我一般是添加transmission里的接收硬链接的目录(本教程里是MovieTV文件夹):

msedge_s8G8C8hIor

nas-tool为我们提供了自动硬链接功能,主要在目录同步里设置:

msedge_mrYYFfquR9

只要新增同步目录,按下面的规则添加即可:

msedge_5GwzhGqWtN

消息通知

这不是一个必需设置。我目前只添加了telegram的消息通知:

msedge_iGLQPEzqnq

大家可以参考教程《【小白向】为NasTool添加telegram bot机器人 – invites.fun》,我就不再重复了。基本原理就是利用Telegram中的BotFatherGetIDs Bot。最终效果就是nas-tool有推送内容时发送消息:

HLv5h0dqh9

过滤规则

这里一般不用特别设置。不过,从基础设置就可以看出nas-tool是十分强大的,它甚至可以根据下载种子对应视频的分辨率/编码类型等信息进行更精细的订阅:

msedge_kJhMyRL56R

索引器

旧版本里有好多索引器的。结合Jackett和flaresolverr甚至可以搜索很多BT站点的资源。不知道为什么在新版本里只保留了内建索引器。不过我平时也很少找BT资源,对我影响不大 (ฅ´ω`ฅ)

msedge_OAM6rttIXB

这里要设置3个地方。

  • 下载目录设置:在右上角打开。下载保存目录和访问目录均设置PTxx类(transmission下载保存目录)即可:

msedge_gKwpdHfrxM

第一栏提供了全部电影电视剧动漫等选项。nas-tool应该是根据索引器和TMDB的API通过查询影视名称确定了相关信息,从而自动判断影视属于哪种类型。

  • 下载器:在界面中间打开。包括访问transmission的相关信息,比如地址、端口、用户名和密码:

FQrn2lzt7G

  • 下载设置:右上角打开。设置多种参数以控制transmission的行为。不过我一般都是用默认的预设

msedge_bspxHvOU1n

媒体库

我只设置了Jellyfin:

msedge_3HYaoP5J1a

在Jellyfin的控制台——高级——API密钥中添加一条记录,然后复制到nas-tool即可:

msedge_woMrYcEWxV

站点管理

这里指的是PT站点。这也是为什么PT用户应该使用nas-tool——新用户往往有一定的任务,这时使用nas-tool的刷流任务可以自动刷free种子(下载不记流量上传记1x流量)。馒头站是我新近添加的,直接使用nas-tool不到1周就完成新手村任务了 (ฅ´ω`ฅ)

站点维护

我目前添加了2个站点:

msedge_nIQLg2UCDy

每个站点的信息大致如下:

msedge_yPpFfUFtQv

COOKIE是nas-tool用于登陆网站的工具,我们平时浏览网站时不用经常输入密码也是依赖COOKIE信息。我们直接打开某个PT网站的主页,按F5刷新,在开发者窗口中获得cookie信息(也可以在Application里获得,大家可以试试看):

msedge_lOo2IaRLyH

RSS订阅地址获取方式如下,估计不同PT站的方法是类似的(因为它们一般都使用同样的php框架来建站):

msedge_7dFoz7VxXX

完成信息填写后,记得在右上解进行站点测试

msedge_KSsneXSsX1

数据统计

看PT战绩用的:

msedge_OtBBb6Wmbd

目前只是个小菜鸡 (ฅ´ω`ฅ)

刷流任务

这个对于PT新手村的小伙伴是至关重要的,这是保证按期通过考核的利器:

msedge_lPR9u6LQNs

此隐藏内容仅限VIP查看。包年VIP仅10元,建议升级。VIP可享有哪些特权

订阅管理

你可以添加某个PT站尚未存在的资源:

msedge_gGMx5uzUpe

如果PT站更新了该影视,它会自动下载。

另外,在自定义订阅中可以根据特定规则订阅RSS:

msedge_9eg5CbmSiC

不过,总体上我比较少使用这个功能;我觉得也不太实用。

下载管理

这里的功能很简单,自己试用一下就会了:

msedge_pOFc4hfo3p

媒体整理

这个自己摸索一下吧,懒得写了。平时也很少用 (ฅ´ω`ฅ)

IYUU Plus

官方博客: 大卫Blog – www.iyuu.cn

对我而言,IYUU Plus主要作用是自动化辅种,即将已经下载完成的种子文件重新做种并上传到其它PT站。如果你使用多个PT站,肯定是有自动辅种需要的,这样可以最大化地利用已完成下载的种子。

此外,某些PT站会对使用IYUU Plus的用户有额外的魔法值奖励:

msedge_xvln5ky7d3

因此,建议玩PT的用户要安排上IYUU Plus。大家可以重点参考这个CSDN系列教程:原理篇操作篇,写得挺不错的。另外,由于我只用transmission,并没有转种至qBitorrent的需求,所以这里并不会介绍这方面的内容。

安装

创建IYUU目录。我将它放到transmission里面:

mkdir -p /nas2/share/docker/transmission/IYUU/db

运行命令:

docker run -d \
    --name IYUUPlus \
    --restart=always \
    --network=PTnetwork \
    --ip=192.168.1.101 \
    # 这是IYUU数据库的位置
    -v /nas2/share/docker/transmission/IYUU/db:/IYUU/db \
    # 这是transmission的种子位置,其相对位置一般是固定的
    -v /nas2/share/docker/transmission/config/torrents:/torrents \
    # -p 8787:8787 \
    iyuucn/iyuuplus

请注意,要将/nas2/share/docker目录替换为自己的目录。

使用

IYUUPlus的帐号登陆比较特别,它需要去官网https://iyuu.cn与微信号绑定获得token。按《操作篇》的提示一步步完成即可。

我们直接登陆http://192.168.1.101:8787即可,界面大致如下:

msedge_5Eb37iDcE5

先在站点设置里添加自己的PT站点。目前IYUU支持的站点挺多的:

msedge_1GwY1d4ocM

下载器设置填写transmission或你所使用的下载器的相关信息(主要是帐号和路径)即可:

msedge_dXnQTxXeIt

通知设置里添加token即可:

msedge_e95MOoshZu

计划任务我目前只添加了自动辅种任务(这里添加1个就行):

msedge_FPGltCbnYj

一次完整的日志和通知大致如下,还是挺直观的:

msedge_VO1G68qo1V

小结

尽管LXC和影视系统的配置涉及的内容还挺多的,但很多内容很容易搜索到教程。这里只是作一个指导作用。大家在配置这方面有什么困难,可以评论区留言交流 (ฅ´ω`ฅ)

扩展阅读

---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍

感谢ZGOCLOUD友情赞助 (ฅ´ω`ฅ) 本博客基于m2w创作。版权声明:除特殊说明,博客文章均为Bensz原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。VIP内容严禁转载!由于可能会成为AI模型(如chatGPT)的训练样本,本博客禁止将AI自动生成内容作为文章上传(特别声明时除外)。如有需要,请至学习地图系统学习本博客的教程。加Telegram群可获得更多帮助喔! | 博客订阅:RSS | 广告招租请留言 | 博客VPS | 致谢渺软公益CDN |
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇