Jellyfin
约 1963 字大约 7 分钟
2026-08-24
在 Proxmox VE 的 LXC 容器中部署 Jellyfin 媒体服务器,实现家庭影音库的统一管理和多设备播放。
背景与动机
Jellyfin 是一款完全开源免费的媒体服务器软件,功能类似 Emby 和 Plex,但无需订阅费用。通过 Jellyfin,你可以将本地存储的电影、电视剧、音乐集中管理,并在电视、手机、平板等设备上流畅播放。
为什么选择 LXC 部署 Jellyfin
LXC 容器相比虚拟机有显著优势:
- 硬件直通更简单:无需复杂的 GPU 透传配置,直接访问宿主机设备
- 资源占用低:共享内核,空闲时仅占用约 300MB 内存
- 存储访问直接:可以直接挂载宿主机目录,无需虚拟磁盘
- 迁移和备份方便:容器快照秒级完成
适用场景
- 家庭影音库搭建
- NAS 媒体中心
- 支持硬件解码(Intel QuickSync / NVIDIA)
- 多用户多设备同时访问
前置条件
在开始之前,确保你已准备好:
- 已安装 Proxmox VE 8.0 或更高版本
- 准备好媒体文件存储位置(本地磁盘或 NFS 共享)
- 如需硬件解码:Intel 核显(6 代以上)或 NVIDIA 独显
- 一个干净的 LXC 容器(推荐 Debian 12 或 Ubuntu 22.04)
步骤一:创建特权 LXC 容器
Jellyfin 需要访问硬件设备进行解码,建议使用特权容器。
下载模板
在 PVE Shell 中执行:
pveam update
pveam available --section system | grep debian选择 Debian 12 模板下载:
pveam download local debian-12-standard_12.7-1_amd64.tar.zst创建容器
- 在 PVE Web 界面点击右上角「Create CT」
- 填写基本信息:
| 选项 | 推荐值 |
|---|---|
| Node | 选择你的 PVE 节点 |
| CT ID | 如 100(自定义数字) |
| Hostname | jellyfin |
| Password | 设置 root 密码 |
| Template | 选择刚下载的 debian-12 模板 |
- 配置硬件资源:
| 资源 | 推荐配置 |
|---|---|
| CPU | 2-4 核心(需硬件解码时至少 2 核) |
| Memory | 2048-4096 MB(转码时需要更多) |
| Swap | 512 MB |
| Root Disk | 8-16 GB(系统用,媒体文件另挂载) |
- 网络配置保持默认(桥接 vmbr0)
- 关键设置:在「Options」中勾选「Unprivileged container」设为否(即特权容器)
启用嵌套虚拟化
在 PVE Shell 中编辑容器配置:
nano /etc/pve/lxc/100.conf添加以下内容:
features: nesting=1,keyctl=1保存后启动容器:
pct start 100步骤二:配置容器环境
进入容器:
pct enter 100更新系统
apt update && apt upgrade -y安装基础工具
apt install -y curl wget gnupg2 apt-transport-https lsb-release ca-certificates步骤三:安装 Jellyfin
添加 Jellyfin 软件源
# 安装 GPG 密钥
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /usr/share/keyrings/jellyfin.gpg
# 添加软件源
cat <<EOF > /etc/apt/sources.list.d/jellyfin.list
deb [signed-by=/usr/share/keyrings/jellyfin.gpg] https://repo.jellyfin.org/debian $(lsb_release -cs) main
EOF安装 Jellyfin
apt update
apt install -y jellyfin安装完成后,Jellyfin 服务会自动启动:
systemctl status jellyfin步骤四:配置硬件加速(可选但推荐)
如果你有 Intel 核显或 NVIDIA 显卡,可以启用硬件解码大幅降低 CPU 占用。
Intel 核显加速
在 PVE Shell 中编辑容器配置:
nano /etc/pve/lxc/100.conf添加设备直通:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir重启容器后,进入容器验证:
pct enter 100
ls -la /dev/dri/输出应包含 renderD128 设备。
安装 Intel 驱动:
apt install -y intel-gpu-tools vainfo验证硬件解码支持:
vainfo如果看到 VAProfileH264Main 等输出,说明硬件解码可用。
NVIDIA 显卡加速
需要额外安装 NVIDIA Container Toolkit,步骤较复杂,这里仅提供思路:
- 在 PVE 宿主机安装 NVIDIA 驱动
- 在容器中添加 NVIDIA 设备直通
- 在 Jellyfin 中配置 NVENC 解码
步骤五:挂载媒体目录
Jellyfin 需要访问你的媒体文件。假设媒体存储在 PVE 宿主机的 /mnt/media 目录。
在容器中创建挂载点
pct enter 100
mkdir -p /mnt/media配置绑定挂载
退出容器,在 PVE Shell 中编辑容器配置:
nano /etc/pve/lxc/100.conf添加挂载配置:
mp0: /mnt/media,mp=/mnt/media如果是 NFS 共享存储:
mp0: /mnt/nfs/media,mp=/mnt/media重启容器使挂载生效:
pct stop 100
pct start 100验证挂载:
pct enter 100
ls /mnt/media步骤六:初始化 Jellyfin
访问 Web 界面
在浏览器中打开:
http://容器IP:8096初始化向导
按提示完成以下步骤:
- 选择语言:简体中文
- 创建用户:设置管理员账号密码
- 添加媒体库:
- 点击「添加媒体库」
- 选择内容类型(电影、剧集、音乐等)
- 设置文件夹路径(如
/mnt/media/movies) - 选择元数据语言(中文)
- 元数据设置:建议勾选「保存图片到媒体文件夹」
- 远程访问:保持默认启用
配置硬件解码
登录 Jellyfin 后:
- 进入「控制台」→「播放」
- 在「硬件加速」中选择:
- Intel 核显:
Video Acceleration API (VAAPI) - NVIDIA:
NVIDIA NVENC
- Intel 核显:
- 勾选支持的解码格式(H.264、HEVC、VP9 等)
- 点击保存
步骤七:优化配置
内存优化
编辑 Jellyfin 服务配置:
nano /etc/systemd/system/jellyfin.service.d/override.conf添加内存限制(可选):
[Service]
MemoryMax=2G日志轮转
Jellyfin 日志会逐渐增大,配置日志轮转:
cat <<EOF > /etc/logrotate.d/jellyfin
/var/log/jellyfin/*.log {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
create 0644 jellyfin jellyfin
}
EOF开机自启
确保 Jellyfin 随容器启动:
systemctl enable jellyfin常见问题与解决方案
问题一:无法访问媒体文件
现象:Jellyfin 提示「路径不存在」或「无访问权限」
原因:挂载点权限不正确
解决方案:在容器中修改目录权限:
chown -R jellyfin:jellyfin /mnt/media
chmod -R 755 /mnt/media或在 PVE Shell 中,编辑挂载配置添加 uid/gid 映射:
mp0: /mnt/media,mp=/mnt/media,uid=1000,gid=1000问题二:硬件解码不生效
现象:播放时 CPU 占用仍然很高
原因:设备直通配置错误或驱动缺失
解决方案:
- 确认
/dev/dri/renderD128存在且可访问 - 运行
vainfo验证驱动支持 - 在 Jellyfin 日志中查看解码器初始化信息
问题三:字幕显示乱码
现象:中文字幕显示为方块或乱码
原因:容器缺少中文字体
解决方案:
apt install -y fonts-noto-cjk fonts-wqy-microhei
fc-cache -fv然后重启 Jellyfin:
systemctl restart jellyfin问题四:外网无法访问
现象:局域网可访问,外网无法连接
原因:防火墙或端口映射问题
解决方案:
- 在 PVE 防火墙中放行 8096 端口
- 如有路由器,配置端口转发或使用 Tailscale/ZeroTrust
问题五:转码文件夹过大
现象:/var/cache/jellyfin/transcodes 占用大量空间
原因:转码缓存未清理
解决方案:定期清理或更改转码路径:
# 手动清理
rm -rf /var/cache/jellyfin/transcodes/*
# 或在 Jellyfin 控制台设置转码路径到更大的存储安全建议
- 使用反向代理:通过 Nginx 或 Caddy 配置 HTTPS 访问
- 限制外网访问:配合 Tailscale 或 Cloudflare Tunnel 使用
- 定期备份:备份
/var/lib/jellyfin/config目录 - 更新频率:每月检查 Jellyfin 更新,安全补丁及时安装
- 用户权限:为家人创建普通用户,避免共享管理员账号
总结
本文介绍了在 Proxmox VE 的 LXC 容器中部署 Jellyfin 媒体服务器的完整流程:
- 特权容器是硬件加速的前提条件
- 挂载媒体目录使用 bind mount 或 NFS
- Intel 核显可轻松实现硬件解码,大幅降低 CPU 占用
- 字体和权限问题是常见坑点,提前处理可省不少时间
通过 Jellyfin,你可以搭建属于自己的家庭影音中心,享受无广告、无订阅的多媒体体验。
