PVE下LXC容器安装jellyfin实现核显硬解

AI摘要:在PVE下使用LXC容器安装jellyfin实现核显硬解,需创建LXC容器,修改配置以允许硬件解码,开启LXC嵌套,验证硬解支持,配置SSH远程登录,更换源以加快软件包下载,挂载NFS/SMB服务,安装Docker和jellyfin,并配置开机脚本确保正确启动。

Powered by AISummary.

一、创建lxc容器

用debian12的模板,创建lxc容器,具体配置如下:


注意:

需要硬件解码的话,无特权容器的勾要去掉,cup至少要给4个核心,内存至少2GB,磁盘至少100GB

二、修改lxc配置

创建完不要启动,需要编辑一下lxc容器配置:

  • 进入pve命令行(shell),输入ls -l /dev/dri

    如输出如下,说明核显已经存在。

  • 接下来修改lxc配置,nano /etc/pve/lxc/101.conf(101为容器编号)

将如下代码加入到配置文件后面:

lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
  • 如果是低功耗cup,还需要修改i915的配置

    具体方法如下:

    nano /etc/modprobe.d/i915.conf

    将如下代码复制粘贴:

    options i915 enable_guc=3

    三、开启lxc嵌套

  • 点击lxc容器
  • 点击“功能”, 勾选“嵌套”、“NFS”、“SMB/CIFS”三个选项

四、验证是否支持硬解

进入pve命令行(shell),输入:journalctl -b -o short-monotonic -k | egrep -i "i915|dmrldme|guc|huc"

看到类似如下输出,说明硬解已开启


再次到lxc容器中验证

登录lxc容器,安装vainfo,命令行输入:apt-get updateapt-get install vainfo

安装完,直接输入vainfo

如果你看到了类似 Intel iHD driver 的输出,表示硬件加速已经成功启用。

五、开启lxc远程root登录

  • 进入pve命令行(shell),输入nano /etc/ssh/sshd_config
  • 找到PermitRootLogin将后面的值改为yes
  • 找到#PasswordAuthentication yes,将前面的#去掉
  • 重启ssh服务service ssh restart
  • 进入lxc容器内,安装并开启ssh服务

注意,以下操作是在lxc容器内的

  • 1. 更新软件包列表

    apt update
    apt upgrade
  • 2. 安装 openssh-server

如果还没有安装SSH服务,可以通过以下命令安装 openssh-server:

apt install openssh-server
  • 3. 启动并配置SSH服务

安装完成后,SSH服务通常会自动启动。如果没有自动启动,手动启动它:

systemctl start ssh
  • 4. 检查SSH服务状态

你可以使用以下命令检查SSH服务是否正常运行:

systemctl status ssh

如果服务正在运行,你应该会看到状态为 active (running)。

  • 5. 设置开机自启

为了确保系统重启后SSH服务自动启动,可以运行以下命令:

systemctl enable ssh

修改ssh配置

  • 同理,编辑lxc容器的ssh配置文件,输入nano /etc/ssh/sshd_config
  • 找到PermitRootLogin将后面的值改为yes
  • 找到#PasswordAuthentication yes,将前面的#去掉。
  • 重启ssh服务service ssh restart
  • 这样就可以用第三方shell工具登录lxc容器了

    六、lxc容器(debian12)换源

    在Debian 12(Bookworm)上,你可以使用国内的镜像源来加快软件包的下载速度。以下是几个常用的国内镜像源以及如何配置它们的步骤。

以下操作在lxc容器内进行

  • 1.备份现有的源列表

在更改源之前,建议先备份当前的/etc/apt/sources.list文件:

cp /etc/apt/sources.list /etc/apt/sources.list.bak
  • 2.编辑/etc/apt/sources.list文件

使用你喜欢的文本编辑器来编辑/etc/apt/sources.list文件。例如:

nano /etc/apt/sources.list
  • 3.替换为国内镜像源

以下是一些推荐的Debian 12(Bookworm)国内镜像源,可以直接复制粘贴到/etc/apt/sources.list文件中:

  • 中科大源(USTC)

    deb http://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free
    deb-src http://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free
    
    deb http://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free
    deb-src http://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free
    
    deb http://mirrors.ustc.edu.cn/debian/ bookworm-backports main contrib non-free
    deb-src http://mirrors.ustc.edu.cn/debian/ bookworm-backports main contrib non-free
    
    deb http://mirrors.ustc.edu.cn/debian-security/ bookworm-security main contrib non-free
    deb-src http://mirrors.ustc.edu.cn/debian-security/ bookworm-security main contrib non-free
  • 清华大学源(TUNA)

    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free
    deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free
    
    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free
    deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free
    
    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free
    deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free
    
    deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free
    deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free
  • 阿里云源(Aliyun)

    deb http://mirrors.aliyun.com/debian/ bookworm main contrib non-free
    deb-src http://mirrors.aliyun.com/debian/ bookworm main contrib non-free
    
    deb http://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free
    deb-src http://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free
    
    deb http://mirrors.aliyun.com/debian-security bookworm-security main contrib non-free
    deb-src http://mirrors.aliyun.com/debian-security bookworm-security main contrib non-free
    
    deb http://mirrors.aliyun.com/debian/ bookworm-backports main contrib non-free
    deb-src http://mirrors.aliyun.com/debian/ bookworm-backports main contrib non-free
  • 网易源(163)

    deb http://mirrors.163.com/debian/ bookworm main contrib non-free
    deb-src http://mirrors.163.com/debian/ bookworm main contrib non-free
    
    deb http://mirrors.163.com/debian/ bookworm-updates main contrib non-free
    deb-src http://mirrors.163.com/debian/ bookworm-updates main contrib non-free
    
    deb http://mirrors.163.com/debian/ bookworm-backports main contrib non-free
    deb-src http://mirrors.163.com/debian/ bookworm-backports main contrib non-free
    
    deb http://mirrors.163.com/debian-security/ bookworm-security main contrib non-free
    deb-src http://mirrors.163.com/debian-security/ bookworm-security main contrib non-free
  • 4.更新软件包列表
    保存并退出编辑器后,执行以下命令更新软件包列表:

    apt update && apt upgrade

    之后,你就可以正常使用国内源进行软件包的安装和更新了。

    七、挂载NFS/SMB服务

    进入pve的web界面,依次点击“数据中心”“存储”,根据实际情况添加相应的服务


而后到pve的web界面看一下是否挂载成功

进入pve命令行(shell),输入pct set 101 -mp0 /mnt/pve/share nfs,mp=/mnt/share nfs

参数解释:

  • pct:这是Proxmox VE的命令行工具,用于管理LXC容器。
  • set:用于设置或修改LXC容器的配置。
  • 101:这是LXC容器的ID号。该命令将应用于ID为101的容器。
  • -mp0:mp表示挂载点(mount point),0是挂载点的索引。如果容器内有多个挂载点,可以使用-mp1、-mp2等不同的索引来区分。
  • /mnt/pve/share nfs:这是Proxmox VE主机上的路径,即要挂载到容器内的NFS共享目录。/mnt/pve/share nfs 是主机上的NFS挂载点。
  • mp=/mnt/share nfs:这是容器内的路径,/mnt/share nfs 是NFS共享目录在LXC容器内的挂载位置。

整体含义:

这条命令将PVE主机上 /mnt/pve/share nfs 路径(一个通过NFS共享的目录)挂载到容器ID为 101 的LXC容器的 /mnt/share nfs 路径下。

  • 如果挂载的是smb服务

那么就略有不同,进入pve命令行(shell),输入pct set 101 -mp0 /mnt/pve/share_smb,mp=/mnt/share_smb

八、安装docker

使用第三方shell工具登录lxc容器

  • 1. 更新包索引并安装依赖包

首先,确保你的包索引是最新的,并安装一些必要的依赖包:

apt-get update
apt-get install ca-certificates curl gnupg
  • 2. 添加 Docker 的官方 GPG 密钥

需要添加 Docker 官方的 GPG 密钥,以确保从官方源安装的软件包是可信的:

apt install curl -y
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg |  gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
  • 3. 设置 Docker 仓库

添加 Docker 官方的APT软件仓库:

nano /etc/apt/sources.list.d/docker.list

加入如下内容:

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable
  • 4. 更新包索引
    现在,更新包索引以包括刚刚添加的 Docker 仓库:
apt-get update
  • 5. 安装 Docker Engine

使用以下命令安装 Docker 及其依赖项:

apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

docker-ce: Docker Engine社区版。

containerd.io: 一个高性能容器运行时。

docker-buildx-plugin: 用于多架构构建的 Docker Buildx。

docker-compose-plugin: Docker Compose V2 的插件。

  • 6. 启动并启用 Docker 服务

安装完成后,Docker服务会自动启动。如果没有,可以手动启动并设置开机自动启动:

systemctl start docker
systemctl enable docker
  • 7. 验证 Docker 安装

你可以通过运行以下命令来验证 Docker 是否安装成功:

docker --version

看到如下输出,证明docker已经安装成功了!]

  • 8.查看docker运行状态

    systemctl status docker

    看到如下输出,证明docker服务已经运行了

九、安装jellyfin

详细步骤参考Docker部署jellyfin实现核显硬解

十、配置开机脚本

为了避免docker启动的过快,导致jellyfin运行时,系统还未挂载smb服务,需要配置一下开机脚本:

nano /etc/systemd/system/rc-local.service

复制如下代码:

[Unit]
Description=/etc/rc.local
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target

配置开机启动

systemctl enable rc-local.service
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
# 
# In order to enable or disable this script just change the execution
# bits.
# 
# By default this script does nothing.

chmod 777 /dev/dri/*     # 或根据需要调整权限
sleep 30
systemctl restart docker

exit 0

这个脚本的目的:

  • 一是确保jellyfin容器有访问核显的权限
  • 二是确保挂载硬盘后再启动jellyfin容器。
PVE
打赏
评论区
头像
文章目录

本站已运行: