部署时间: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 创建项目

  1. Container Manager → 项目 → 新增
  2. 项目名称:jellyfin
  3. 路径选:/docker/jellyfin(即 /volume1/docker/jellyfin
  4. 选"使用 docker-compose.yml 手动编排"
  5. 粘贴上面的 compose 内容
  6. 完成,等待镜像拉取和容器启动

3. 初始设置

浏览器打开 http://192.168.0.xxx:8097

  1. 选择语言
  2. 创建管理员账号密码
  3. 添加媒体库
    • 内容类型:电影 / 家庭视频等
    • 文件夹路径:填 /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。configcache 文件夹在项目目录下,删项目不删数据。

坑 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 方案)