部署时间:2026-09-19 设备:群晖 DS1019+(J3455 Intel 核显) NAS IP:192.168.0.51 Jellyfin 版本:12.1 访问地址:
http://192.168.0.xxx:8097
一、Jellyfin 是什么
Jellyfin 是免费开源的媒体服务器,可以把你 NAS 上的电影、电视剧、家庭录像整理成媒体库,在手机、电视、浏览器上随时观看。
二、最终使用的 docker-compose.yml
version: "3.8"
services:
jellyfin:
image: docker.m.daocloud.io/jellyfin/jellyfin:latest
container_name: jellyfin
restart: always
environment:
- TZ=Asia/Shanghai
# J3455 Intel核显硬件转码(DS1019+可用)
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
volumes:
- ./config:/config
- ./cache:/cache
- /volume2/video:/media
ports:
- "8097:8096"
配置说明
| 配置项 | 说明 |
|---|---|
image: docker.m.daocloud.io/... |
国内镜像加速源 |
devices |
Intel 核显硬件转码设备直通 |
./config:/config |
Jellyfin 配置和数据库 |
./cache:/cache |
转码/缩略图缓存 |
/volume2/video:/media |
媒体目录:宿主机 video 共享文件夹 → 容器内 /media |
8097:8096 |
访问端口(8097 是宿主机端口) |
三、目录结构
/volume1/docker/jellyfin/ ← 项目目录
├── docker-compose.yml
├── config/ ← 配置数据(必须先建好空文件夹)
└── cache/ ← 缓存数据(必须先建好空文件夹)
/volume2/video/ ← 你的视频文件夹(共享文件夹)
├── 2021.05.26/
├── 2021除夕/
├── family/
├── media/ ← 子文件夹里也有视频
│ ├── 2020安琪生日.mp4
│ ├── 2020年318琪琪生日.mp4
│ └── 朱传朋2019.mp4
├── 北戴河旅游视频/
├── 安琪012年生日/
├── 家庭录像2011年初三/
└── ...
注意:容器内的
/media= 宿主机的整个/volume2/video/,不是 video 下面的 media 子文件夹。
四、部署步骤
1. 准备目录
在 File Station 里先建好:
/volume1/docker/jellyfin/config/(空文件夹)/volume1/docker/jellyfin/cache/(空文件夹)
群晖必须手动建目录,否则 bind mount 报错。
2. Container Manager 创建项目
- Container Manager → 项目 → 新增
- 项目名称:
jellyfin - 路径选:
/docker/jellyfin(即/volume1/docker/jellyfin) - 选"使用 docker-compose.yml 手动编排"
- 粘贴上面的 compose 内容
- 完成,等待镜像拉取和容器启动
3. 初始设置
浏览器打开 http://192.168.0.xxx:8097:
- 选择语言
- 创建管理员账号密码
- 添加媒体库:
- 内容类型:电影 / 家庭视频等
- 文件夹路径:填
/media - 这是容器内路径,对应宿主机的
/volume2/video/
4. 扫描媒体库
仪表盘 → 点"扫描所有媒体库",等待进度条跑完。
五、挂载映射对照表
| 容器内路径 | 宿主机路径 | 作用 |
|---|---|---|
/config |
/volume1/docker/jellyfin/config |
Jellyfin 配置、数据库、用户设置 |
/cache |
/volume1/docker/jellyfin/cache |
转码缓存、缩略图缓存 |
/media |
/volume2/video |
媒体文件目录 |
/dev/dri/renderD128 |
同左 | Intel 核显硬件转码 |
/dev/dri/card0 |
同左 | Intel 核显硬件转码 |
想加其他视频目录? 在 compose 里加一行,例如:
- /volume1/mp4:/mp4重建项目后,Jellyfin 添加媒体库时就能选
/mp4路径。 没挂载的目录,Jellyfin 容器内根本看不到。
六、踩坑记录
坑 1:群晖报"无法找到此路径"
现象:在 Container Manager 图形界面里填宿主机路径 /volume2/video,报错"无法找到此路径。请确认路径有效并重试。"
原因:群晖 Container Manager 的图形界面不认手动输入的路径,只认通过浏览选择器选中的文件夹。
解决:不要在图形界面的存储表格里手填,直接在 docker-compose.yml 文本里写好路径,保存项目。
坑 2:改了 compose 不生效
现象:修改了 docker-compose.yml,加了 /volume2/video:/media 挂载,但 Jellyfin 还是扫不到文件。
原因:群晖 Container Manager 运行中的项目配置是只读的,改了文件不会自动重建容器。
解决:停止项目 → 删除项目 → 重新新建,粘贴同一份 compose。config 和 cache 文件夹在项目目录下,删项目不删数据。
坑 3:Jellyfin 显示 0 个项目(权限问题)
现象:容器启动正常,Web 界面能打开,添加媒体库路径填了 /media,但扫描结果为 0。
原因:compose 里写了 user: 1000:100,Jellyfin 以 UID 1000 运行,但群晖上 /volume2/video 共享文件夹不给这个用户读权限。
解决:删掉 user: 1000:100 这一行,让 Jellyfin 以默认 root 运行。root 能读 NAS 上所有文件夹。
坑 4:混淆容器内路径和宿主机路径
现象:搞不清 /media 到底是哪。
解释:
- 宿主机路径
/volume2/video:你在 File Station 里看到的 - 容器内路径
/media:Jellyfin 看到的 - Docker 把两者映射在一起,
/media就是/volume2/video - Jellyfin 里填媒体库路径填
/media,不是填/volume2/video
七、日常使用
- 看视频:浏览器打开
http://192.168.0.xxx:8097,或手机装 Jellyfin App - 加新视频:直接往 File Station 的
video文件夹里丢文件,然后在 Jellyfin 里点"扫描所有媒体库" - 加新目录:改 compose 加挂载 → 删项目重建 → Jellyfin 里添加新媒体库
- 备份:定期备份
/volume1/docker/jellyfin/config/目录(包含所有设置和用户)
八、访问方式
| 场景 | 地址 |
|---|---|
| 内网 Web 访问 | http://192.168.0.xxx:8097 |
| 手机/平板 App | Jellyfin 官方 App,填服务器地址同上 |
| 外网访问 | 需配反向代理 + 端口映射(参考 Vaultwarden 的 HTTPS 方案) |