把 NAS 变成家庭影音中心:Jellyfin + Docker 实战部署
一、为什么用 Docker 部署
在 NAS 上装应用,最省心的办法几乎是清一色的 Docker。原因很简单:
- 不污染系统:应用和依赖都打包在容器里,装十个服务也不会把系统搞乱。
- 升级回滚方便:换镜像版本号就是升级,出问题改回去即可。
- 迁移简单:配置文件和 docker-compose.yml 拷到新机器,一条命令就能跑起来。
- 资源隔离:可以限制每个容器的 CPU 和内存占用,不至于一个服务拖垮整台 NAS。
下面以 Jellyfin 为例,完整走一遍部署流程。Jellyfin 是一款完全开源免费的影音服务器,能把你硬盘里的电影、剧集整理成带海报墙的私人影院,手机、电视、平板都能接着看。
二、准备工作
1. 规划目录结构
建议把容器配置和数据分开存放,方便备份。例如:
/docker/jellyfin/config # 配置文件
/docker/jellyfin/cache # 缓存
/media/movies # 电影
/media/tvshows # 剧集
2. 确认用户权限
很多容器启动失败,都是卡在权限上。先查清楚当前用户的 UID 和 GID:
id your_username
记下输出的 uid 和 gid,后面要写进 compose 文件。同时确保媒体目录对应用户有读写权限:
sudo chown -R 1000:1000 /docker/jellyfin
sudo chmod -R 755 /media
三、编写 docker-compose.yml
在 /docker/jellyfin/ 目录下新建 docker-compose.yml:
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
user: 1000:1000
network_mode: host
environment:
- TZ=Asia/Shanghai
volumes:
- ./config:/config
- ./cache:/cache
- /media/movies:/media/movies:ro
- /media/tvshows:/media/tvshows:ro
devices:
- /dev/dri:/dev/dri
restart: unless-stopped
几个关键点说明:
user: 1000:1000换成前面查到的实际 UID 和 GID,这是避免权限报错的关键。network_mode: host让容器直接使用主机网络,方便局域网设备通过 DLNA 发现服务,也省去端口映射的麻烦。devices这一行把核显设备透传给容器,是开启硬件转码的前提。- 媒体目录加了
:ro只读挂载,防止应用误删你的片库。
然后启动:
cd /docker/jellyfin
docker compose up -d
浏览器访问 http://NAS的IP:8096,就能看到初始化向导了。
四、开启硬件转码
硬解能让 NAS 在低 CPU 占用的情况下流畅转码 4K 视频,这一步别跳过。
进入 Jellyfin 后台:控制台 → 播放 → 转码,硬件加速选择 Video Acceleration API(VAAPI) 或 Quick Sync(取决于你的 CPU),VA-API 设备填 /dev/dri/renderD128,勾选「启用硬件解码」中需要支持的编码格式(H.264、HEVC 等)。
验证是否生效:播放一个高码率视频,然后查看播放页面的「正在转码」信息,或者在容器里执行:
docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/ffmpeg -v debug -init_hw_device vaapi
也可以直接看宿主机的 intel_gpu_top,有占用就说明核显在工作。
五、媒体库整理与刮削
能不能刮削出漂亮的海报墙,九成取决于文件命名是否规范。推荐格式:
电影:
/media/movies/蜘蛛侠:英雄无归 (2021)/蜘蛛侠:英雄无归 (2021).mkv
剧集:
/media/tvshows/权力的游戏/Season 01/权力的游戏 S01E01.mkv
添加媒体库时,内容类型选「电影」或「剧集」,元数据语言选 Chinese Simplified,勾选需要的元数据下载器即可。如果海报刮不出来,多半是命名不含年份,或者目录层级不对。
六、几个常见坑
- 权限报错:容器日志出现
Permission denied,九成是 UID/GID 没写对,或者目录属主不对。 - 核显不通:先确认宿主机
ls /dev/dri有输出,容器里也要能看到;没有的话检查 BIOS 是否开启了核显。 - 外网访问卡:务必开启硬件转码,纯 CPU 软解 4K 基本跑不动。
- 字幕乱码:在播放设置里把字幕编码设为 UTF-8,或者用工具批量转码字幕文件。
七、顺带一提:其他值得部署的服务
掌握了 Docker 之后,同一套思路可以部署很多东西:
- Nextcloud:自建私有云盘,文件同步、在线协作、日历联系人一应俱全。
- PhotoPrism / Immich:AI 识图的照片管理,能按人脸、地点、物体自动分类,是手机相册的绝佳替代。
- qBittorrent:挂机下载,配合自动化工具实现追剧自动入库。
- Vaultwarden:自建密码管理器,Bitwarden 的轻量级服务端实现。
小结
Docker 是把 NAS 从「存储器」变成「家庭服务器」的钥匙。入门只需要理解三件事:配置和数据要分开挂载、权限靠 UID/GID 对齐、升级改镜像版本号。剩下的就是照着 compose 文件抄,抄几次就熟了。