使用 Docker 部署 Jellyfin 媒体服务器:打造个人 Netflix(2026版)
Jellyfin 是一款完全免费、开源的媒体服务器软件,让您可以在自己的服务器上搭建个人流媒体平台。与 Plex 和 Emby 不同,Jellyfin 没有任何付费限制,所有功能完全开放,包括硬件转码、多用户支持、移动端应用等。本教程将带您从零开始,通过 Docker 部署 Jellyfin,打造属于您自己的"Netflix"。
目录
1. 什么是 Jellyfin?
1.1 Jellyfin 简介
Jellyfin 是 Emby 3.5.2 版本的开源分支,于 2018 年正式发布。由于 Emby 转向闭源并引入付费功能,社区开发者决定创建一个完全开源、免费的替代品,这就是 Jellyfin 的由来。
核心特点:
- 🆓 完全免费:无任何付费功能或订阅
- 🔓 开源透明:代码完全公开,可审计
- 🎬 媒体管理:自动整理电影、剧集、音乐
- 📺 多客户端:Web、iOS、Android、智能电视
- ⚡ 硬件转码:支持 GPU 加速转码
- 👥 多用户支持:独立账户和观看历史
- 🌐 远程访问:随时随地访问媒体库
- 🔒 隐私保护:数据完全掌控在自己手中
1.2 与其他媒体服务器对比
| 特性 | Jellyfin | Plex | Emby | Kodi |
|---|---|---|---|---|
| 价格 | 🆓 完全免费 | 💰 部分付费 | 💰 部分付费 | 🆓 免费 |
| 开源 | ✅ 完全开源 | ❌ 闭源 | ❌ 闭源 | ✅ 开源 |
| 硬件转码 | ✅ 免费 | 💰 Plex Pass | 💰 Emby Premiere | ⚠️ 需插件 |
| 移动端 App | ✅ 免费 | 💰 Plex Pass | 💰 付费 | ✅ 免费 |
| 离线下载 | ✅ 免费 | 💰 Plex Pass | 💰 付费 | N/A |
| ** DVR 录制** | ✅ 免费 | 💰 Plex Pass | 💰 付费 | ⚠️ 需插件 |
| 多服务器 | ✅ 免费 | 💰 Plex Pass | 💰 付费 | N/A |
| 社区支持 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 易用性 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 自定义性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
选择建议:
- 🎯 追求免费和开源 → Jellyfin
- 📱 需要最佳用户体验 → Plex
- ⚖️ 折中方案 → Emby
- 🖥️ 本地播放为主 → Kodi
1.3 发展历程
| 时间 | 事件 |
|---|---|
| 2018.12 | Jellyfin 项目启动 |
| 2019.02 | 首个稳定版本发布 |
| 2020.07 | 10.0 版本,重大改进 |
| 2021.03 | 移动端 App 发布 |
| 2022.01 | 硬件转码完善 |
| 2023.06 | 10.8 版本,UI 重构 |
| 2024.11 | 10.9 版本,性能提升 |
| 2025.05 | 10.10 版本,AI 元数据 |
| 2026.01 | 持续更新,社区活跃 |
2. 为什么选择 Jellyfin?
2.1 核心优势
优势一:完全免费,无隐藏费用
Plex/Emby 的付费墙:
Plex Pass ($119.99 终身或 $4.99/月):
❌ 硬件转码
❌ 移动同步
❌ DVR 录制
❌ 高级音乐功能
Emby Premiere ($54/年或 $119 终身):
❌ 硬件转码
❌ 离线下载
❌ 直播电视
❌ 家长控制增强Jellyfin:
✅ 所有功能完全免费
✅ 无订阅费用
✅ 无功能限制
✅ 社区驱动开发实际节省:
假设使用 5 年:
Plex Pass 终身:$119.99
Emby Premiere 5年:$270
Jellyfin:$0
节省:$120-270优势二:隐私和数据主权
云端服务的问题:
Plex/Emby:
❌ 需要连接到官方服务器
❌ 元数据请求经过第三方
❌ 观看习惯被追踪
❌ 可能收集使用数据Jellyfin 的本地优先:
✅ 完全本地运行
✅ 无需外部服务器
✅ 数据完全私有
✅ 可选择性启用元数据
✅ 可离线使用隐私保护:
# Jellyfin 可以完全断网运行
# 只需内网即可访问
# 不依赖任何云服务优势三:强大的硬件转码
什么是转码:
原始视频格式 → 实时转换 → 兼容格式
例如:
4K HEVC → 1080p H.264
(用于不支持原格式的设备)硬件转码优势:
CPU 软解:
- 占用大量 CPU
- 功耗高
- 可能卡顿
GPU 硬解:
- 占用极少 CPU
- 功耗低
- 流畅播放
- 支持多路并发支持的硬件:
✅ Intel Quick Sync (核显)
✅ NVIDIA NVENC/NVDEC
✅ AMD VCE/VCN
✅ ARM Mali (部分设备)
✅ Raspberry Pi (部分型号)性能对比:
| 硬件 | 并发转码数 | 功耗 |
|---|---|---|
| Intel i5 (核显) | 3-5 路 | 15W |
| NVIDIA GTX 1650 | 5-8 路 | 75W |
| AMD RX 5500 | 4-6 路 | 100W |
| CPU 软解 (i7) | 1-2 路 | 65W |
优势四:活跃的社区和插件生态
官方插件:
📚 元数据提供者
🎵 音乐歌词
📺 直播电视集成
🔤 字幕下载
🎨 主题定制
📊 统计分析社区贡献:
GitHub Stars: 30,000+
Contributors: 500+
Releases: 定期更新
Issues: 快速响应文档资源:
✅ 官方文档完善
✅ 社区教程丰富
✅ YouTube 视频众多
✅ 论坛活跃2.2 适用场景
场景 1:家庭媒体中心
需求:
- 存储家庭照片和视频
- 共享电影和剧集
- 多设备同时观看
- 儿童内容管理Jellyfin 方案:
✅ 集中存储所有媒体
✅ 自动整理和分类
✅ 多用户独立账户
✅ 家长控制功能
✅ 跨设备同步进度场景 2:个人影视库
需求:
- 收藏大量电影
- 追剧管理
- 高质量播放
- 随时访问Jellyfin 方案:
✅ 自动下载元数据
✅ 海报墙展示
✅ 续播功能
✅ 收藏和播放列表
✅ 评分和评论场景 3:音乐库管理
需求:
- 大量音乐收藏
- 按艺术家/专辑分类
- 歌词显示
- 多房间播放Jellyfin 方案:
✅ 自动整理音乐
✅ ID3 标签读取
✅ 歌词同步
✅ 播放队列
✅ 随机播放场景 4:远程访问
需求:
- 外出时访问家中媒体
- 手机/平板观看
- 流量优化
- 安全访问Jellyfin 方案:
✅ Web 界面访问
✅ 移动端 App
✅ 自适应码率
✅ HTTPS 加密
✅ 用户认证3. 系统要求与准备
3.1 硬件要求
最低配置
CPU: 双核 2GHz+
RAM: 2GB
存储: 20GB (系统) + 媒体空间
网络: 100Mbps
GPU: 可选(用于转码)适用场景:
- 少量媒体文件(< 500GB)
- 1-2 个并发用户
- 直接播放为主(少转码)
- 树莓派等低功耗设备
推荐配置
CPU: 四核 3GHz+ (Intel 8代+ 或 AMD Ryzen)
RAM: 8GB
存储: 100GB (系统) + TB 级媒体存储
网络: Gigabit Ethernet
GPU: Intel 核显 或 NVIDIA GTX 1650+适用场景:
- 中等媒体库(1-5TB)
- 3-5 个并发用户
- 需要硬件转码
- 4K 内容支持
高性能配置
CPU: 六核+ (Intel i7/i9 或 AMD Ryzen 7/9)
RAM: 16-32GB
存储: NVMe SSD (系统) + RAID 阵列 (媒体)
网络: 2.5Gbps+ Ethernet
GPU: NVIDIA RTX 3060+ 或 Intel Arc适用场景:
- 大型媒体库(10TB+)
- 10+ 并发用户
- 多路 4K 转码
- 企业级应用
3.2 存储规划
存储结构建议
/media/
├── movies/ # 电影
│ ├── Movie Name (Year)/
│ │ ├── movie.mp4
│ │ ├── poster.jpg
│ │ └── fanart.jpg
├── tv/ # 电视剧
│ ├── Show Name/
│ │ ├── Season 01/
│ │ │ ├── S01E01.mp4
│ │ │ └── S01E02.mp4
│ │ └── Season 02/
├── music/ # 音乐
│ ├── Artist Name/
│ │ ├── Album Name/
│ │ │ ├── 01 Song.mp3
│ │ │ └── cover.jpg
├── photos/ # 照片(可选)
└── books/ # 电子书(可选)命名规范
电影:
✅ 好:
Avatar (2009).mkv
The Dark Knight (2008).mp4
❌ 差:
avatar_final_v2.mkv
movie1.mp4电视剧:
✅ 好:
Breaking Bad/
├── Season 01/
│ ├── Breaking Bad - S01E01.mkv
│ └── Breaking Bad - S01E02.mkv
❌ 差:
bb/
├── s1/
│ ├── ep1.avi
│ └── 1-2.mkv音乐:
✅ 好:
Artist/
└── Album/
├── 01 - Song Title.mp3
└── folder.jpg
❌ 差:
music/
└── songs/
├── track1.mp3
└── song.mp33.3 网络要求
带宽计算
直接播放:
SD (480p): 2-5 Mbps
HD (1080p): 5-10 Mbps
4K (2160p): 15-25 Mbps转码播放:
取决于转码质量:
480p: 1-2 Mbps
720p: 2-4 Mbps
1080p: 4-8 Mbps并发计算:
示例:5 个用户同时观看 1080p
直接播放:5 × 8 Mbps = 40 Mbps
转码播放:5 × 5 Mbps = 25 Mbps
建议上行带宽:50-100 Mbps路由器设置
端口转发(如需外网访问):
TCP 8096: Jellyfin Web UI
TCP 8920: HTTPS (如果启用)
UDP 1900: DLNA (可选)QoS 设置:
优先 Jellyfin 流量
确保流畅播放
避免其他下载影响3.4 软件准备
必需软件:
✅ Docker 和 Docker Compose
✅ 文本编辑器
✅ SSH 客户端(远程管理)
✅ 浏览器可选软件:
📁 File Browser(文件管理)
🔄 Watchtower(自动更新)
🌐 Nginx Proxy Manager(反向代理)
🔍 Radarr/Sonarr(自动下载)4. Docker 部署方案
4.1 安装 Docker
Ubuntu/Debian
# 卸载旧版本
sudo apt remove docker docker-engine docker.io containerd runc
# 安装依赖
sudo apt update
sudo apt install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# 添加 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
# 验证安装
docker --version
docker compose versionCentOS/RHEL
# 添加仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装
sudo yum install docker-ce docker-ce-cli containerd.io
# 启动并开机自启
sudo systemctl start docker
sudo systemctl enable dockermacOS
# 安装 Docker Desktop
brew install --cask docker
# 启动
open /Applications/Docker.appWindows
下载 Docker Desktop for Windows
https://www.docker.com/products/docker-desktop
安装并启动4.2 创建目录结构
# 创建项目目录
mkdir -p ~/jellyfin/{config,cache,media}
cd ~/jellyfin
# 目录说明:
# config/ - Jellyfin 配置文件
# cache/ - 缓存和转码临时文件
# media/ - 媒体文件(或挂载外部存储)如果使用外部存储:
# 挂载硬盘
sudo mount /dev/sdb1 /mnt/media
# 创建符号链接
ln -s /mnt/media ~/jellyfin/media4.3 Docker Compose 配置
创建 docker-compose.yml:
version: '3.8'
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
user: 1000:1000 # 使用当前用户 ID
network_mode: host # 使用 host 网络模式
volumes:
- ./config:/config
- ./cache:/cache
- ./media:/media:ro # 只读挂载媒体
environment:
- TZ=Asia/Shanghai # 时区
- UMASK_SET=022
devices:
# Intel 核显(如使用)
- /dev/dri:/dev/dri
# NVIDIA GPU(如使用,需要 nvidia-docker)
# - /dev/nvidia0:/dev/nvidia0
# - /dev/nvidiactl:/dev/nvidiactl
# - /dev/nvidia-uvm:/dev/nvidia-uvm
restart: unless-stopped
labels:
- "com.centurylinklabs.watchtower.enable=true"重要说明:
用户 ID 获取:
# 查看当前用户 ID
id
# 输出示例:
# uid=1000(username) gid=1000(username) groups=1000(username)
# 修改 docker-compose.yml 中的 user: 1000:1000网络模式:
host 模式:
✅ 性能最佳
✅ 端口自动映射
❌ 与其他容器可能冲突
bridge 模式(备选):
ports:
- "8096:8096"
- "8920:8920"设备挂载:
Intel 核显:
# 检查是否有 DRI 设备
ls -la /dev/dri
# 应该看到:
# card0
# renderD128NVIDIA GPU:
# 需要安装 NVIDIA Container Toolkit
# 参考:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html
# 测试
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi4.4 启动服务
# 启动 Jellyfin
docker compose up -d
# 查看日志
docker compose logs -f jellyfin
# 查看运行状态
docker ps期望输出:
CONTAINER ID IMAGE STATUS
xxx jellyfin/jellyfin:latest Up 2 minutes4.5 访问 Jellyfin
首次访问:
浏览器打开:http://your-server-ip:8096
例如:http://192.168.1.100:8096看到欢迎页面:
🎉 Welcome to Jellyfin!
请选择语言 → 继续5. 初始配置与设置
5.1 初始向导
步骤 1:选择语言
选择:简体中文 或 English
点击 "Next"步骤 2:创建管理员账户
用户名:admin(或其他)
密码:强密码(至少 8 位)
确认密码:再次输入
⚠️ 重要:
- 记住密码
- 使用强密码
- 建议启用两步验证(后续)步骤 3:添加媒体库
添加电影库:
1. 点击 "Add Media Library"
2. 内容类型:Movies(电影)
3. 显示名称:Movies(或中文"电影")
4. 文件夹:选择 /media/movies
5. 点击 "OK"添加电视剧库:
1. 点击 "Add Media Library"
2. 内容类型:TV Shows(电视剧)
3. 显示名称:TV Shows(或"电视剧")
4. 文件夹:选择 /media/tv
5. 点击 "OK"添加音乐库(可选):
1. 内容类型:Music(音乐)
2. 显示名称:Music(或"音乐")
3. 文件夹:选择 /media/music
4. 点击 "OK"步骤 4:元数据语言
首选元数据语言:Chinese Simplified(简体中文)
或 English(英文,元数据更全)
国家/地区:China(中国)步骤 5:完成设置
点击 "Finish"
进入主界面5.2 基本设置
进入 Dashboard(仪表板):
General(常规)
Server name: My Jellyfin Server
Preferred language: 简体中文
Enable automatic port mapping: No(如已手动配置)Playback(播放)
Enable hardware acceleration:
- 选择您的 GPU 类型
* Intel QuickSync
* NVIDIA NVENC
* AMD VCE
* Disabled(如无 GPU)
Transcoding throttle: 0(无限制)
Enable throttling: NoStreaming(流媒体)
Internet streaming bitrate limit: 0(无限制)
或根据带宽设置:
- 10 Mbps: 10000 kbps
- 50 Mbps: 50000 kbps
Remote quality: Auto(自动)5.3 用户管理
创建新用户
Dashboard → Users → Add User
用户名:guest
密码:(可选)
允许远程控制:Yes
允许媒体下载:No(根据需要)
点击 "Save"家长控制
Dashboard → Users → 选择用户 → Parental Control
限制内容评级:
- 电影:PG-13 以下
- 电视:TV-14 以下
隐藏特定媒体库:Yes/No
设置观看时间限制:可选5.4 备份配置
手动备份:
# 备份配置目录
tar czf jellyfin-backup-$(date +%Y%m%d).tar.gz ~/jellyfin/config/
# 下载到本地
scp user@server:~/jellyfin-backup-*.tar.gz ./自动备份:
# 添加到 docker-compose.yml
services:
jellyfin-backup:
image: alpine
volumes:
- ./config:/source:ro
- ./backups:/backup
command: >
sh -c "
tar czf /backup/jellyfin-$(date +%Y%m%d).tar.gz /source &&
find /backup -name '*.tar.gz' -mtime +30 -delete
"
restart: no6. 硬件转码配置
6.1 Intel 核显配置
检查硬件
# 查看显卡信息
lspci | grep VGA
# 应该看到:
# Intel Corporation UHD Graphics 630
# 检查 DRI 设备
ls -la /dev/dri加载驱动
# 确保加载 i915 驱动
sudo modprobe i915
# 验证
lsmod | grep i915权限设置
# 添加用户到 video 组
sudo usermod -aG video $USER
# 重启 Docker 容器
docker compose down
docker compose up -dJellyfin 设置
Dashboard → Playback → Transcoding
Hardware acceleration: Intel QuickSync (QSV)
Encoder preset: Quality
Encoding rate control: VBR
Enable VPP Tone Mapping: Yes(HDR 内容)测试转码:
1. 播放一个需要转码的视频
2. Dashboard → Dashboard → Active Devices
3. 查看是否显示 "HW"(硬件加速)6.2 NVIDIA GPU 配置
安装驱动
# Ubuntu
sudo apt install nvidia-driver-535
# 重启
sudo reboot
# 验证
nvidia-smi安装 NVIDIA Container Toolkit
# 添加仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 安装
sudo apt update
sudo apt install nvidia-container-toolkit
# 配置 Docker
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker测试 GPU
# 测试容器
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
# 应该看到 GPU 信息更新 Docker Compose
services:
jellyfin:
# ... 其他配置
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]Jellyfin 设置
Dashboard → Playback → Transcoding
Hardware acceleration: NVIDIA NVENC
Enable hardware encoding: Yes
Enable hardware decoding: Yes
HEVC Decoder: NVIDIA NVDEC
VP9 Decoder: NVIDIA NVDEC6.3 AMD GPU 配置
安装驱动
# Ubuntu
sudo apt install mesa-vulkan-drivers vainfo
# 验证
vainfoJellyfin 设置
Hardware acceleration: AMD VCE
Enable hardware encoding: Yes
Enable hardware decoding: Yes6.4 转码参数优化
通用设置
Transcoding path: /cache/transcodes
Delete segments older than: 1 day
Throttle Transcodes: No
Enable segment deletion: Yes编码器预设
Quality vs Speed:
- Faster: 更快,质量稍低
- Balanced: 平衡(推荐)
- Slower: 更慢,质量更高
Rate Control:
- CBR: 固定码率
- VBR: 可变码率(推荐)
- CQP: 固定质量HDR 处理
Enable VPP Tone Mapping: Yes(将 HDR 转为 SDR)
Tonemapping Algorithm: Reinhard
Tonemapping Range: TV
Tonemapping Desaturation: 0.57. 元数据刮削与管理
7.1 元数据提供者
Jellyfin 支持多个元数据源:
内置提供者:
✅ TheMovieDB(电影/剧集)
✅ TheTVDB(电视剧)
✅ MusicBrainz(音乐)
✅ OMDB(补充信息)
✅ Fanart.tv(背景图)配置方法:
Dashboard → Libraries → 选择库 → Manage Library → Metadata Downloaders
启用/禁用提供者
调整优先级(拖拽排序)推荐配置:
电影库:
1. TheMovieDB
2. OMDB
3. Fanart.tv电视剧库:
1. TheTVDB
2. TheMovieDB
3. Fanart.tv7.2 自动刮削
触发条件:
✅ 添加新媒体文件时
✅ 手动刷新元数据
✅ 定时任务(可配置)手动刷新:
1. 进入媒体库
2. 右键点击项目
3. 选择 "Refresh Metadata"
4. 选择 "Replace all metadata"(完全替换)
或 "Search for missing metadata"(仅补充)批量刷新:
Library → 点击右上角三个点
→ Scan Library
→ Replace all metadata7.3 自定义元数据
编辑信息
1. 点击媒体项目
2. 点击编辑按钮(铅笔图标)
3. 修改:
- 标题
- 概述
- 年份
- 评级
- 流派
- 演员
4. 保存上传封面
1. 编辑项目
2. 点击 "Change Image"
3. 上传图片
- Poster(海报)
- Backdrop(背景)
- Logo(标志)
- Thumb(缩略图)NFO 文件支持
Jellyfin 支持从 NFO 文件读取元数据:
电影 NFO 示例:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<movie>
<title>Avatar</title>
<originaltitle>Avatar</originaltitle>
<year>2009</year>
<plot>A paraplegic Marine dispatched to the moon...</plot>
<runtime>162</runtime>
<mpaa>PG-13</mpaa>
<genre>Action</genre>
<genre>Adventure</genre>
<director>James Cameron</director>
<actor>
<name>Sam Worthington</name>
<role>Jake Sully</role>
</actor>
</movie>放置位置:
Movie Folder/
├── movie.mp4
└── movie.nfo7.4 字幕管理
自动下载字幕
安装字幕插件:
Dashboard → Plugins → Catalog
搜索 "OpenSubtitles"
安装并重启配置字幕:
Dashboard → Plugins → OpenSubtitles
输入 API Key(免费注册 opensubtitles.org)
设置首选语言:Chinese, English手动添加字幕:
1. 下载字幕文件(.srt, .ass)
2. 重命名为与视频相同
3. 放在同一目录
示例:
Movie.mp4
Movie.zh.srt (中文字幕)
Movie.en.srt (英文字幕)字幕设置
Dashboard → Playback → Subtitles
Subtitle mode: Default
Download subtitles: Yes
Preferred subtitle language: Chinese
Fallback subtitle language: English8. 远程访问设置
8.1 方案对比
| 方案 | 难度 | 安全性 | 性能 | 成本 |
|---|---|---|---|---|
| 端口转发 | ⭐ 简单 | ⚠️ 一般 | ⭐⭐⭐⭐⭐ | 🆓 免费 |
| Cloudflare Tunnel | ⭐⭐ 中等 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 🆓 免费 |
| VPN | ⭐⭐⭐ 复杂 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 🆓-💰 |
| Tailscale | ⭐ 简单 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 🆓 免费 |
8.2 Cloudflare Tunnel(推荐)
参见本站教程:Cloudflare Tunnel 完全指南
快速配置:
# cloudflared config.yml
tunnel: your-tunnel-id
credentials-file: /path/to/creds.json
ingress:
- hostname: jellyfin.yourdomain.com
service: http://localhost:8096
- service: http_status:404优势:
✅ 无需端口转发
✅ 自动 HTTPS
✅ DDoS 防护
✅ 隐藏真实 IP8.3 端口转发
路由器设置:
1. 登录路由器管理界面
2. 找到 Port Forwarding / Virtual Server
3. 添加规则:
- 外部端口:8096
- 内部 IP:Jellyfin 服务器 IP
- 内部端口:8096
- 协议:TCP
4. 保存动态 DNS(如无固定公网 IP):
使用服务:
- No-IP
- DuckDNS
- DynDNS
配置 DDNS 客户端
域名指向动态 IP访问:
http://your-ddns-domain:8096⚠️ 安全警告:
端口转发暴露服务到互联网
务必:
✅ 使用强密码
✅ 启用 HTTPS
✅ 定期更新
✅ 监控访问日志8.4 Tailscale(最简单)
安装 Tailscale:
# 服务器
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
# 客户端(手机/电脑)
下载 Tailscale App
登录同一账户访问:
使用 Tailscale 分配的 IP
http://100.x.x.x:8096优势:
✅ 零配置
✅ 端到端加密
✅ 无需公网 IP
✅ 跨平台支持8.5 HTTPS 配置
使用 Let's Encrypt
安装 Certbot:
sudo apt install certbot
# 获取证书
sudo certbot certonly --standalone -d jellyfin.yourdomain.com配置 Nginx 反向代理:
server {
listen 443 ssl;
server_name jellyfin.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/jellyfin.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/jellyfin.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}自动续期:
# 添加 cron 任务
sudo crontab -e
# 每月 1 号检查续期
0 0 1 * * certbot renew --quiet && systemctl reload nginx9. 移动端 App 使用
9.1 官方 App
iOS / iPadOS
安装:
App Store 搜索 "Jellyfin"
下载官方 App(免费)连接服务器:
1. 打开 App
2. 点击 "Add Server"
3. 输入地址:
- 内网:http://192.168.x.x:8096
- 外网:https://jellyfin.yourdomain.com
4. 登录账户
5. 开始浏览功能:
✅ 浏览媒体库
✅ 播放视频/音乐
✅ 离线下载
✅ 投屏(AirPlay)
✅ 推送通知Android
安装:
Google Play 搜索 "Jellyfin"
或 F-Droid
下载官方 App功能:
✅ 所有 iOS 功能
✅ Chromecast 投屏
✅ 后台播放
✅ 小部件9.2 第三方客户端
Infuse(iOS/macOS)⭐ 推荐
特点:
✅ 精美的界面
✅ 强大的解码能力
✅ 自动元数据
✅ Dolby Vision 支持
✅ 一次性购买(非订阅)配置:
1. 安装 Infuse
2. Settings → Services → Add
3. 选择 Jellyfin
4. 输入服务器地址
5. 登录价格:
免费版:基本功能
Pro 版:$9.99/年 或 $29.99 终身Yatse(Android)
特点:
✅ 遥控器功能
✅ 通知集成
✅ 小部件
✅ 高度可定制9.3 智能电视
Samsung/LG Smart TV
方法 1:Web 浏览器
1. 打开电视浏览器
2. 访问 Jellyfin Web UI
3. 登录使用方法 2:Kodi + Jellyfin 插件
1. 安装 Kodi
2. 添加 Jellyfin 插件
3. 配置服务器Apple TV
App:
App Store 下载 "Swiftfin"(免费开源)
或 "Infuse"(付费,体验更佳)Android TV / Fire TV
App:
Google Play 下载官方 Jellyfin App
或使用 Kodi9.4 离线下载
iOS/Android:
1. 找到要下载的项目
2. 点击下载图标
3. 选择质量:
- Original(原画质)
- High(高)
- Medium(中)
- Low(低)
4. 等待下载完成
5. 离线观看管理下载:
Profile → Downloads
查看已下载内容
删除不需要的
设置下载限制(WiFi only)10. 性能优化与维护
10.1 数据库优化
定期清理:
Dashboard → Scheduled Tasks
运行:
- Clean Database(清理数据库)
- Remove Old Cache Items(清理缓存)
- Optimize Database(优化数据库)手动优化:
# 停止 Jellyfin
docker compose down
# 备份数据库
cp ~/jellyfin/config/data/jellyfin.db ~/jellyfin.db.backup
# 优化 SQLite
sqlite3 ~/jellyfin/config/data/jellyfin.db "VACUUM;"
# 重启
docker compose up -d10.2 缓存管理
清理转码缓存:
# 删除旧的转码文件
find ~/jellyfin/cache/transcodes -type f -mtime +7 -delete
# 或自动清理
# Dashboard → Playback → Delete segments older than: 7 days清理图片缓存:
Dashboard → Scheduled Tasks
运行:Clean Image Cache10.3 监控和日志
查看日志:
# Docker 日志
docker compose logs -f jellyfin
# 日志文件
tail -f ~/jellyfin/config/log_*.log监控资源:
# CPU 和内存
docker stats jellyfin
# 磁盘使用
du -sh ~/jellyfin/*Dashboard 监控:
Dashboard → Dashboard
查看:
- Active Devices(活跃设备)
- Current Streams(当前流)
- System Activity(系统活动)10.4 自动更新
使用 Watchtower:
# 添加到 docker-compose.yml
services:
watchtower:
image: containrrr/watchtower
container_name: watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true # 删除旧镜像
- WATCHTOWER_SCHEDULE=0 0 3 * * * # 每天 3 点检查
restart: unless-stopped手动更新:
# 拉取最新镜像
docker compose pull
# 重启容器
docker compose down
docker compose up -d
# 清理旧镜像
docker image prune -f10.5 备份策略
完整备份脚本:
#!/bin/bash
# backup-jellyfin.sh
BACKUP_DIR=~/backups/jellyfin
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份配置
tar czf $BACKUP_DIR/config_$DATE.tar.gz ~/jellyfin/config/
# 备份数据库
cp ~/jellyfin/config/data/jellyfin.db $BACKUP_DIR/db_$DATE.db
# 删除 30 天前的备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
find $BACKUP_DIR -name "*.db" -mtime +30 -delete
echo "Backup completed: $DATE"定时备份:
# 添加 cron 任务
crontab -e
# 每天凌晨 2 点备份
0 2 * * * /path/to/backup-jellyfin.sh10.6 故障排除
问题 1:无法访问 Web UI
检查:
# 容器是否运行
docker ps | grep jellyfin
# 端口是否监听
sudo netstat -tlnp | grep 8096
# 防火墙规则
sudo ufw status解决:
# 重启容器
docker compose restart
# 检查日志
docker compose logs jellyfin问题 2:转码失败
检查:
# GPU 是否可用
nvidia-smi
# 或
vainfo
# 权限是否正确
ls -la /dev/dri解决:
Dashboard → Playback
尝试不同的硬件加速器
或禁用硬件加速测试问题 3:元数据不显示
检查:
文件命名是否正确
文件夹结构是否符合规范
网络连接是否正常解决:
1. 刷新元数据
2. 检查元数据提供者设置
3. 手动编辑信息
4. 查看日志排查错误问题 4:播放卡顿
检查:
网络带宽是否足够
服务器负载是否过高
是否需要转码解决:
1. 降低播放质量
2. 启用硬件转码
3. 预转码媒体
4. 优化网络常见问题解答
Q1: Jellyfin 支持哪些视频格式?
A: 几乎支持所有常见格式。
视频编码:
✅ H.264/AVC
✅ H.265/HEVC
✅ VP8/VP9
✅ AV1(新)
✅ MPEG-2/4
✅ WMV音频编码:
✅ AAC
✅ AC3/E-AC3
✅ DTS
✅ FLAC
✅ MP3
✅ Opus容器格式:
✅ MP4
✅ MKV
✅ AVI
✅ MOV
✅ TS/M2TS
✅ WEBMQ2: 如何迁移 Plex/Emby 到 Jellyfin?
A: Jellyfin 提供迁移工具。
从 Plex 迁移:
1. 安装 Jellyfin
2. Dashboard → Advanced → Import Data
3. 选择 Plex 数据库
4. 映射媒体路径
5. 导入从 Emby 迁移:
由于 Jellyfin 是 Emby 分支
可以直接使用 Emby 的配置和数据库
只需更换程序即可Q3: 可以同时多少人观看?
A: 取决于硬件和网络。
直接播放:
千兆网络:10-20 人
百兆网络:3-5 人硬件转码:
Intel i5 核显:3-5 路 1080p
NVIDIA GTX 1650:5-8 路 1080p
高端 GPU:10+ 路CPU 软解:
i7-12700K:1-2 路 1080p
不推荐软解Q4: 如何预转码媒体?
A: 使用 FFmpeg 批量转码。
脚本示例:
#!/bin/bash
# pre-transcode.sh
INPUT_DIR="/media/movies"
OUTPUT_DIR="/media/transcoded"
for file in "$INPUT_DIR"/*.mkv; do
filename=$(basename "$file")
ffmpeg -i "$file" \
-c:v libx264 -preset fast -crf 23 \
-c:a aac -b:a 128k \
"$OUTPUT_DIR/${filename%.mkv}.mp4"
done优点:
✅ 播放更流畅
✅ 减少服务器负载
✅ 兼容性好缺点:
❌ 占用存储空间
❌ 转码耗时长
❌ 质量有损失Q5: 如何优化 4K 播放?
A: 多个方面优化。
网络:
- 使用有线连接
- 确保带宽充足(25Mbps+)
- 路由器 QoS 设置服务器:
- 启用硬件解码
- SSD 存储媒体
- 足够的 RAM客户端:
- 使用支持硬解的设备
- 更新播放器
- 选择合适的应用Jellyfin 设置:
- 禁用不必要的元数据下载
- 优化图片缓存
- 使用 direct playQ6: 可以录制直播电视吗?
A: 是的,Jellyfin 支持 DVR。
需要:
✅ HDHomeRun 或其他 tuner
✅ 天线或有线电视
✅ 配置 TV Provider设置:
Dashboard → Live TV
添加 Tuner
扫描频道
设置录制计划Q7: 数据安全吗?
A: 相对安全,但需注意。
安全措施:
✅ 使用强密码
✅ 启用 HTTPS
✅ 定期更新
✅ 备份数据
✅ 限制远程访问
✅ 监控日志额外保护:
- 使用 VPN 远程访问
- 启用两步验证
- 设置失败登录锁定
- 定期审查用户权限Q8: Jellyfin 未来发展方向?
A: 社区驱动的持续改进。
路线图:
🎯 更好的移动端体验
🎯 AI 辅助元数据
🎯 改进的转码性能
🎯 更多插件和集成
🎯 云同步功能
🎯 社交功能社区参与:
- GitHub 贡献代码
- 报告 bug
- 提出建议
- 帮助翻译
- 撰写文档总结
Jellyfin 是构建个人媒体服务器的绝佳选择,它免费、开源、功能强大。
🎯 核心价值
- 完全免费:无任何隐藏费用
- 隐私保护:数据完全本地化
- 硬件转码:高效处理各种格式
- 跨平台:支持几乎所有设备
- 社区活跃:持续改进和支持
💡 实施建议
- 从小开始:先部署基础功能
- 逐步扩展:根据需要添加功能
- 重视备份:定期备份配置和数据
- 关注安全:启用 HTTPS 和强密码
- 参与社区:获取帮助和分享经验
📚 延伸阅读
💬 获取帮助
- 📖 官方文档:jellyfin.org/docs
- 💬 论坛:forum.jellyfin.org
- 💬 Discord:discord.gg/jellyfin
- 🐛 问题反馈:GitHub Issues
- 💡 本站交流:欢迎在评论区分享经验
🎬 开始构建您的个人 Netflix,享受完全控制的媒体体验!
💡 提示:收藏本页面以备将来参考。如果您觉得本教程有帮助,欢迎分享给更多朋友!