lsiodev/jellyfinJellyfin 是一个自由软件媒体系统,让您能够控制媒体的管理和流式传输。它是专有软件Emby和Plex的替代方案,可通过多个应用程序从专用服务器向终端用户设备提供媒体服务。Jellyfin源自Emby 3.5.2版本,移植到.NET Core框架以实现全跨平台支持。无附加条件、无高级许可或功能限制,也无隐藏议程:由团队协作构建更优质的媒体解决方案。
LinuxServer.io团队提供的此镜像具有以下特点:
该镜像利用Docker manifest实现多平台支持,拉取lscr.io/linuxserver/jellyfin:latest即可自动获取适合您架构的镜像,也可通过标签指定特定架构。
| 架构 | 支持情况 | 标签 |
|---|---|---|
| x86-64 | ✅ | amd64-<version tag> |
| arm64 | ✅ | arm64v8-<version tag> |
| armhf | ❌ |
| 标签 | 支持情况 | 描述 |
|---|---|---|
| latest | ✅ | Jellyfin稳定版本 |
| nightly | ✅ | Jellyfin夜间构建版本 |
Web界面可通过 http://<您的IP>:8096 访问。
更多信息请参考官方文档:Jellyfin快速入门
Intel Quicksync硬件加速用户需将/dev/dri视频设备挂载到容器中,运行或创建容器时添加以下参数:
bash--device=/dev/dri:/dev/dri
容器会自动确保内部abc用户具有访问该设备的适当权限。
如需启用基于OpenCL的DV、HDR10和HLG色调映射,请参考:OpenCL-Intel mod
Nvidia硬件加速用户需在主机上安装Nvidia提供的容器运行时,安装说明:nvidia-docker
容器会自动添加必要的环境变量以利用主机GPU的所有功能。安装nvidia-docker后,需使用nvidia容器运行时重新创建容器:
bash--runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all
(NVIDIA_VISIBLE_DEVICES也可设置为特定GPU的UUID,可通过nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv命令获取)
Raspberry Pi MMAL/OpenMAX硬件加速用户需挂载/dev/vcsm和/dev/vchiq视频设备及系统OpenMax库,运行或创建容器时添加以下参数:
bash--device=/dev/vcsm:/dev/vcsm --device=/dev/vchiq:/dev/vchiq -v /opt/vc/lib:/opt/vc/lib
Raspberry Pi V4L2硬件加速用户需挂载/dev/video1X设备,运行或创建容器时添加以下参数:
bash--device=/dev/video10:/dev/video10 --device=/dev/video11:/dev/video11 --device=/dev/video12:/dev/video12
yaml--- version: "2.1" services: jellyfin: image: lscr.io/linuxserver/jellyfin:latest container_name: jellyfin environment: - PUID=1000 # 用户ID - PGID=1000 # 组ID - TZ=Etc/UTC # 时区 - JELLYFIN_PublishedServerUrl=192.168.0.5 # 可选,自动发现响应的域名或IP volumes: - /path/to/library:/config # Jellyfin数据存储位置 - /path/to/tvseries:/data/tvshows # 电视节目媒体目录 - /path/to/movies:/data/movies # 电影媒体目录 ports: - 8096:8096 # HTTP WebUI - 8920:8920 # 可选,HTTPS WebUI(需自行配置证书) - 7359:7359/udp # 可选,本地网络客户端发现 - 1900:1900/udp # 可选,DNLA和客户端使用的服务发现 restart: unless-stopped
bashdocker run -d \ --name=jellyfin \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Etc/UTC \ -e JELLYFIN_PublishedServerUrl=192.168.0.5 `# 可选` \ -p 8096:8096 \ -p 8920:8920 `# 可选` \ -p 7359:7359/udp `# 可选` \ -p 1900:1900/udp `# 可选` \ -v /path/to/library:/config \ -v /path/to/tvseries:/data/tvshows \ -v /path/to/movies:/data/movies \ --restart unless-stopped \ lscr.io/linuxserver/jellyfin:latest
容器通过运行时参数配置,格式为<外部>:<内部>。
| 参数 | 功能 |
|---|---|
-p 8096 | HTTP WebUI访问端口 |
-p 8920 | 可选,HTTPS WebUI访问端口(需自行配置证书) |
-p 7359/udp | 可选,允许客户端在本地网络发现Jellyfin |
-p 1900/udp | 可选,DNLA和客户端使用的服务发现端口 |
| 参数 | 功能 |
|---|---|
-e PUID=1000 | 用户ID,详见下方用户/组ID说明 |
-e PGID=1000 | 组ID,详见下方用户/组ID说明 |
-e TZ=Etc/UTC | 指定时区,参考时区列表 |
-e JELLYFIN_PublishedServerUrl=192.168.0.5 | 设置自动发现响应的域名或IP地址 |
| 参数 | 功能 |
|---|---|
-v /config | Jellyfin数据存储位置,大型媒体库可能需要50GB以上空间 |
-v /data/tvshows | 媒体文件目录,可添加多个,如/data/movies、/data/music等 |
-v /data/movies | 媒体文件目录,可添加多个,如/data/movies、/data/tv等 |
可通过FILE__前缀从文件加载环境变量:
bash-e FILE__MYVAR=/run/secrets/mysecretvariable
上述命令会将MYVAR环境变量设置为/run/secrets/mysecretvariable文件的内容。
可通过-e UMASK=022覆盖容器内服务的默认umask设置。注意umask是权限减法而非加法,详情参考umask说明。
官方文档中提到的其他端口可用于自动发现:
1900/udp):客户端自动发现和DNLA功能所需,需在本地子网7359/udp):客户端发送"Who is Jellyfin Server?"广播获取服务器信息更多环境变量配置参考官方文档。
使用卷映射(-v)时,主机与容器可能出现权限问题。通过指定PUID和PGID可避免此问题,确保主机卷目录所有者与指定的用户/组ID一致。
通过以下命令获取当前用户的PUID和PGID:
bashid your_user
示例输出:
textuid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
可通过Docker Mods扩展容器功能:
容器内shell访问:
bashdocker exec -it jellyfin /bin/bash
实时查看容器日志:
bashdocker logs -f jellyfin
查看容器版本号:
bashdocker inspect -f '{{ index .Config.Labels "build_version" }}' jellyfin
查看镜像版本号:
bashdocker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/jellyfin:latest
大部分镜像为静态版本,需更新镜像并重建容器以更新应用。
更新镜像:
bash# 更新所有镜像 docker-compose pull # 仅更新jellyfin镜像 docker-compose pull jellyfin
更新容器:
bash# 更新所有容器 docker-compose up -d # 仅更新jellyfin容器 docker-compose up -d jellyfin
清理旧镜像:
bashdocker image prune
更新镜像:
bashdocker pull lscr.io/linuxserver/jellyfin:latest
停止并删除当前容器:
bashdocker stop jellyfin docker rm jellyfin
使用相同参数重建容器(配置存储在/config卷中,会保留设置)
仅在忘记原始参数时使用:
bashdocker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower \ --run-once jellyfin
如需本地修改或开发:
bashgit clone [***] cd docker-jellyfin docker build \ --no-cache \ --pull \ -t lscr.io/linuxserver/jellyfin:latest .
在x86_64硬件上构建ARM变体:
bashdocker run --rm --privileged multiarch/qemu-user-static:register --reset docker build -f Dockerfile.aarch64 -t lscr.io/linuxserver/jellyfin:arm64v8-latest .
bionic标签UMASK_SET,改用baseimage的UMASK/dev/vc-mem替换为/dev/vcsm/config下)


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务