前缀、文档修改记录
2023-01-15 初始化编辑此文章 2024-01-05 更新需要走代理的域名规则,主要为了刮削 2024-03-21 更新扩展SATA的内容,更新检索视频的内容,更新显卡的内容,以便服务端解码转码。
段落1、需求描述
搭建Jellyfin,影视媒体平台,自己看美剧、泰剧、日剧、韩剧,未删减版本,不求人,1080P/4K资源,统统可以。
搭建的资源,在自己的家里的私网,不对外开放。家里如果有公网IP,或者走云服务器转发,也就可以在公网访问到自己的影视资源了。(不推荐搭建后,给公众开放,这个版权问题,大家稍微注意一下)
Jellyfin,是全平台支持的,苹果、安卓、计算机PC、电视,都是有客户端软件的。
效果图:
段落2、硬件配置
我这里选择的架构是硬件直接安装Linux,然后直接部署Jellyfin,我没有选用Docker架构方式,后续的硬件直通问题,后续想要加独立显卡,也简单。使用该方式,对于增加存储盘,也非常简单。对CPU的利用率也最大。
Jellyfin 影视平台 规格选型如下:
- 长城电源 300W * 1
- 机箱 多盘位机箱 * 1
- 主板 B75 含6个板载SATA口 * 1
- 处理器 i5 3470 * 1
- 内存 12GB
- 硬盘供电线 1分5 SATA电源线 * 2
- 硬盘SATA数据线 * 10
- 系统盘 SSD 240GB * 1 , Debian 11
- 缓存盘 SSD 1TB * 1
- 存储盘 东芝 4TB * 1 ,利旧
- 存储盘 西数 12TB 氮气盘 * 2
- 1050TI 显卡 * 1
- 公网 IP,带宽 Nginx + HTTPS/TLS * 1
- 软件,BT下载 Transmission * 1
- 软件,影视平台 Jellyfin * 1
- 软件,削刮器 TinyMediaManager * 1
段落3、硬件组装,基础Linux系统安装
这个没啥说的,就是电脑台式机的组装而已,板载6个SATA口,注意一下,一般SATA0编号的,是连接系统盘。其他的,就是连接缓存盘,存储盘。
组装台式机,需要一定的动手能力,各位看DIY 一条龙教程的,量力而行。
操作系统的安装,也比较简单,我这里,就安装最常规安装Debian 11操作系统。你们也可以选择自己喜欢的Linux系统发行版本。
硬盘12TB格式化,选用GPT分区
对于磁盘的挂载,参考我 Ubuntu/Debian 的Linux环境,格式化超过2TB的磁盘 2022-4-24 这个教程,使用parted对磁盘格式化,我这里都是单盘挂载,让容量最大化,不使用RAID,你们对于磁盘的格式化,是否组RAID的架构,酌情考虑。
截至2024-03-21,更新此页博客的时间,我这台单机跑的磁盘容量,已经50多个TB了,共计存放了1000+电影,1800+电视剧,2300+音乐,因为都是这些影视文件,不是重要数据,不做RAID,硬盘真坏掉,也就更换硬盘就是了,没啥遗憾的。
硬盘,在主板SATA口全部用完的情况下,我用的这个PCIx1的4口SATA扩展的,供电用大4Pin转15Pin路的供电。
段落4、安装部署 Jellyfin
参考 https://jellyfin.org/docs/general/installation 这个是Jellyfin官方的安装指导,不管是群晖、Windows/Linux 或者 Docker方式的安装,都建议先看一看官方的安装知道文档,这个比任何其他文档都要靠谱。
由于我安装的是Debian 11 操作系统,这里就可以到官方教程的Debian位置
Debian 11,在添加Jellyfin源的地方,有2个方式,如果用extrepo方式,就不必1到3步骤编号
添加源
root@server:~# apt update root@server:~# apt install extrepo root@server:~# extrepo enable jellyfin
或
# 1 root@server:~# apt update root@server:~# apt install curl gnupg # 2 root@server:~# mkdir /etc/apt/keyrings root@server:~# curl -fsSL https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release )/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg # 3 root@server:~# cat <<EOF | tee /etc/apt/sources.list.d/jellyfin.sources Types: deb URIs: https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) Suites: $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) Components: main Architectures: $( dpkg --print-architecture ) Signed-By: /etc/apt/keyrings/jellyfin.gpg EOF
添加源后,就可以更新,安装Jellyfin
# 4 root@server:~# apt update root@server:~# apt install jellyfin # 5 重启Jellyfin root@server:~# systemctl restart jellyfin # 6 关闭Jellyfin root@server:~# systemctl stop jellyfin # 7 启动Jellyfin root@server:~# systemctl start jellyfin # 8 开机启动Jellyfin root@server:~# systemctl enable jellyfin
安装后,启动Jellyfin,能在Linux上,看到对应业务端口 8096的监听
然后,就可以通过 http://IP地址:8096/ 访问jellyfin了。
段落5、初始化Jellyfin
登录Jellyfin,设置语言为 汉语(简体),设置登录Jellyfin的用户名,密码
首选无数据语言的语言选“Chinese”,国家/地区选择“People’s Republic of China”
设置远程访问两个都打勾
登录进入页面后,点击右上方的小头像,进入字幕,字幕语言偏好:Chinese简体中文,字幕模式:默认,烧录字幕:全部。
段落6、添加影视媒体资源
点击左上角三横线菜单,选择控制台,选择媒体库,选择加号+添加影视媒体。
我这里,就添加一个电视剧文件夹,一个电影文件夹。
其中,如下图的,如果是电影,文件夹,就选中对应磁盘上的电影目录,可以选中多个磁盘上,对应的电影目录。简而言之,就是,一个电影分类,可以从多个文件夹里提取资源清单。
还有下面的勾选框,基本除了最后2个,都勾上。
段落7、关于刮削
刮削,其实可以自动的,主要看你电影名字的命名,电视剧文件夹的命名。还有,刮削的几个源网站,基本都是被BLOCK的,所以,你需要一个Nice的网络环境,才可以正常刮削影视封面,专辑信息。
如下的域名,最好都把它们加入到软路由的代理里面。如果没有条件的,就增加到jellyfin的Linux主机hosts文件里。
repo.jellyfin.org jellyfin.org imdb.com media-amazon.com www.imdb.com themoviedb.org zap2it.com bootstrapcdn.com tmsimg.com api.themoviedb.org image.tmdb.org tmdb.org trakt.tv
文件命名方式如下,就可以自动刮削了
电影名称-年份.mp4
一般,遇到错误的刮削,很常见,可以在视频/电视剧,选择”识别”,输入该电影的名称或imdb里面的编号,进行人工查找,更新削刮信息。
如果遇到重名的,封面不同的,可以根据IMDB的ID进行检索,比如下图这部韩剧,用tt29311421这个参数,可以找到唯一的IMDB信息
在XX电视剧/识别/IMDB ID这个参数位置,检索tt29311421,即可
如果影视,特别一些短剧,没有被IMDB的收录,或其他错误,就可以自己上传封面,修改年份,修改完成后,记得锁定资源的刮削信息,勾选”锁定此项目防止改动”。
段落8、关于公网映射
配置Nginx的反向代理,需要修改配置DNS指向,配置域名证书,在路由器上配置端口转发到内部的IP端口即可。
访问 https://域名:端口/
server { listen 443 ssl; server_name 你的域名; client_max_body_size 100M; ssl_certificate /root/certs/你的域名/fullchain.cer; ssl_certificate_key /root/certs/你的域名/你的域名.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8096; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Forwarded-Host $http_host; # Disable buffering when the nginx proxy gets very resource heavy upon streaming proxy_buffering off; } location = /web/ { proxy_pass http://127.0.0.1:8096/web/index.html; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Forwarded-Host $http_host; } location /socket { proxy_pass http://127.0.0.1:8096; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Forwarded-Host $http_host; } }
段落9、增加显卡,满足服务端解码的需求
当今,BT/PT影视站点,已经越来越多的4K视频资源了,此时台式机里面这颗桌面级旧CPU(Intel Core i5-3470 CPU @ 3.20GHz,各位垃圾佬勿嘲笑),已经无法满足解码4K视频的能力,CPU软解码会让CPU跑满负载,着实难为它了,后来思来想去,在满足省电费,低价,地板级满足解码4K,给设备补了一张显卡(GeForce GTX 1050 Ti @ 75W)。
买这种旧卡,没什么说的,直接插主板的PCI插槽即可。
// 增加apt源 // Debian Sid /etc/apt/sources.list中增加如下的一行内容 # deb http://deb.debian.org/debian/ sid main contrib non-free non-free-firmware // 安装驱动(一般需要重启) # apt update # apt install nvidia-driver firmware-misc-nonfree // 测试GPU是否正常工作,如果如下图显示的,则表示正常工作 # nvidia-smi
NVIDIA-SMI 525.147.05 Driver Version: 525.147.05 CUDA Version: 12.0
同步需要做的是,在Jellyfin的WEB页面,控制台/播放/转码,选择”Nvidia NVENC”
同时,要注意,”FFmpeg 路径” 这个参数,选择的ffmpeg,必须为支持英伟达CUDA的版本
使用命令ffmpeg无参数运行,可以明显看到有CUDA参数,如图” –enable-cuda –enable-cuda-llvm –enable-cuvid –enable-nvdec –enable-nvenc,则表示,你选择的这个ffmpeg是正确的,这个务必要注意
如果ffmpeg版本正确,在需要转码的设备播放视频时候,通过nvidia-smi命令,可以看到GPU解码并占了解码带宽,有对应的程序。
如下图,可看到470MB/4096MB,被占了大概500MB的显存,下方是ffmpeg进程号240848。
如果ffmpeg版本不对,可以参考jellyfin官方,对于英伟达显卡支持的页面说明
https://jellyfin.org/docs/general/administration/hardware-acceleration/nvidia
安装它官方支持的ffmpeg大致步骤如下
9.1 确保官方的源已经添加到sources.list
// 增加apt源 // Debian Sid /etc/apt/sources.list中增加如下的一行内容 # deb http://deb.debian.org/debian/ sid main contrib non-free non-free-firmware
9.2 安装jellyfin-ffmpeg5这个包
# apt update # apt install -y jellyfin-ffmpeg5
9.3 安装对应系统版本的驱动
// Debian # apt update # apt install -y libnvcuvid1 libnvidia-encode1 // Ubuntu # apt update # apt install -y libnvidia-decode libnvidia-encode
操作完,一般显卡正常工作的,就可以支持显卡的硬件加速&服务端解码视频流了。
该章节补充于2024-3-21 21:00PM
附录1、视频讲解
1.1、搭建Jellyfin
1.2、修复字幕的框框问题
附录2、
博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者
对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费
Twitter: Dasmz
Youtube: @DasmzStudio