目前常用的jellyfin有三种不同的docker镜像nyanmisaka/jellyfin、linuxserver/jellyfin、jellyfin/jellyfin,这里推荐安装nyanmisaka或者linuxserver的镜像
特性 / 镜像 | nyanmisaka/jellyfin | linuxserver/jellyfin | jellyfin/jellyfin |
---|---|---|---|
维护者 | Nyanmisaka (Jellyfin项目贡献者) | LinuxServer.io(社区团队) | 官方Jellyfin团队 |
特殊功能 | 针对特定硬件的优化,如Intel Arc GPU支持 | 稳定性、易用性、社区支持,优化层次 | 最新Jellyfin版本和功能 |
优化与兼容性 | 硬件加速和高级视频流处理功能 | 广泛的系统兼容性,一般性能优化 | 直接从源代码构建,标准优化 |
目标用户 | 需要高级硬件支持和视频流处理优化的用户 | 寻求稳定可靠设置的用户 | 想要最新功能和官方支持的用户 |
更新与维护 | 定期更新,注重特定硬件的支持和视频处理功能 | 定期更新,重视稳定性和社区需求 | 频繁更新,与官方版本同步 |
社区与支持 | 活跃于Jellyfin社区,贡献了多个重要功能 | 广泛的社区支持和文档 | 官方支持渠道,丰富的文档 |
一、jellyfin安装
关于以下以 linuxserver/jellyfin的镜像为例,展示jellyfin的详细安装及优化配置(IPV6、缓存、插件推荐),关于核显直通/硬件转码的相关内容详见PVE下(LXC)核显直通并开启Jellyfin硬件解码(n5105为例)
docker run -d \
--name jellyfin \
--network=host \
-e PUID=0 \
-e PGID=0 \
-e TZ="Asia/Shanghai" \
-e DOCKER_MODS="linuxserver/mods:jellyfin-opencl-intel" \
--mount type=tmpfs,destination=/config/data/transcodes \
--mount type=tmpfs,destination=/config/cache \
--device /dev/dri:/dev/dri \
-v /path/to/config:/config \
-v /path/to/data:/data \
--restart=unless-stopped \
linuxserver/jellyfin:latest
docker run -d
: 以分离模式运行 Docker 容器,即在后台运行。--name jellyfin
: 为容器指定名称“jellyfin”。--network=host
: 使用宿主机的网络,容器将直接使用宿主机的网络配置。-e PUID=0
和-e PGID=0
: 设置环境变量PUID
和PGID
为0
,对应于宿主机的 root 用户,通常用于文件权限管理。-e TZ="Asia/Shanghai"
: 设置容器的时区为“亚洲/上海”。-e DOCKER_MODS="linuxserver/mods:jellyfin-opencl-intel"
: 应用 Docker 模块,这里使用的是 LinuxServer 提供的jellyfin-opencl-intel
,主要是为了在 Jellyfin 中启用 Intel GPU 支持(nyanmisaka的镜像无需设置)。--mount type=tmpfs,destination=/config/data/transcodes
和--mount type=tmpfs,destination=/config/cache
: 将tmpfs
(一种基于内存的文件系统)挂载到容器的特定目录,用于存放转码和缓存数据,提高处理性能。--device /dev/dri:/dev/dri
: 将宿主机的/dev/dri
设备映射到容器中,允许容器访问 GPU 硬件,用于视频编解码加速。-v /path/to/config:/config
和-v /path/to/data:/data
: 将宿主机的目录挂载到容器内,用于持久化存储配置和媒体数据。--restart=unless-stopped
: 设置容器除非被手动停止,否则总是自动重启。linuxserver/jellyfin:latest
: 指定使用 LinuxServer 维护的最新版 Jellyfin 镜像。
注意:
--mount type=tmpfs
只能在命令行中指定,使用portainer等图形化界面基本无法实现!关于tmpfs挂载的更详细内容,可以详见Docker 基础知识 - 使用 tmpfs 挂载(tmpfs mounts)管理应用程序数据- 将cache和transcodes挂载到内存是由于在转码过程中,jellyfin会频繁对目录进行读写(固态硬盘影响寿命;机械硬盘影响性能),且文件不定时清理会占用极大的存储空间。
- 以host网络模式启动是为了在无需额外设置的情况下,保证jellyfin能访问IPV6网站
二、jellyfin插件安装
jellyfin的插件并不是全部安装(越多越好),由于中文环境的限制,很多插件是不支持中文的,安装后反而会造成刮削(scrapy)大量的非中文内容。
(TMDb是官方存储库中唯一一个支持中文的)
#Jellyfin Stable
https://repo.jellyfin.org/releases/plugin/manifest-stable.json
#metashark
https://github.com/cxfksword/jellyfin-plugin-metashark/releases/download/manifest/manifest.json
#MeiamSubtitles
https://github.com/91270/MeiamSubtitles.Release/raw/main/Plugin/manifest-stable.json
#bangumi
https://jellyfin-plugin-bangumi.pages.dev/repository.json
#metatube
https://raw.githubusercontent.com/metatube-community/jellyfin-plugin-metatube/dist/manifest.json
- Metashark 插件:主要从豆瓣获取电影信息,并可以通过TheMovieDb补全缺失的剧集数据。此插件支持从豆瓣和TMDB获取元数据,特别兼容动画的命名格式。
- MeiamSubtitles 插件:中文字幕插件,支持自动从迅雷影音、射手网等源下载并精确匹配字幕。
- Bangumi 数据源插件:专为番剧爱好者设计,从中文源抓取番剧相关的信息及图片,增强Jellyfin服务器对番剧类媒体的支持。
- Metatube 插件:主要提供从不同来源抓取电影和电视剧的元数据和图片。该插件通过其后端服务器(metatube-server)实现数据的抓取和存储。
三、关于IPV6
jellyfin的IPV6需要手动在高级-联网-IP协议中打开
可以通过以下命令验证IPV6
#进入容器内部
docker exec -it jellyfin /bin/bash
#验证IPV6连通性
curl 6.ipw.cn
四、关于字体显示□□
-e DOCKER_MODS="linuxserver/mods:universal-package-install"
-e INSTALL_PACKAGES=fonts-noto-cjk-extra
详见Integrate CJK fonts · Issue #161
五、关于扫描媒体库
1.媒体库扫描缓慢/UI界面卡顿
目前,Jellyfin 在进行大规模媒体库扫描时仍然存在性能问题,尤其是在首次扫描时。这一问题主要源于扫描过程中的数据库争用和资源管理不当,导致I/O等待时间过长,严重时甚至会影响到整个服务器的响应速度。
据最新的讨论显示,虽然开发团队已经在一些测试版中尝试了修复措施,但到目前为止,这些问题并未完全解决。用户反映即使在新版本(如10.8.9和10.8.13)中,当库容量很大时,扫描仍旧非常缓慢,有时需要几天时间才能完成,并且在扫描期间Jellyfin几乎无法使用。
开发团队已经意识到这一问题,并计划在未来的更新中继续对这些性能问题进行优化。但具体的修复时间和解决方案尚未明确公布。因此,如果在使用Jellyfin时遇到了相似的问题,建议关注其官方论坛和GitHub问题跟踪页面,以获取最新的更新和可能的解决方案。
对于这类问题,可以查看以下讨论和反馈页面:
Very slow initial Library scan · Issue #2600
Slow performances when scanning large amount of files inside a directory · Issue #6906
评论区