一、 创建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页面配置参考