banner
小鱼

小鱼's Blog

Docker 部署 Jellyfin

# 通过 Docker 安装#

docker run -d \
--name jellyfin \
--add-host=api.themoviedb.org:13.225.174.30 \
--add-host=www.themoviedb.org:54.192.22.105 \
--add-host=api.themoviedb.org:13.35.8.65 \
--add-host=api.themoviedb.org:13.224.161.90 \
--add-host=api.themoviedb.org:13.35.8.93 \
--add-host=api.themoviedb.org:13.35.8.6 \
--add-host=api.themoviedb.org:13.35.8.54 \
--add-host=image.tmdb.org:138.199.37.230 \
--add-host=image.tmdb.org:108.138.246.49 \
--add-host=image.tmdb.org:13.227.73.57 \
--add-host=api.thetvdb.org:13.225.89.239 \
--add-host=api.thetvdb.org:192.241.234.54 \
--volume /home/soft/jellyfin/config:/config \
--volume /home/media/video:/media \
--restart=unless-stopped \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
--device /dev/dri/card0:/dev/dri/card0 \
-p 8096:8096 \
-e TZ=Asia/Shanghai -e PUID=0 -e PGID=0 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=$DISPLAY \
nyanmisaka/jellyfin:latest
--name jellyfin:容器名称。
--add-host:配置容器内的host解析,将api.themoviedb.org和image.tmdb.org等域名解析到指定IP。因为Jellyfin需要访问这些站点的API来获取元数据,但容器内默认DNS可能无法解析,所以需要额外配置这些域名解析。
--volume: 将宿主机的目录挂载到容器内,用于持久化保存Jellyfin的配置数据和媒体库数据。
--restart=unless-stopped: 除非容器被手动停止,否则总是重启容器。
--device: 将宿主机的GPU设备文件挂载到容器内,用于硬件解码。
-p 8096:8096: 端口映射,将宿主机8096端口与容器内8096端口建立映射。
-e TZ和-e DISPLAY: 设置时区和显示环境变量。
-v /tmp/.X11-unix:/tmp/.X11-unix :挂载X11 socket目录,用于图形应用程序访问X server显示。
 nyanmisaka/jellyfin:latest : 使用名为nyanmisaka/jellyfin的Docker镜像,标签为latest。

# 虚拟机中配置#

进入虚拟机

docker exec -it jellyfin /bin/bash

## apt 换源#

具体查看之前 换源 笔记

接着安装

apt-get install vim

apt-get install -my wget gnupg

可能会出现错误

E: The repository 'https://mirrors.ustc.edu.cn/ubuntu focal-backports InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: GPG error: https://mirrors.ustc.edu.cn/ubuntu focal-security InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 3B4FE6ACC0B21F32 NO_PUBKEY 871920D1991BC93C

解决办法:

执行下面命令,修改后面的那串数字

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 871920D1991BC93C

## 安装中文字体#

apt install fonts-noto-cjk-extra

## 检查显卡直通#

 ls /dev/dri/

出现 renderD128 和 card0 说明成功

## 安装驱动#

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

接着输入

vainfo

如果出现类似

root@61f034a94ef0:/# vainfo
error: XDG_RUNTIME_DIR not set in the environment.
error: can't connect to X server!
libva info: VA-API version 1.7.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_7
libva error: /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so init failed
libva info: va_openDriver() returns 1
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_6
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.7 (libva 2.6.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Bay Trail - 2.4.0
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD

说明驱动可以正常初始化并支持多种编码

虽然出现了

error: XDG_RUNTIME_DIR not set in the environment.
error: can't connect to X server!

这主要会对 vaapi 软件的操作产生影响,不影响 vaapi 硬件加速的效果。

vaapi 在纯粹的编码和解码场景中,是不需要连接显示服务器的。

只要驱动成功初始化,加速编解码的效果不会受影响。


如果出现这种错误

error: XDG_RUNTIME_DIR not set in the environment.
error: can't connect to X server!
libva info: VA-API version 1.7.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_7
libva error: /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so init failed
libva info: va_openDriver() returns 1
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit

则需要安装 i965 VA-API 驱动

apt install -y libva2 i965-va-driver

# 页面配置#

此时打开服务器 8096 端口,就可以打开 Jellyfin 页面

内容类型: 电影内容选 “电影”,电视剧选 “节目”,

显示名称: 自定义:

添加媒体库: 点击 “文件夹” 旁边的加号,分别添加电影或电视剧内容所在的文件夹

首选语言 选择 “Chinese”,国家 / 地区 选择 “People's Republic of China”

元数据下载器: 只保留 “TheMovieDb”

图片获取程序: 只保留 “TheMovieDb”,

没提到的,则根据情况自行选择;

全部设置完点 “确定”,之后系统便会自动生成电影和电视剧的海报列表,

完成的速度和你使用的网络环境相关。

## 网络设置#

打开 “控的制台”,在 “高级” 里选择 “联网”;

设置 “监听的本地网络地址”,设为 Jellyfn 服务器所在的网址,

设置 “LAN 网络”,设置为你的局域网地址,比如: 192.168.1.0/255.255.255.0,

如果有多个局域网网段,则用 “逗号” 隔开;

最后点” 确定 “完成网络配置.

## 视频硬解设置#

打开” 控制台 “,在” 服务器 “里选择” 播放 “,

硬件加速: 下拉选择”Video Acceleartion APIVAAP)“或者” ntel QuickSync (QSV“,

不是太老的 CPU / 显卡,建议选 QsV;

启用硬件解码: 根据显卡支持的解码进行选择,Intel 3455 及以上的 CPU,

即 UHD500 及以上的显卡可以全选;

首选系统原生 DXVA 或 VA-API 硬件解码器:不选;

硬件编码选项: 只选择 “启用硬件编码”,“启用 VPP 色调映射 ,没有提到的均不选

最后根据实际情况选中” 允许实时提取字幕 “和” 限制转码速度 “:

没有提到的选择项均不选,其他参数均使用默认值,

最后确定完成设置。

注意,千万不要选择” 启用色调映射 “,这是个坑,选中后,

很多 HEVC/HDR 的片子在播放时会报错,提示没有合适的容器,最终无法播放。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。