当前位置:首页-趣教程Tutorial-正文

Jellyfin 免费的媒体中心

想要拥有一个完全免费,不花一分钱的家庭媒体中心怎么实现?我们要排除一切收费软件,利用老电脑搭建一个家庭局域网内部的媒体中心,实际上可选择的余地还是很大的。在诸多实现的方案中,最灵活、功能也最强大的,无疑是PVE(Proxmox Virtual Environment)虚拟机+Jellyfin的组合最为出色,今天笔者就和大家分享一番搭建家庭媒体中心的全过程。

如果简单一点去阐述这个系统化组合,PVE作为虚拟机底层系统,再用其支撑Jellyfin媒体中心的功能,这样的配置无疑更加灵活方便,而且在使用的时候,其稳定性和配置灵活性也更加简单。使用PVE做底层系统的时候,以往我们都是在此之上安装虚拟机,固然可以将电脑的硬件资源和虚拟环境分隔开,但是对于传统虚拟机来说,还是会占用被指定分配的硬件。而本次的方法,则是使用更为轻便的Docker来实现。所谓的Docker,其实是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的电脑上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。而且,它对硬件资源的使用方式是“随用随取”,不像虚拟机一样需要提前分配好硬件资源,无疑这样的灵活性大大增加。

Jellyfin 免费的媒体中心 - 第1张

什么是PVE虚拟机?

PVE的全称是Proxmox Virtual Environment(官方网站:https://www.proxmox.com/),或称之为Proxmox VE,是一款开源的虚拟化方案。其软件和社区支持都是免费的(基于Debian Linux和KVM的虚拟化平台),企业用户则可以通过订阅制获得付费商业支持。PVE不仅仅是免费开源这么简单(当然非常重要),而且PVE具备极低的硬件资源要求、配置极为简单,而且兼容性非常出色。

Jellyfin 免费的媒体中心 - 第2张

硬件配置要求不高

PVE的一大优势就是对电脑的系统性能要求不高(资源占用低),但是需要一定的Linux基础。但是它有一个硬件需求的必备项——处理器要求支持虚拟化。当然,这个要求对时下的电脑来说一点都不高,目前绝大部分处理器都能够支持虚拟化技术,无论是Intel还是AMD的都是如此。当然,处理器的性能自然是越高越好,这对任何应用需求都是如此。在我们的PVE+Jellyfin组合方案中,一个10年以内的电脑只要不是过于入门级别的产品,都完全可以胜任。

要想知道自己的电脑处理器是否支持虚拟化,下载Securable这个小软件就能知道了。当你下载Securable(下载地址:https://www.grc.com/securable.htm)后运行唯一的执行文件,在最后一项“Hardware Virtualization”显示为“Yes”,则表示处理器支持虚拟化功能。

Jellyfin 免费的媒体中心 - 第3张

点击“Click for more”可以看到具体的虚拟化技术信息。就实际PVE+Jellyfin的性能需求来看,笔者建议最好处理器个核心数量不少于2个——这意味着即便是赛扬处理器也可以胜任,当然,如果可能自然是核心、线程数量越多越好。

Jellyfin 免费的媒体中心 - 第4张

当然了,如果处理器不支持,则Securable中“Hardware Virtualization”项会显示“No”。

Jellyfin 免费的媒体中心 - 第5张

确定处理器支持后,还需要重启进入电脑的BIOS(F1或者Del),找到BIOS中相关的CPU虚拟化功能界面,将其设置为“Enabled”启用该功能。

Jellyfin 免费的媒体中心 - 第6张

另外要特别提示一点,我们以PVE+Jellyfin的组合方式实现媒体中心,最重要的一点就是要具备视频编解码能力,这也意味着你必须使用一个带有核显的处理器。而且如果可能的话,最少处理器不要低于Intel第六代酷睿处理器。这样可以提供对4K HEVC视频内容的硬件编解码。

除了这些,在内存部分笔者推荐至少要拥有8GB的总容量——PVE自身的内存占用一般在2GB~4GB内,再分配给Jellyfin大约4GB内存刚刚好。当然,如果你对虚拟机还有其他需求,那么内存最好达到16GB,好在现在DDR3、DDR4内存的价格都很便宜,即便扩展起来成本费用也不会很贵。

Jellyfin 免费的媒体中心 - 第7张

最后在存储部分,笔者强烈建议使用一块固态硬盘,哪怕是SATA接口的固态硬盘。除了传输速度优势,最重要的地方在于响应时间、多任务读写,固态硬盘都有着传统机械硬盘不可比拟的技术优势,即便是SATA规格的固态硬盘也不例外。

Jellyfin 免费的媒体中心 - 第8张

安装PVE 从U盘开始

首先要下载得到PVE的ISO安装文件(下载地址:https://www.proxmox.com/en/downloads),此外还需要Rufus工具用于制做引导安装U盘(下载地址:https://rufus.ie/)。U盘部分准备一个8GB容量的即可。准备就绪之后,将U盘插入到电脑背部的I/O部分的USB接口,注意最好不要插到电脑的前置USB接口,部分机箱的USB插针扩展接口会有供电问题。

Jellyfin 免费的媒体中心 - 第9张

解压缩Rufus后双击执行文件运行,点击引导类型处的“选择”项,加载下载PVE ISO安装文件的路径,选中ISO文件,然后按照默认设置(可以选择纯UEFI启动,前提要确保主板支持并正确在BIOS中设置为UEFI启动),再点击“开始”运行。

Jellyfin 免费的媒体中心 - 第10张

注意,在这里Rufus会提示选择镜像使用的模式,这和普通的Linux、Windows安装启动盘略有区别,在这里要选择“以DD镜像模式写入”而不是“以ISO镜像模式写入(推荐)”,如果选择了后者U盘引导后将无法正确引导安装PVE,这是和普通启动盘制作时最大的区别。

Jellyfin 免费的媒体中心 - 第11张

接下来的分别提示两次警告,内容分别是格式化、多分区提示,依次点击默认的“确定”即可,不需要更改设置内容。

Jellyfin 免费的媒体中心 - 第12张
Jellyfin 免费的媒体中心 - 第13张

U盘写入完成从电脑上拔处,将其转移到即将安装PVE的电脑上插入,并且开机使用该U盘引导(不同电脑的引导菜单选项不同,强烈建议进入BIOS后设置启动顺序,将U盘设置为优先引导),在PVE的引导选单上选择第一项,即“Install Proxmox VE”。

Jellyfin 免费的媒体中心 - 第14张

经过PVE引导自检,系统来到欢迎界面,读取协议,点击右下的“I agree”继续。

Jellyfin 免费的媒体中心 - 第15张

在接下来的界面中,主要是设置安装的硬盘位置,默认提供一个硬盘位置,如果是多个硬盘,点击该处选择需要安装的硬盘即可。如果要在该硬盘上分区安装,在选择正确的硬盘设备后,点击后面的“Options”设置即可,这里笔者以整盘默认分区方式安装,点击“Next”继续。

Jellyfin 免费的媒体中心 - 第16张

对于需要硬盘分区的用户,在“Options”选项设置中点击进入磁盘分区页面,找到上方的“Filesystem”设置磁盘分区格式,推荐使用默认的EXT4分区方式(Linux下的一种分区格式,Ext4文件系统有更好的设计,更好的性能以及稳定性)。hdsize处是设置总存储空间容量的地方。

不同于Windows使用NTFS分区格式,Linux还需要使用到交换分区,在下方的swapsize处设置交换分区容量,注意,交换分区的容量大小不是随意设置,一般情况下只要将其设置为与本机内存容量相当即可,例如电脑拥有8GB内存,那么这里也设置成8GB交换分区容量就够了。

除此之外,maxroot项是用于保存PVE操作系统镜像的独立空间,不能分配给虚拟机硬盘使用,酌情设置就可以(例如预留20GB的安装镜像容量值,可以充分满足多个系统的安装镜像保存);接下来是minfree,这个minfree是用于保存虚拟机快照的,推荐设置为内存容量的两倍大小为宜,例如8GB内存的电脑设置为16GB,16GB内存的电脑设置为32GB,当然这还要根据自己硬盘容量大小来权衡。最后就是maxvz,这个是用来数据保存的空间,可以设置更大一些。但是注意,这一切容量之和不能超过hdsize的设置容量。

Jellyfin 免费的媒体中心 - 第17张

设置完点击“Next”到下一步设置服务器的国家、时区及键盘布局,国家处填写“China”,其他选项保持默认设置即可。

Jellyfin 免费的媒体中心 - 第18张

之后就是系统的管理员账号和密码以及邮箱,注意这是PVE的最高权限Root用户,设置密码最好是复杂的字符+字母+数字+大小写乱序生成,以确保系统安全性。

Jellyfin 免费的媒体中心 - 第19张

继续安装设置,管理网络界面,注意第一个“Management Interface”是管理口设置,所谓管理口是无论电脑中含有几个有线网络接口,只有一个具备管理能力,即可以连接到PVE设置后台进行设置调整,如果是多网卡的电脑,务必确认使用的是哪一个网卡;“Hostname(FQDN)”则是主机名称,根据自己喜好设置即可;其他分别是IP地址、子网掩码、网关以及DNS服务器地址,根据实际情况填写即可。

Jellyfin 免费的媒体中心 - 第20张

一切设置完毕PVE就开始安装了,根据电脑的性能安装时间一般在5分钟至10分钟左右,安装完毕重启电脑即可。重启后注意要选择硬盘启动,PVE的引导菜单下,默认项引导即可(无人工干预自动进入)。

Jellyfin 免费的媒体中心 - 第21张

引导完毕,界面将变成纯字符界面,提示也极为简单——只有IP地址和登录输入,这时候我们就可以换到别的电脑来进行操作了。

Jellyfin 免费的媒体中心 - 第22张

在其他电脑上输入服务器IP地址,注意格式必须要完整,包括https://以及端口号8006,例如https://192.168.1.2:8006,否则是无法正确访问的。在登录界面,首先可以将语言设置为“Chinese(Simplified)”即中文。

Jellyfin 免费的媒体中心 - 第23张

然后输入用户名密码,即可登录到PVE的主界面。

Jellyfin 免费的媒体中心 - 第24张

登录时PVE会提示“没有有效订阅”,点击确定即可忽略,这个订阅是针对专业级、企业级用户的,普通用户无需理会。

Jellyfin 免费的媒体中心 - 第25张

登录成功后,我们就可以看到PVE的基础操作界面了。

Jellyfin 免费的媒体中心 - 第26张

安装Jellyfin

此时,我们将要开始创建Jellyfin。在PVE主界面点击右上方的创建CT,注意不是创建虚拟机,我们要创建的是LXC容器。在这里,我们要特别留意,取消下方勾选的“无特权的容器”,这样我们才能让Jellyfin的Docker具备访问硬件的权限。此外,在CT ID项中要记住当前的ID数字,如本例中的103,后面会用到。

Jellyfin 免费的媒体中心 - 第27张

在下一步的模板中,存储保持默认的Local即可,在模板处则点击右侧下拉箭头找到ubuntu-18.04-standard_18.04.1。

Jellyfin 免费的媒体中心 - 第28张

接下来的CPU部分,笔者推荐设置两个核心供Jellyfin使用,内存部分最少设置不小于2GB,推荐4GB~8GB,这个也要根据当前安装PVE电脑的内存而定。

Jellyfin 免费的媒体中心 - 第29张

网络部分的设置,设置好对应的局域网内IP地址(笔者建议使用静态IP,不要使用DHCP),但是特别留意在IP地址后要加上netmask,即/24。

Jellyfin 免费的媒体中心 - 第30张

配置完成后启动该容器,然后在容器中,我们将安装Jellyfin——首先分别输入命令apt update、apt upgrade,这两个命令是更新源,注意每输入一条指令都要回车执行一下才可以。接下来将分别输入每一条执行,注意也是每输入一条命令就要回车执行一下,并且确保执行完本条命令后再输入下一条:

sudo apt install apt-transport-https software-properties-common

sudo add-apt-repository universe

wget -O - https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | sudo apt-key add -

echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/ubuntu $( lsb_release -c -s ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list

sudo apt update

sudo apt install jellyfin

逐条执行命令后,jellyfin的Docker应该就可以正常运行了,我们可以通过输入命令service jellyfin status来查看执行状态。如果看到绿色的“active(running)”字样,说明jellyfin已经在运行了。

Jellyfin 免费的媒体中心 - 第31张

接下来回到PVE主界面打开Shell功能,依次输入三个命令,apt update、apt install i965-va-driver vainfo、vainfo,即更新源、安装显卡驱动和检测、执行检测。在依次执行完前两条命令后,最后执行vainfo,如果出现以下信息,就意味着正确安装驱动,并能显示当前显卡支持的编解码。如果执行vainfo命令报错则意味着安装错误:

root@pve:~# vainfo

error: can't connect to X server!

libva info: VA-API version 1.4.0

libva info: va_getDriverName() returns 0

libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so

libva info: Found init function \_\_vaDriverInit_1_4

libva info: va_openDriver() returns 0

vainfo: VA-API version: 1.4 (libva 2.4.0)

vainfo: Driver version: Intel i965 driver for Intel(R) Coffee Lake - 2.3.0

vainfo: Supported profile and entrypoints

……

为了让Jellyfin能够调用显卡的硬件编码功能,我们还需要进一步执行操作,此时在Shell窗口内输入ls -l /etc/dri,列出当前显卡信息,如下:

root@pve:~# ls -l /dev/dri/

total 0

drwxr-xr-x 2 root root 80 Oct 13 12:39 by-path

crw-rw---- 1 root video 226, 0 Oct 13 12:39 card0

crw-rw---- 1 root render 226, 128 Oct 13 12:39 renderD128

其中,在第二行信息中,card0的设备号可以看到是“226,0”,然后再看第三行renderD128,设备号为“226,128”记住这两条内容。这是笔者的处理器核显设备号,具体到自己使用的电脑核显可能会出现不一样,但是方法一致。

在PVE的目录/etc/pve/lxc中有容器配置文件存放地,找到自己对应容器ID的配置文件,如103.conf,此时使用nano命令编辑这个103.conf文件,此时在Shell中输入命令“nano /etc/pve/lxc/103.conf”。打开103.conf后一直向下拉倒末尾,添加如下命令:

lxc.cgroup.devices.allow: c 226:0 rwm

lxc.cgroup.devices.allow: c 226:128 rwm

lxc.cgroup.devices.allow: c 29:0 rwm

lxc.autodev: 1

lxc.hook.autodev: /var/lib/lxc/103/mount_hook.sh

注意,这里是添加命令,不是执行命令,依次填写即可。这里面的“226,0”、“226,128”就是之前记录的显卡设备号,103即本容器的ID,具体要根据自己电脑的实际情况调整。

接着继续使用nano命令创建一个名为mount_hook.sh的文件,即在Shell中输入命令“nano /var/lib/lxc/103/mount_hook.sh”回车执行。然后添加如下命令到mount_hook.sh中好让容器有访问显卡设备的权限:

mkdir -p ${LXC_ROOTFS_MOUNT}/dev/dri

mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/card0 c 226 0

mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/renderD128 c 226 128

mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/fb0 c 29 0

一切配置完毕,我们就可以使用IP地址+端口号8096来访问jellyfin进行设置了。特别注意的是,我们要启动之前配置的显卡硬解功能,依次进入控制台—播放,在硬件选项中选择VAAPI,然后勾选“启用硬件编码”,保存设置即可。

Jellyfin 免费的媒体中心 - 第32张

简言之,Jellyfin具备海报墙功能,而且可以分类保存视频内容,并通过局域网推送播放——因为我们配置了硬件编解码功能,即便你的观看端设备不能支持部分编解码的视频文件,Jellyfin也能自动将其转码推送到终端设备上播放,非常人性化。当然,更多的功能有兴趣的朋友可以自己探索——这套媒体中心系统最重要的特性就是免费,而且易用性、功能性一点不输收费系统。

本文版权为智趣东西所有,未经授权禁止转载。

相关文章