个人总结 docker搭建家庭媒体库Jellyfin
Jellyfin
Jellyfin是一个开源媒体服务器项目,旨在让用户自行搭建并管理音视频流媒体库。它提供与商业媒体服务器(如Plex或Emby)类似的功能,但完全免费且无专有组件或遥测功能。
Jellyfin允许用户在自有服务器上集中管理电影、电视剧、音乐和照片,并通过网页或客户端应用流式播放。其服务端可运行于Windows、Linux、macOS、Docker等环境,客户端涵盖网页端、Android、iOS、智能电视和Kodi插件等。
把一堆电影、电视剧、动漫整理成一个统一的家庭媒体库:
- 局域网内通过浏览器、电视、平板、手机访问
- 自动显示海报、简介、演员、季集信息
- 记录观看进度
- 多设备同步播放位置
- 支持
Docker部署,方便备份和迁移 - 支持
Rockchip硬件解码/转码
7.1、创建项目目录
建议把项目固定成下面这种结构:
/mnt/nvme/my-project/project-docker/ ├── project-jellyfin/ ├── cache# 缓存文件├── config# 配置文件├── docker-compose.yml └── README.md#可选另外,媒体文件放在NAS:
/mnt/nas/my-project/project-docker/ ├── project-jellyfin/ └── media# 媒体库(视频、音乐、图片等)├── movies/ ├── tv/ ├── anime/ └── unsorted/各目录作用
docker-compose.yml:Docker启动配置文件。config/:Jellyfin的核心配置目录。里面会保存:
- 服务器设置
- 用户信息
- 媒体库配置
- 插件信息
- 日志
这是最重要的目录之一。
cache/:缓存目录。
里面主要是缩略图、临时数据、转码缓存等。
可以清理,但不建议随便删除。media/:真正的视频资源目录。
这是你电影、动漫、电视剧的存放位置。
准备目录:
mkdir-p/mnt/nvme/my-project/project-docker/project-jellyfin/configmkdir-p/mnt/nvme/my-project/project-docker/project-jellyfin/cachemkdir-p/mnt/nas/docker-data/project-jellyfin/media设置权限:
sudochown-R$USER:$USER/mnt/nas/my-project/project-docker/project-jellyfinsudochown-R$USER:$USER/mnt/nvme/my-project/project-docker/project-jellyfin7.2、创建容器
7.2.1、docker run
dockerrun-d\--namejellyfin\-p8096:8096\-p8920:8920\-v/mnt/nvme/my-project/project-docker/project-jellyfin/config:/config\-v/mnt/nvme/my-project/project-docker/project-jellyfin/cache:/cache\-v/mnt/nvme/my-project/project-docker/project-jellyfin/media:/media\--restartunless-stopped\jellyfin/jellyfin:latest解释一下参数:
| 参数 | 含义 |
|---|---|
-d | 后台运行 |
--name jellyfin | 容器名字 |
-p 8096:8096 | HTTP访问端口 |
-p 8920:8920 | HTTPS端口(可选) |
-v /宿主机路径:/容器路径 | 映射目录 |
--restart unless-stopped | 容器自动重启策略 |
jellyfin/jellyfin:latest | jellyfin的官方Docker镜像 |
nyanmisaka/jellyfin:latest-rockchip | 社区针对于硬件加速适配的Docker镜像 |
这时容器已经启动,但还没有配置账号和媒体库。
7.2.2、Compose
核心配置如下:
services:jellyfin:container_name:jellyfinimage:nyanmisaka/jellyfin:latest-rockchipports:-"8096:8096"-"8920:8920"volumes:-/mnt/nvme/my-project/project-docker/project-jellyfin/config:/config-/mnt/nvme/my-project/project-docker/project-jellyfin/cache:/cache-/mnt/nas/docker-data/project-jellyfin/media:/mediadevices:-/dev/dri:/dev/dri-/dev/dma_heap:/dev/dma_heap-/dev/mpp_service:/dev/mpp_service-/dev/rga:/dev/rga-/dev/mali0:/dev/mali0security_opt:-systempaths=unconfined-apparmor=unconfinedenvironment:-TZ=Asia/Shanghai-PUID=1001-PGID=1001restart:unless-stopped参数详细讲解:
container_name: jellyfin:容器名称,方便后续用
docker logs jellyfin、docker exec -it jellyfin bash这类命令。image: nyanmisaka/jellyfin:latest-rockchip:使用适配
Rockchip平台的Jellyfin镜像。比通用镜像更适合RK3588 / RK356x等平台。ports:-"8096:8096"-"8920:8920"8096:HTTP 访问端口8920:HTTPS 访问端口
一般首次部署只会用到
8096。volumes:-/mnt/nvme/.../config:/config-/mnt/nvme/.../cache:/cache-/mnt/nas/.../media:/media把宿主机目录映射到容器内部:
- 宿主机配置目录 → 容器
/config - 宿主机缓存目录 → 容器
/cache - 宿主机媒体目录 → 容器
/media
容器内看到的
/media,其实对应宿主机上的NAS媒体目录。- 宿主机配置目录 → 容器
devices:-/dev/dri:/dev/dri-/dev/dma_heap:/dev/dma_heap-/dev/mpp_service:/dev/mpp_service-/dev/rga:/dev/rga-/dev/mali0:/dev/mali0这些是
Rockchip硬件加速用到的设备节点:/dev/dri:图形/渲染接口/dev/dma_heap:DMA内存分配/dev/mpp_service:Rockchip MPP视频编解码/dev/rga:图像缩放/格式转换/dev/mali0:Mali GPU(HDR色调映射OpenCL相关)
security_opt:-systempaths=unconfined-apparmor=unconfined这是为了避免
Docker安全限制阻碍硬件访问。在Rockchip硬件加速场景中通常需要加上environment:-TZ=Asia/Shanghai-PUID=1001-PGID=1001TZ=Asia/Shanghai:设置时区PUID=1001/PGID=1001:让容器里创建的文件尽量与宿主机用户权限一致
restart: unless-stopped:当系统重启后,
Docker会自动重新启动这个容器;除非你手动停止过它。
启动容器:
cd/mnt/nvme/my-project/project-docker/project-jellyfindockercompose down&&dockercompose up-d7.3、使用
7.3.1、首次访问
浏览器访问:
http://设备IP:8096首次进入后按页面会要求:
- 选择语言
- 创建管理员账号
- 添加媒体库
7.3.2、添加媒体库
推荐至少分成 3 个库:
电影库
路径:
/media/movies电视剧库
路径:
/media/tv动漫库
路径:
/media/anime
不要一开始就把/media整个作为一个总库。
因为这样会把电影、电视剧、动漫、杂项全混在一起,识别效果容易变差。
7.3.3、媒体命名规则
电影
movies/ └── 你的名字 (2016)/ └── 你的名字 (2016).mkv电视剧 / 动漫
tv/ └── 老友记 (1994)/ ├── Season 01/ │ ├── 老友记 S01E01.mkv │ └── 老友记 S01E02.mkv └── Season 02/OVA / 特典
anime/ └── Plastic Memories (2015)/ ├── Season 00/ │ ├── Plastic Memories - S00E01 - NCOP.mp4 │ └── Plastic Memories - S00E02 - NCED.mp4 └── Season 01/重要建议
- 季目录尽量写成
Season 01 - 文件名里尽量保留
S01E01 - 年份写在总目录名里更稳
- 资源特别乱时,优先整理“总目录 + 季目录”,不要先折腾每一集
- 季目录尽量写成
7.4、维护
# 查看 Jellyfin 日志dockerlogs-fjellyfin# 进入容器dockerexec-itjellyfinbashdockerexec-itjellyfinsh7.5、硬件加速
先检查容器里ffmpeg是否支持rkmpp
dockerexec-itjellyfin /usr/lib/jellyfin-ffmpeg/ffmpeg-hwaccels正常会看到类似:
rkmpp drm openclJellyfin后台设置
进入:
仪表盘 → 播放 → 转码建议:
- 硬件加速:
Rockchip MPP (RKMPP) - 硬件解码:大多数都勾选
- 启用硬件编码:开启
HEVC编码:先关闭(稳定优先)AV1编码:关闭- 色调映射:先关闭
真正播放时看负载
如果播放/转码时CPU压力明显下降,且日志里出现硬件相关内容,通常说明已在工作。
