Docker 一键部署 Jellyfin:快速搭建私有化媒体服务器
2026/9/19Docker部署教程轩辕镜像团队33 分钟阅读

Docker 一键部署 Jellyfin:快速搭建私有化媒体服务器

Jellyfin 是开源免费的媒体服务器,可集中管理电影、剧集、音乐与相册,并在手机、电视、浏览器上流式播放。本文将介绍如何通过 Docker Compose 部署社区硬件加速构建 nyanmisaka/jellyfin,用轩辕镜像加速拉取,适合家庭影音库、NAS 自托管与内网观影等场景。

本文使用的 Docker 镜像

本文基于 nyanmisaka/jellyfin:260326-amd64,实测引擎 Jellyfin 10.10.7(FFmpeg 7.1.3,构建 260326),测试平台 Ubuntu 24.04 Linux。

硬盘里电影、剧集、演唱会录像越堆越多:有人按文件夹用播放器硬翻;有人把库丢进网盘,流量与审核都不可控;客厅电视直连 SMB,4K HEVC / HDR 一开就卡成幻灯片——CPU 软解把整机拖死,风扇狂转,画面还在转圈缓冲。手机想接着看刚才的进度,各端进度条又对不上。

商业流媒体或第三方「私人影院」云,又会碰到账号共享、片源合规和数据出域:自家硬盘上的蓝光拆包、家庭录像、演唱会录屏,本来就该留在内网。很多家里已经有一台跑 Docker 的 Ubuntu 或 NAS,缺的是:服务能拉起来、片库挂进去、浏览器打开就能建库扫库;需要转码时再把核显 / 独显塞进容器做硬解

Jellyfin官网容器文档)是开源、无订阅的媒体服务器:管理本地音视频与图片,向浏览器、手机 App、智能电视客户端串流,必要时服务端转码。本文用的 nyanmisaka/jellyfin镜像页)是维护者 nyanmisaka 的硬件加速向构建,集成较新的 Jellyfin-FFmpeg,强化 Intel / AMD / NVIDIA / Rockchip 硬解硬编与 HDR 色调映射。挂载约定与官方容器一致:/config/cache、媒体目录;Web 默认 8096

部署跑通之后,你实际能做这些事:

场景部署后怎么用
打开向导http://服务器IP:8096,创建管理员并添加媒体库
扫片开播片库挂进 /media,库内点播或用官方客户端
硬件转码(可选)/dev/dri 或 NVIDIA 设备后,在控制台启用硬解
备份搬家停容器后打包宿主机 ./config

轩辕镜像 加速拉取 nyanmisaka/jellyfin:260326-amd64Docker Compose 启动。把下文 IP、片库路径换成你的。无 Compose 见第八节。文内 14 张截图为界面跟做参考;片库请挂真实视频目录,向导文件夹选 /media(勿选 /)。

上手要点

  • 主路径:第四节 Compose;备选 docker run 见第八节
  • 端口:宿主机 8096 → 容器 8096;可选 UDP 7359(局域网发现)
  • 标签:跟做 260326-amd64;arm64 用 260326-arm64;勿写 latest
  • 体积:DISK 2.01GB / CONTENT 603MB(amd64)
  • 挂载./config/config./cache/cache;片库把宿主机真实目录挂到 /media(示例 ./media,生产改成 NAS / 磁盘路径)
  • 账号:无预置密码;向导里自建管理员
  • 启动标志Jellyfin version: 10.10.7Kestrel is listeningStartup complete
  • 目录:Linux /www/wwwroot/jellyfin;macOS ~/docker/jellyfin
  • 硬解:默认不挂 GPU;需要时见第六节

官方:容器安装 · 镜像页 · 标签列表 · Docker Hub · 维护者


一、nyanmisaka/jellyfin 是什么?

nyanmisaka/jellyfin 跑的是 Jellyfin 服务端:配置与用户数据在 /config,转码与缩略图缓存在 /cache,电影 / 剧集 / 音乐通过绑定挂载进入容器,浏览器或客户端连 8096。相对官方 jellyfin/jellyfin,本镜像更侧重硬解管线与较新 FFmpeg(VA-API / QSV / NVENC、HDR / DoVi、Rockchip 等),适合已有核显或独显、想减轻 CPU 软解压力的家庭与 NAS 场景。

nyanmisaka/jellyfin(本文)jellyfin/jellyfinlinuxserver/jellyfin
定位社区硬件加速构建官方稳定构建LinuxServer 维护版
标签日期 + 架构(如 260326-amd64语义化版本号语义化 / latest
硬解构建与文档偏硬解 / HDR官方通用支持常用 /dev/dri + PUID
适合要新 FFmpeg / 硬解特性跟官方发版节奏习惯 LSIO 环境变量
text
浏览器 / 客户端 ──HTTP:8096──▶  nyanmisaka/jellyfin
                                  ├── /config  ← ./config(库、用户、插件)
                                  ├── /cache   ← ./cache(转码与缩略图)
                                  └── /media   ← 宿主机片库(建议只读)

同站还有官方 jellyfin/jellyfinlinuxserver/jellyfin 等,本文只跟做 nyanmisaka/jellyfin:260326-amd64。详情页 /r//zh/r/ 为同一镜像的不同语言路径。

1.1 标签怎么理解

标签线说明
YYMMDD-amd64 / YYMMDD-arm64按构建日 + 架构;跟做主路径
latest浮动主线(多为 amd64);勿写入跟做命令
latest-rockchipRK3588 完整硬解(RKMPP/RGA),仅 arm64
*-testing测试构建;生产勿跟

维护者说明:latest 线用 Jellyfin-FFmpeg 7.x 与较新 Intel Compute-Runtime;latest-rockchip 专为 RK3588。


二、环境要求

项目建议
系统Linux(建议 Ubuntu 24.04);也可 Docker Desktop
DockerEngine + Compose V2(建议 ≥ 20.10)
架构跟做 amd64;arm64 换对应标签
内存可用 ≥ 2 GB(转码时宜更宽裕)
磁盘镜像层约 2 GB,另加片库与 /cache 增长空间
端口宿主机 8096/tcp;可选 7359/udp
工作目录/www/wwwroot/jellyfin
硬解(可选)Intel/AMD:/dev/dri;NVIDIA:主机驱动 + 容器 GPU
bash
docker --version
docker compose version

Linux 未装 Docker 可使用轩辕镜像一键安装脚本:

bash
bash <(wget -qO- https://get.xuanyuan.cloud/docker.sh)

备用地址:

bash
bash <(wget -qO- https://get.xuanyuan.me/docker.sh)

更多见 轩辕镜像使用手册


三、拉取镜像

3.1 标签怎么选

该镜像以 YYMMDD-架构 命名,不是官方镜像那种 10.10.7 语义化标签;选标签必须带架构后缀。

标签说明是否跟做
260326-amd64较新的非 testing 日期构建(amd64)推荐(本文)
260326-arm64同上,arm64arm64 机器改用
251212-amd64更早日期线可回滚
*-testing测试线仅尝鲜
latest浮动勿写入跟做命令
latest-rockchipRK3588仅 Rockchip arm64

完整列表见 轩辕标签列表 / Docker Hub Tags。升级时改 Compose 中的标签并核对维护者说明。

3.2 用轩辕镜像加速拉取

bash
docker pull docker.xuanyuan.run/nyanmisaka/jellyfin:260326-amd64

Ubuntu 24.04 实测(amd64):

text
260326-amd64: Pulling from nyanmisaka/jellyfin
6db0909c4473: Pull complete
810f0c947b06: Pull complete
8321119095ee: Pull complete
0d0a5e6f4b4c: Pull complete
4f4fb700ef54: Pull complete
7142f09dab97: Pull complete
40fd9dd30eba: Pull complete
921ddec2e740: Pull complete
Digest: sha256:31235bcd44f30bad797c2c9ee989cf4fe928919008bbc9b98938ea346372a282
Status: Downloaded newer image for docker.xuanyuan.run/nyanmisaka/jellyfin:260326-amd64
docker.xuanyuan.run/nyanmisaka/jellyfin:260326-amd64
bash
docker images docker.xuanyuan.run/nyanmisaka/jellyfin:260326-amd64
text
IMAGE                                                  ID             DISK USAGE   CONTENT SIZE   EXTRA
docker.xuanyuan.run/nyanmisaka/jellyfin:260326-amd64   31235bcd44f3       2.01GB          603MB

arm64 改拉(同环境实测 Digest:sha256:91c01c7e74a8e803593ead9972bf72842325bef36d6f07dcdbc33da331d652b8):

bash
docker pull docker.xuanyuan.run/nyanmisaka/jellyfin:260326-arm64

四、Docker Compose 部署(推荐)

4.1 准备目录

bash
sudo mkdir -p /www/wwwroot/jellyfin/{config,cache,media}
sudo chown -R "$(id -u):$(id -g)" /www/wwwroot/jellyfin
cd /www/wwwroot/jellyfin
# macOS:mkdir -p ~/docker/jellyfin/{config,cache,media} && cd ~/docker/jellyfin
宿主机路径容器内路径用途
./config/config必挂:数据库、用户、插件、库元数据(务必备份)
./cache/cache必挂:转码临时文件与图片缓存(可清空重建)
./media 或真实盘符/media片库;生产请改成你的 NAS / 磁盘路径,建议 :ro

把电影 / 剧集放进宿主机片库目录,或把 Compose 里的 ./media 改成例如 /mnt/nas/movies。向导里选的永远是容器内路径 /media,不是宿主机路径。

4.2 写入 compose.yaml

bash
cd /www/wwwroot/jellyfin

cat > compose.yaml <<'EOF'
services:
  jellyfin:
    image: docker.xuanyuan.run/nyanmisaka/jellyfin:260326-amd64
    container_name: jellyfin
    # 可选:与宿主机用户一致,避免 /config 权限问题
    # user: "1000:1000"
    ports:
      - "8096:8096/tcp"
      - "7359:7359/udp"
    volumes:
      - ./config:/config
      - ./cache:/cache
      # 生产示例:- /mnt/nas/movies:/media:ro
      - ./media:/media:ro
    environment:
      - TZ=Asia/Shanghai
      # 可选:- JELLYFIN_PublishedServerUrl=http://192.168.1.10:8096
    restart: unless-stopped
    # 硬解见第六节;默认注释
    # group_add:
    #   - "44"   # getent group render
    # devices:
    #   - /dev/dri:/dev/dri
EOF
说明
imagedocker.xuanyuan.run/nyanmisaka/jellyfin:260326-amd64
ports8096 Web;7359/udp 局域网发现(不需要可删)
volumes/config/cache 必挂;片库按实际路径改左边
:ro片库只读,降低误写;若需就地改文件名再去掉
user非 root 运行时,先保证宿主机目录属主匹配

4.3 启动并验证

bash
docker compose up -d
docker compose ps
docker compose logs -f jellyfin

Ubuntu 24.04 实测:

text
[+] up 2/2
 ✔ Network jellyfin_default Created
 ✔ Container jellyfin       Started

NAME       IMAGE                                                  COMMAND                SERVICE    CREATED         STATUS                            PORTS
jellyfin   docker.xuanyuan.run/nyanmisaka/jellyfin:260326-amd64   "/jellyfin/jellyfin"   jellyfin   4 seconds ago   Up 2 seconds (health: starting)   0.0.0.0:7359->7359/udp, [::]:7359->7359/udp, 0.0.0.0:8096->8096/tcp, [::]:8096->8096/tcp

日志关键成功标志(首次安装会跑迁移,稍等):

text
[INF] Main: Jellyfin version: 10.10.7
[INF] Main: Operating system: Debian GNU/Linux 12 (bookworm)
[INF] Main: Architecture: X64
[INF] Emby.Server.Implementations.ApplicationHost: EFCore migrations applied successfully
[INF] Main: Kestrel is listening on 0.0.0.0
[INF] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Found ffmpeg version 7.1.3
[INF] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: Available hwaccel types: ["cuda", "vaapi", "qsv", "drm", "opencl", "vulkan"]
[INF] Emby.Server.Implementations.ApplicationHost: Core startup complete
[INF] Main: Startup complete 0:00:28.4731725

本机探测(302web/ 即正常):

bash
curl -I http://127.0.0.1:8096
text
HTTP/1.1 302 Found
Server: Kestrel
Location: web/

浏览器打开 http://服务器IP:8096(实测机为 http://192.168.1.35:8096)。


五、浏览器初始化

下列截图为实测界面跟做参考(示例库类型是「音乐视频」)。正式环境请挂载真实视频目录,内容类型选电影 / 剧集等;文件夹只选 /media不要选容器根 /

5.1 欢迎页与语言

打开地址进入首次向导。首选显示语言可改为中文,再点 下一个

5.2 创建管理员

填写管理员用户名与密码(无默认账号;生产用强密码。实测示例用户名为 root)。

5.3 添加媒体库

进入「设置你的媒体库」,点 添加媒体库

弹窗里选内容类型(截图示例为「音乐视频」;你可改为电影 / 剧集),再点文件夹旁的 +

目录树里会出现容器内的 binconfigmedia 等。请点进 media(即 /media)再确认——不要把库建在 / 上,否则会扫到 /dev/proc,日志刷屏报错。

若库卡片上已显示路径 /,说明选错了,删掉该库或改文件夹为 /media

5.4 元数据语言与远程访问

元数据语言可选 Chinese;国家/地区按需。

局域网试用可勾选「允许远程连接」;自动端口映射(UPnP) 公网慎开,建议反代或 VPN。

5.5 完成并向导后登录

完成,再用管理员账号登录。

5.6 首页与控制台

「我的媒体」会出现库卡片;有真实片源并完成扫描后才会有海报与条目。

右上角头像 → 设置控制台,可管库、看任务与版本。

控制台应显示服务器 10.10.7、构建 260326(与跟做标签一致)。可点 扫描所有媒体库 看进度。

客户端见 Jellyfin 下载页;局域网也可用浏览器。


六、硬件加速(可选)

默认 Compose 挂 GPU。客户端能直通播放时,不必开硬解。出现这些情况再开:远端弱网要降码率、多设备同时转码、字幕烧录、不支持的封装要服务端转码等。

6.1 Intel / AMD(VA-API / QSV)

  1. 确认设备:ls -l /dev/dri
  2. 查 render 组 GID:getent group render
  3. 在 Compose 中取消注释 group_adddevices(GID 换成你的)
  4. docker compose up -d 后,打开 控制台 → 播放 → 转码,启用对应硬件加速并保存

6.2 NVIDIA

宿主机需专有驱动,并按 NVIDIA Container Toolkit 配置。Compose 可增加(按你的 Docker / Compose 版本调整):

yaml
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

在播放设置里选 NVIDIA NVENC 相关选项。驱动过旧可能导致硬编不可用。

6.3 Rockchip RK3588

改用 latest-rockchip(arm64),并按板卡文档挂载 MPP / RGA 设备;勿与本文 amd64 主路径混用标签。

实测日志里已能看到 FFmpeg 7.1.3hwaccel 类型列表(cuda / vaapi / qsv 等),但未挂设备前控制台里启用硬解不会真正生效。


七、日常运维

bash
cd /www/wwwroot/jellyfin

docker compose ps
docker compose logs -f jellyfin

# 换新日期标签:先改 compose.yaml 的 image,再:
docker compose pull
docker compose up -d

docker compose down   # 不删 ./config
目录备份策略
./config必备份(用户、库元数据、插件)
./cache可不备份,可删后重建
片库宿主机路径按你的磁盘 / NAS 策略备份,与容器无关

生产建议:反代 HTTPS、限制公网裸暴露、定期备份 config;需要公网访问时设置 JELLYFIN_PublishedServerUrl 与防火墙。


八、备选:docker run(临时 / 无 Compose)

bash
mkdir -p /www/wwwroot/jellyfin/{config,cache,media}
cd /www/wwwroot/jellyfin

docker run -d \
  --name jellyfin \
  -p 8096:8096/tcp \
  -p 7359:7359/udp \
  -e TZ=Asia/Shanghai \
  -v /www/wwwroot/jellyfin/config:/config \
  -v /www/wwwroot/jellyfin/cache:/cache \
  -v /www/wwwroot/jellyfin/media:/media:ro \
  --restart unless-stopped \
  docker.xuanyuan.run/nyanmisaka/jellyfin:260326-amd64

硬解(Intel/AMD,按需追加到命令中):

bash
  --group-add 44 \
  --device /dev/dri:/dev/dri \

查看日志:docker logs -f jellyfin。长期运行请改回第四节 Compose。


九、常见问题 FAQ

Q1:为什么不用 latest
会静默漂移。跟做固定 260326-amd64,升级时显式改标签。

Q2:为什么标签要写 amd64 / arm64
该镜像按架构分标签。架构选错会出现 no matching manifest

Q3:和官方 jellyfin/jellyfinlinuxserver/jellyfin 怎么选?
跟官方发版节奏 → 官方镜像;习惯 LSIO 的 PUID/PGID → linuxserver;要本构建的硬解 / FFmpeg → nyanmisaka(本文)。

Q4:日志狂刷 /dev /proc,或库路径显示为 /
向导里误选了容器根。删掉该媒体库,只加 /media,并把宿主机真实视频目录挂上去。选文件夹时点进目录树里的 media,不要停在 /

Q5:首页没有电影海报?
截图示例库是空的或类型为「音乐视频」。放入真实影片、内容类型选对,再到控制台扫描。

Q6:/config 权限报错?
user: "UID:GID" 对齐属主,或先 chown 数据目录。

Q7:直通流畅,一转码就卡?
直通几乎不吃 CPU;转码要软解或硬解。检查是否挂了设备、是否在控制台启用了对应加速、客户端是否强制转码。

Q8:必须映射 7359 吗?
不必。只影响部分客户端的局域网自动发现;可手动填 http://IP:8096

Q9:宿主机端口能改吗?
可以,例如 "18096:8096"。客户端与 JELLYFIN_PublishedServerUrl 写新端口。

Q10:Rockchip 能跟做 260326-amd64 吗?
不能。用 latest-rockchip(arm64)并按板卡挂设备。

Q11:删容器会丢片吗?
用户与库在 ./config;片文件在宿主机挂载目录。compose down 不删目录则都在。

Q12:日志有 WebRootPath was not found: /wwwroot
实测首次启动可能出现,不影响 Web。以 Startup completecurl -I :8096 返回 302 为准。

Q13:片库挂了 :ro,还能「把图像保存到媒体文件夹」吗?
只读挂载下不能往片库写 NFO / 封面。需要就地写回时去掉 :ro,或关掉该项、让元数据只进 /config


十、命令速查

bash
# 拉取
docker pull docker.xuanyuan.run/nyanmisaka/jellyfin:260326-amd64

# Compose(主路径)
cd /www/wwwroot/jellyfin
docker compose up -d
docker compose ps
docker compose logs -f jellyfin
docker compose down

# 备选 run
docker run -d --name jellyfin \
  -p 8096:8096/tcp -p 7359:7359/udp \
  -v /www/wwwroot/jellyfin/config:/config \
  -v /www/wwwroot/jellyfin/cache:/cache \
  -v /www/wwwroot/jellyfin/media:/media:ro \
  --restart unless-stopped \
  docker.xuanyuan.run/nyanmisaka/jellyfin:260326-amd64

验证:http://服务器IP:8096 · 跟做:260326-amd64 · 实测 10.10.7 / FFmpeg 7.1.3


十一、延伸阅读


总结

  • Compose 固定 260326-amd64,挂 /config/cache、真实片库→/media,打开 :8096 完成向导。
  • 实测 Jellyfin 10.10.7(构建 260326)、FFmpeg 7.1.3;媒体库勿选容器根 /
  • 硬解按需挂设备;标签带架构后缀,勿写 latest
  • 备份优先 ./config

阅读原文

评论交流

加载中

免责声明

本博客文章所提供的内容、技术方案、配置示例及部署指南等信息,仅供学习交流和技术参考使用。文章内容基于发布时的技术环境和版本信息编写,可能因时间推移、技术更新或环境差异而存在不适用的情况。

用户在参考本博客内容进行部署操作前,应当充分了解相关技术风险,并建议在测试环境中进行充分验证和测试,确认无误后再考虑在生产环境中使用。生产环境部署前,请务必进行数据备份,并制定相应的回滚方案。

用户因使用本博客内容进行部署操作而产生的任何损失、数据丢失、系统故障、安全风险或其他问题,均由用户自行承担全部责任。轩辕镜像官方不对因使用本博客内容而产生的任何直接或间接损失承担责任。

本免责声明的最终解释权归轩辕镜像官方所有。

最后更新:2026/9/20
专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载在线技术支持99.95% SLA 保障付费会员免广告