下载 CT 模版
创建一个 Debian 11 的容器。
PVE管理界面 ——> local ——> CT模版 ——> 模版 ——> debian11 ——> 下载 ——> 创建CT
安装的时候能给魔法给魔法,否则前期配置很慢
安装完之后再把魔法去掉即可
创建 CT
选择刚创建好的 LXC 容器 → 选项 → 功能(嵌套、NFS、SMB/CIFS、FUSE)全都勾选上 → 开机启动:是
添加 LXC 容器的权限映射以及添加 SRIOV 核显
# 进入到PVE节点的Shell
# 查询本机的硬件参数:
ls -l /dev/dri
# 系统输出信息:
# total 0
# drwxr-xr-x 2 root root 160 Mar 15 12:21 by-path
# crw-rw---- 1 root video 226, 0 Mar 15 10:07 card0
# crw-rw---- 1 root video 226, 3 Mar 15 10:07 card3
# crw-rw---- 1 root video 226, 5 Mar 15 10:07 card5
# crw-rw---- 1 root render 226, 128 Mar 15 10:07 renderD128
# crw-rw---- 1 root render 226, 131 Mar 15 10:07 renderD131
# crw-rw---- 1 root render 226, 133 Mar 15 10:07 renderD133
# video 226, 0 Mar(是核显设备)
# render 226, 128 Mar(是渲染器)
# 如果不一样的,下面的根据自己的情况更改进行更改(基本都是一样的)
# 编辑刚刚创建好的容器配置文件
nano /etc/pve/lxc/容器ID.conf
# 将容器ID替换成真实容器ID
# 进入到编辑页面后,再最后面添加以下内容
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
lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file
lxc.apparmor.profile: unconfined
lxc.cgroup.devices.allow: a
lxc.cap.drop:
# ctrl+x y 回车保存退出
启动 LXC 容器以及在控制台进行登录
# 登陆进入到LXC容器
login:root password:创建容器的时候输入的密码
# 查看核显是否已经直通进来了(其实这个也不算直通,LXC容器使用硬件资源并不会像虚拟机直通那样独占硬件资源)
cd /dev/dri
ls
- 系统输出:by-path card0 card3 card5 renderD128 renderD131 renderD133 (card0这个就是核显了)
- 输出核显信息,那么说明完成了
# 换源
中科大源
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && apt update && apt upgrade -y
清华源
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && apt update && apt
# 设置中文语言及时区
A 修改/etc/default/locale 文件里,修改为下面内容:
echo 'LANG="zh_CN.UTF-8"' >> /etc/default/locale
B 安装语言包
dpkg-reconfigure locales
选择 zh_CN.UTF-8 用空格选中,选中后再敲回⻋。
C 设置时区
timedatectl set-timezone Asia/Shanghai
# 开启 SSH 登录
A 打开 ssh 配置文件
nano /etc/ssh/sshd_config
B 修改文件
将 #PermitRootLogin prohibit-password
修改为
PermitRootLogin yes
#prohibit-password
C 重启服务
service ssh restart
D 再使用第三方ssh工具登陆测试下能否成功
# 更新包
apt update
apt upgrade -y
# 挂载远程SMB(比如群晖,或者其他NAS,或者window,mac等只要支持smb共享的都可以挂载过来)
apt install cifs-utils -y
- 这个是安装SMB的管理工具
mkdir /mnt/nas_share
- 这创建的一个文件夹的作用是,后面要将它里面存放所有远程挂载过来的文件夹,nas_Docker_PVE这是文件夹名称(按自己喜好填)
# 创建密码文件:
nano ~/.smbcredentials
# 设置SMB登录密码,自行替换:
username=admin
- admin 替换成远端smb服务器的账号(举个例子,如果是群晖就是输入群晖的账号)
password=passw
- passw 替换成远端smb服务器的密码(举个例子,如果是群晖就是输入群晖的密码)
# ctrl+x y 回车保存退出
# 修改自动挂载文件
nano /etc/fstab
# 加入挂载位置,自行替换
//$smb_server/share /mnt/nas_share cifs credentials=/root/.smbcredentials,iocharset=utf8 0 0
- $smb_server替换成远端smb服务器的ip地址(举个例子,如果是群晖就是输入登陆群晖的IP地址)
- share替换成远端smb服务器共享出来的文件夹(举个例子,如果是群晖就是输入群晖的任意一个共享文件夹名称)
- /mnt/nas_share 这个就是前面创建好的存放所有远程挂载过来的文件夹的路径
- cifs用来注明共享方式是SMB,不需要更改
- /root/.smbcredentials 这里是前面创建的明文密码存放路径,如果前面是默认的就不需要更改
- ctrl+x y 回车保存退出
# 重启
reboot
Docker 安装
# 查看是否挂载成功
cd /mnt/nas_share
- 进入到存放挂载SMB文件的目录
ls -i
- 查看里面的所有文件(如果出现你SMB服务器共享过来的文件,那就说明挂载成功了)
# 安装docker
- 安装依赖软件包
apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 配置正式的 docker 存储库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 docker
apt install docker.io
# 查看Docker版本信息
docker --version
# 启动 Docker 服务
systemctl status docker
- 按ctrl+z退出
# 设置docker服务为开机自启动
systemctl enable docker
# 检查开机自启动docker服务是否开启成功
systemctl is-enabled docker
- 如果输出显示 enabled,则表示 Docker 服务已成功启用。
# 安装portainer(可视化docker容器管理)
docker volume create portainer_data
- 创建一个名为 portainer_data 的 Docker 数据卷(后续所有通过portainer安装的docker容器都会存在这)
- 官方版本:
docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /opt/docker/portainer:/data portainer/portainer-ce:latest
- 汉化版:
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data 6053537/portainer-ce
# portainer使用
- ip地址:9000 (进入到portainer登陆面板)
- 进入之后选择本地
# 登陆进去之后首先添加一个ghcr.io注册表(包含更多了镜像仓库)
- 选择注册表 ——> 添加注册表 ——> 自定义注册表 ——> 名称:GHCR ——> 注册表URL:ghcr.io ——> 添加注册表
创建jellyfin容器:(媒体库服务器)
注意:用LXC容器安装jellyfin有小伙伴出现爆内存的情况,也就是说通过这个方式安装jellyfin,每看一部影片LXC容器的内存就会增加几百兆或者一个G不等,这个内存不会减少,除非重启PVE,如果一直增加导致内存满了,那么PVE就会无限重启,最终导致All in Boom,但是有的小伙伴不会出现这样的情况,所以还是建议将它安装到黑群里面,有教程自行查看
名称:Jellyfin
镜像:nyanmisaka/jellyfin
端口映射:(主机)8096 ——> (容器)8096|TCP
【卷】
(容器)/media ——> (主机)/mnt/nas_share
(容器)/config ——> (主机)/home/docker_config/jellyfin/config
(容器)/cache ——> (主机)/home/docker_config/jellyfin/cache
【环境变量】
(name)PUID ——> (主机)0
(name)PGID ——> (主机)0
(name)TZ ——> (主机)Asia/Shanghai
【重启策略】
重启策略:除非停止
【运行时和资源】
设备:添加设备
(主机)/dev/dri ——> (容器) /dev/dri
- 这就是将核显添加到Jellyfin
|完成|部署容器|
注释:
(容器)/media ——> (主机)/mnt/nas_share
- /media 这个是容器内部自带的目录(不要修改)
- /mnt/nas_share 这个是将NAS的共享目录映射到 /mnt/nas_share 这个文件夹中
- 当打开 Jellyfin 看电影的时候,Jellyfin 就会访问容器内部的 /media 目录,但是我们把 /media 映射到了 /mnt/nas_share ,就相当于 Jellyfin 访问 /media 的时候,就会自动跳转去访问 /mnt/nas_share ,而 /mnt/nas_share 里面存放的是我们NAS共享过来的影音文件,这样就通了
(name)PUID ——> (主机)0
(name)PGID ——> (主机)0
- PUID ——> 0 以及 PGID ——> 0 这就是给 Jellyfin 赋予root权限来执行各种操作
(主机) /dev/dri ——> (容器) /dev/dri
- 这就是将宿主机(也就是LXC容器)的 /dev/dri 目录映射到 Jellyfin 容器的 /dev/dri 目录下
- /dev/dri 存放的就是核显以及渲染器的文件(因为硬件是通过软件调动的,所以是以文件形式存放的)
# 进入到jellyfin后台设置核显转码
- 左上角三条杠-->控制台-->播放-->硬件加速-->Intel QuickSync(Qsv)-->启动硬件解码:所有格式全部勾上-->保存
# 字幕插件:OpenSubtitles
控制台 ——> 插件 ——> 目录 ——> 点元数据下面的OpenSubtitles ——> 点Install安装 ——> 安装完成之后重启 ——> 控制台 ——> 插件 ——> 点安装好的OpenSubtitles
- 账号密码自行注册:https://www.opensubtitles.com
- 注册完成后登陆进入:https://www.opensubtitles.com/en/consumers
- 点 NEW CONSUMER
- name 填 jellyfin
- 点SAVE
- 这个时候出来的就是API KEY 了
- 全部完成之后
重启docker容器 ——> 随便点开一个影片 ——> 右上角三个点 ——> 修改字幕 ——> 点放大镜就可以搜索到字幕了