基于Ubuntu的Docker部署portainer-ce及Jellyfin并实现硬解及端口映射外网观看

omanik 2023-3-19 272 3/19

在去年购入了一台N5105小主机,一直没有找打它的合适用途,最近在刷B站的时间偶然看到N5105有强悍的转码性能遂起了想法便有如下折腾

前情提要

一、硬件底层黑群晖

1. 之前想着能虚拟化尽量不要虚拟化毕竟会损失性能,所以打算直接黑群晖,但是我逛了一圈发现居然没有适配N5105的黑群晖!原因是群晖官方的系统内核一直是4.4的,而这个系统内核自带的核显驱动最高支持到九代,魔改后支持十代,十一代的核显直接无解,这让我绷不住了,我的计划不会腹死胎中把!就在这时!有人给我甩了一个链接,打开以后我直接热血沸腾,这背后的原因令人暖心啊,链接如下

https://blog.jim.plus/blog/post/jim/synology-sa6400-with-i915

此链接是J大移植并编译的SA6400的arpl引导 十一代可直接硬件黑群晖,但是由于我的机型比较奇葩,引导后老是找不到硬盘,期间和J大也交流过短期内可能无法找到这个问题,遂放弃硬件黑群晖的方法转用Ubuntu部署。

正文

一、安装Ubuntu

这一步这么说呢,这件事大家懂的都懂,不懂的,说了你也不明白,不如不说。你们也别来问我怎么了,利益牵扯太大,说了对你们也没什么好处,当不知道就行了,其余的我只能说这里面水很深,牵扯到很多大人物,详细资料你们自己找是很难的,网上大部分都被删干净了,所以我只能说懂的都懂,不懂的也没办法。

二、安装Docker

1. 如果安装了老版本的Docker请先卸载掉,Ubuntu如果无法使用root账户请参考我之前的文章

sudo apt-get remove docker docker-engine docker.io containerd runc

2. 然后刷新apt仓库并让apt允许通过HTTPS来进行安装

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \

3. 导入Docker的官方GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

4. 用下面命令设置Docker稳定仓库,当然也可以切换第三方源。

echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

5.然后就是通过apt命令进行安装

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

6.这中途如果报错

W: GPG 错误:http://dl.google.com/linux/chrome/deb stable InRelease: 由于没有公钥,无法验证下列签名5473CB3BD13
E: 仓库 “http://dl.google.com/linux/chrome/deb stable InRelease” 的签名不再生效

7.出现以上错误请添加如下代码

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 78BD65473CB3BD13

8.如果还是报错请转移文件

cd /etc/apt
sudo cp trusted.gpg trusted.gpg.d

9.然后再次运行,应该就可以跑起来了

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

三、安装portainer-ce

1.portainer-ce是一个Docker镜像管理软件  Docker安装好后接下来就快了,直接运行如下命令,这是一个大佬打包好的中文版本

docker pull 6053537/portainer-ce  #直接用汉化版镜像
docker volume create portainer_data
docker run -d --name portainer -p 9000:9000 --restart=always \
     -v /var/run/docker.sock:/var/run/docker.sock \
     -v portainer_data:/data  6053537/portainer-ce

这时候直接访问http://ip:9000就可以访问了,注意此时要在五分钟内完成注册登录,否则该页面失效

四,部署Jellyfin并实现硬解

1.本文使用nyanmisaka大神制作的jellyfin镜像,大神打包的镜像已经安装了核显驱动,因此可以直接使用intel QSV,让使用Jellyfin硬解和色调映射变得非常简单

2.部署Jellyfin,首先查看是否认到核显renderD128,命令如下

ls -l /dev/dri/

正确结果如图

基于Ubuntu的Docker部署portainer-ce及Jellyfin并实现硬解及端口映射外网观看

3.如果认到了继续执行如下命令来进行赋权, 注意:重启后需要重新赋权

sudo chmod 777 /dev/dri/renderD128

4.拉取镜像,命令如下,我拉取的tag是3.5号的最新版本

docker pull nyanmisaka/jellyfin:230305-amd64

5.启动容器。命令如下

docker run -d --restart=always -p 9999:8096 -p 8888:8920 --name jellyfin2 nyanmisaka/jellyfin:230305-amd64  --device /dev/dri/renderD128:/dev/dri/renderD128 --device=/dev/dri/card0:/dev/dri/card0 --add-host api.themoviedb.org:13.225.183.115 --add-host api.themoviedb.org:13.225.183.107 -v /home/jellyfin/config:/config -v /mnt/media:/media

其中docker run -d --restart=always是为了让容器跟随Docker一块启动,

-p 9999:8096 -p 8888:8920是为了映射端口,

--name jellyfin2 nyanmisaka/jellyfin:230305-amd64是给容器起名字并告诉它拉取的是哪个镜像,

--device /dev/dri/renderD128:/dev/dri/renderD128 --device=/dev/dri/card0:/dev/dri/card0这句是硬解的关键把他们两个作为device映射到jellyfin容器

--add-host api.themoviedb.org:13.225.183.115 --add-host api.themoviedb.org:13.225.183.107这两句是在指定host文件,

-v /home/jellyfin/config:/config -v /mnt/media:/media这句是为了映射Ubuntu的目录到容器中,

如果要照抄我的命令 要保证Ubuntu必须在这个目录下/home/jellyfin//config  这个文件夹,另一个同理/mnt/media 是保存电影资源的文件夹

这个时候输入http://ip:9999就可以访问了

6.设置硬解,

基于Ubuntu的Docker部署portainer-ce及Jellyfin并实现硬解及端口映射外网观看 基于Ubuntu的Docker部署portainer-ce及Jellyfin并实现硬解及端口映射外网观看 基于Ubuntu的Docker部署portainer-ce及Jellyfin并实现硬解及端口映射外网观看

本文对于硬解浅尝辄止 更多硬解知识请访问https://post.smzdm.com/p/a859320l/了解

 

- THE END -

omanik

3月19日10:19

最后修改:2023年3月19日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论