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 的片子在播放時會報錯,提示沒有合適的容器,最終無法播放。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。