NAS Docker部署Jellyfin:打造家庭影院级媒体中心
你是不是也遇到过这样的尴尬:手机里存满了电影,想在客厅大电视上看,却发现要么格式不支持,要么字幕乱码,要么卡顿得像幻灯片?更别提家里几台设备各存各的,想看部片子还得先找到文件在哪。其实,一台NAS加一个Docker容器就能解决所有问题,今天我们就来聊聊如何在NAS上用Docker部署Jellyfin,打造一个全家人随时可用的家庭影院媒体中心。
为什么选择Jellyfin而不是Plex或Emby
市面上主流的媒体服务器无非三款:Plex、Emby和Jellyfin。Plex和Emby虽然界面漂亮、生态成熟,但高级功能(如硬件转码、多用户)都需要付费订阅,而且它们会收集用户观看数据。Jellyfin则是完全免费开源的,由社区维护,没有付费墙,没有数据回传,支持几乎所有主流平台(iOS/Android/TV/网页),更重要的是它原生支持Docker部署,资源占用可控,特别适合NAS用户。
如果你只是想本地看片,不追求云端同步和手机App推送,Jellyfin完全够用,而且它支持硬解(Intel Quick Sync / NVIDIA NVENC),转码性能不比付费软件差。
第一步:Docker部署Jellyfin(含docker-compose示例)
在NAS上部署Jellyfin非常简单,推荐使用docker-compose方式管理。先在你的NAS上创建一个目录,比如/volume1/docker/jellyfin,然后新建docker-compose.yml文件,内容如下:
version: '3'
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
environment:
- PUID=1024
- PGID=100
- TZ=Asia/Shanghai
volumes:
- /volume1/docker/jellyfin/config:/config
- /volume1/docker/jellyfin/cache:/cache
- /volume1/media/movies:/media/movies
- /volume1/media/tvshows:/media/tvshows
ports:
- 8096:8096
- 8920:8920
devices:
- /dev/dri:/dev/dri # 如果NAS有Intel核显,启用硬解
restart: unless-stopped
注意:PUID和PGID要改成你NAS上的用户ID(可通过id命令查看),/volume1/media路径改成你的媒体库实际路径。如果你没有/dev/dri设备(比如ARM架构NAS),可以去掉devices那一行。
保存后,在SSH终端或NAS自带的Docker管理界面中执行:
cd /volume1/docker/jellyfin
docker-compose up -d
等待拉取镜像并启动,访问http://你的NASIP:8096,就能看到Jellyfin的初始化向导了。
第二步:媒体库配置与命名规范
Jellyfin默认会从TheMovieDB(TMDB)刮取海报、简介、演员信息,但前提是你的文件命名要规范。推荐采用以下结构:
/volume1/media/
├── movies/
│ ├── 星际穿越 (2014)/
│ │ └── 星际穿越.mkv
│ └── 盗梦空间 (2010).mp4
└── tvshows/
├── 权力的游戏/
│ ├── Season 01/
│ │ ├── S01E01.mkv
│ │ └── S01E02.mkv
└── 绝命毒师/
└── Season 01/
└── Breaking.Bad.S01E01.mkv
在Jellyfin控制台的“媒体库”中添加文件夹,选择对应类型(电影/剧集),元数据语言设为中文(zh),刮取器勾选TMDB即可。如果个别电影刮不到,可以手动编辑元数据,或使用tinyMediaManager这类工具提前刮削好nfo文件。
第三步:硬解转码与字幕设置
如果你NAS的CPU支持Intel Quick Sync(Jellyfin官方推荐),在控制台“播放”设置中,将“转码”里的硬件加速选为“Intel Quick Sync”,并勾选“启用硬件解码”。这样播放4K HDR片源时,转码负载会大幅降低,内存占用也小。
字幕方面,Jellyfin默认支持ASS/SSA特效字幕,但如果你在浏览器播放时遇到字幕乱码,建议在“播放”设置中把“字幕提取”改为“提取所有字幕”,并开启“烧录图形字幕(仅在需要时)”。对于外挂字幕文件,确保文件名和视频同名,比如星际穿越.srt和星际穿越.mkv放在同一目录。
第四步:客户端与远程访问
Jellyfin客户端覆盖极广,电视端(Android TV / Apple TV / 小米电视)可以装官方App,手机端(iOS/Android)支持投屏和离线下载。在局域网内,直接用http://NASIP:8096即可访问。
如果你希望在外网也能看,推荐用Tailscale或WireGuard组虚拟局域网,比端口转发安全得多。配置好Tailscale后,手机装客户端,就能像在家一样访问Jellyfin,无需公网IP。
进阶技巧:定时扫描与自动更新
Jellyfin默认每12小时扫描一次媒体库,你也可以在控制台手动触发扫描。如果你下载新电影后希望立即入库,可以在下载工具(如qBittorrent)完成后调用Jellyfin的API:
curl -X POST "http://127.0.0.1:8096/Library/Refresh?api_key=你的API密钥"
API密钥在控制台“高级”中生成。另外,用Watchtower容器可以自动更新Jellyfin镜像:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower jellyfin
不过建议手动更新,避免新版本引入bug影响稳定性。
总结
通过Docker部署Jellyfin,你只需要20分钟就能搭建一个跨平台的家庭影院系统。它免费、无广告、支持硬解,配合规范的命名和元数据刮取,能自动生成海报墙,全家人都能轻松用遥控器点播电影。相比付费的Plex,Jellyfin更适合追求性价比和数据隐私的NAS玩家。如果你还没试过,今晚就可以动手部署,把吃灰的硬盘变成你的私人影院。
暂无评论,来说两句吧