PVE7.1使用lxc-ubuntu20.4安装Jellyfin及开启硬件解码

一、 创建lxc容器

直接创建CT,模板里是空的,所以需要在pve——local(pve)——模板里,找到相关模板(如ubuntu20.04)并下载;
创建CT,去掉“无特权的容器”的勾;模板选择刚才下载好的模板;创建完成后选项里修改开机启动,
创建完成后选项里修改开机启动,在选项——功能里勾选嵌套,NFS,SMB/CIFS;
然后启动虚拟机,用户名root,密码为创建时设置的密码;

安装vim:

apt install vim

修改软件源:

编辑器打开 /etc/apt/sources.list 替换默认的 archive.ubuntu.com 为 mirrors.aliyun.com

修改时区,改为中国时间:

timedatectl set-timezone Asia/Shanghai

开启ssh密码登陆

vi /etc/ssh/sshd_config  #修改配置文件

将 #PermitRootLogin prohibit-password 改为 PermitRootLogin yes ,允许root登陆

将 #PasswordAuthentication yes 前面#号去掉,允许密码登陆

二、 Ubuntu安装Jellyfin过程

按照官网教程:

1、如果你还没有安装 APT 的 HTTPS 传输协议:

apt install apt-transport-https

2、启用 Universe 存储库以获取所有 FFMpeg 依赖项:

add-apt-repository universe

3、如果上面的命令失败,您将需要安装以下软件包 software-properties-common。这可以通过以下命令来实现

apt-get install software-properties-common

4、导入 GPG 签名密钥(由 Jellyfin 团队签名) :

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

5、在/etc/apt/sources.list.d/jellyfin.list 中添加一个存储库配置:

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

6、更新 APT 存储库:

apt update

7、如果报错,提示存储库没有发布文件
E: The repository ‘https://repo.jellyfin.org/ubuntu focal Release’ does not have a Release file.
则需要尝试更新证书存储(参考:https://github.com/jellyfin/jellyfin/issues/6686)

apt install ca-certificates

更新证书存储后重新更新APT存储库

8、安装 Jellyfin:

apt install jellyfin

9、使用您选择的工具管理 Jellyfin 系统服务:

service jellyfin status
systemctl restart jellyfin
/etc/init.d/jellyfin stop
systemctl start jellyfin
systemctl stop jellyfin
systemctl enable jellyfin

10、访问Jellyfin Web界面。
http://主机IP:8096

三 -1、Jellyfin添加媒体库(windows共享磁盘)

较好的方法是把局域网共享挂载到Ubuntu

1、在mnt文件夹下新建文件夹

cd /mnt
mkdir r
mkdir s

2、安装CIFS服务

apt install cifs-utils

3、挂载磁盘或共享文件夹(重启后需要重新挂载)

mount //192.168.0.199/r /mnt/r -o username=xxx,password=111,dir_mode=0777,file_mode=0777
mount //192.168.0.199/s /mnt/s -o username=xxx,password=111,dir_mode=0777,file_mode=0777

4、取消挂载

umount /mnt

5、开机自动挂载

编辑挂载文档

vim /etc/fstab

按i进入编辑模式添加:

//192.168.0.199/r /mnt/r cifs defaults,auto,username=xxx,password=1111,rw,uid=0,gid=0,dir_mode=0777,file_mode=0777     0       0

输入:wq保存,重启

四、pve物理机下安装显卡驱动

1、登录pve,查询设备编号

root@pve:~# ls -l /dev/dri
drwxr-xr-x 2 root root         80 Dec 17 00:04 by-path
crw-rw---- 1 root video  226,   0 Dec 17 00:04 card0
crw-rw---- 1 root render 226, 128 Dec 17 00:04 renderD128

2、pve主机安装intel核显驱动并映射给lxc容器

2.1 8代及以上cpu安装方法

apt install intel-media-va-driver-non-free
apt install vainfo

安装完成后,查询显卡信息,显示如下,说明驱动安装完成。

可看到,以上加载的是iHD driver,不是i965。这里不安装i965驱动,因为i965适合以前老版本的cpu,8代cpu最好安装以下驱动。

注意:应该先安装显卡驱动intel-media-va-driver-non-free,再安装vainfo软件。

2.2 老CPU安装方法

直接安装vainfo会自动把i965和intel-media-driver驱动一起装上

执行vainfo,如果显示出支持的各种编解码信息(Supported profile and entrypoints)说明驱动安装成功。输出以下内容:

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
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileH264MultiviewHigh : VAEntrypointVLD
VAProfileH264StereoHigh : VAEntrypointVLD
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointVLD

如果执行报错或者没有正确试别解码配置,检查是否阻止了模块加载。(比如配置显卡直通的时候会配置驱动黑名单,让宿主机不要加载显卡的驱动,让位给vfio。

3. 将设备映射给LXC容器

修改容器配置文件 /etc/pve/lxc/ 虚拟机ID.conf

vim /etc/pve/lxc/106.conf

在配置文件末尾加入下面几行

lxc.cgroup2.devices.allow: c 226:0 rwm                  //映射的设备额
lxc.cgroup2.devices.allow: c 226:128 rwm     
lxc.autodev: 1                                         //初始化设备
lxc.hook.autodev: /var/lib/lxc/106/mount_hook.sh      //运行的脚本,需要编写

(注意:网上好多教程这里的配置都是lxc.cgroup.devices.allow,但在较新版本里,参数已改成了cgroup2)

其中226:0和226:128是上一步ls -l /dev/dri 获得的`设备号`。

编写初始化脚本/var/lib/lxc/106/mount_hook.sh

vim /var/lib/lxc/106/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

最后设置文件权限:

chmod 755 /var/lib/lxc/106/mount_hook.sh

启动CT

五、lxc主机下开启硬件解码

1. ssh登陆lxc主机

查看是否映射成功

与(四)物理机相同方法安装显卡驱动&vainfo

查询是否显示显卡信息。显示如下,说明容器可以识别核显设备了。

(注意:因为系统版本不一样,所以,显示的vaapi版本和驱动版本和pve主机也不一样.)

2. 配置jellyfin硬件加速

登录jellyfin——控制台——播放,启动硬件加速

如果在看电影过程中发现黑屏或者花屏,可以适当关闭一部分编码的硬件编码

播放视频,在(容器)Ubuntu系统使用intel_gpu_top工具监测,核显是否工作。

apt install intel-gpu-tools    #需安装工具

不播放视频时,GPU无负载

播放需要转码的视频时,GPU处于负载状态

Jellyfin播放数据,可以看到转码信息。说明,硬件加速生效!

jellyfin android 客户端

https://repo.jellyfin.org/releases/client/android/

jellyfin androidTV 客户端

https://repo.jellyfin.org/releases/client/androidtv/

三-2、 挂载nas的nfs远程目录做媒体库

lxc容器中

1. 安装nfs-common工具

apt install nfs-common

2.创建本地目录并将nfs远程目录挂载到本地目录

mkdir /mnt/movie
mount -t nfs 192.168.66.6:/volume2/video /mnt/movie/

3.查看挂载

df -h

4.设置开机自动挂载nfs远程目录

vim /etc/fstab  #修改fstab文件

添加以下内容

192.168.66.6:/volume2/video /mnt/movie nfs defaults 0 0

5.重启测试

或先卸载已挂载的目录

umount /mnt/movie

再执行命令

mount -a

也就是自动挂载所有目录,自然也包括刚刚写入到/etc/fstab中的nfs协议的目录

最后df -h一下,看内容出现就说明没问题

六、jellyfin页面配置参考

https://post.smzdm.com/p/a8x7kpm0/

https://zhuanlan.zhihu.com/p/384241222

发表评论