Jellyfin 从零跑通:三条部署路径与启动参数速查
【免费下载链接】jellyfinThe Free Software Media System - Server Backend & API项目地址: https://gitcode.com/GitHub_Trending/je/jellyfin
Jellyfin 部署指南:把分散在各台设备上的视频、音乐、照片集中到一台服务器管理并串流播放。读完本文,你可以选一条部署路径把服务跑起来,完成首次向导配置,并掌握日常启停与日志命令。
项目速览
Jellyfin 是一款完全免费的开源媒体系统,定位是 Plex 和 Emby 的替代品:没有付费会员、没有功能阉割,代码以 GPL 协议开放。
- 🎬 把本地电影、剧集、音乐、照片按库管理,自动刮削封面与简介
- 🔁 用 ffmpeg 按需转码,手机、电视、电脑都能连上来播放
- ⚙️ Web 界面即管理后台,用户、权限、任务调度都在浏览器里完成
环境自检
| 使用场景 | 最低配置 | 推荐配置 |
|---|---|---|
| 个人使用 | 双核 CPU、4 GB 内存 | 四核 CPU、8 GB 内存 |
| 小团队 / 家庭共享 | 四核 CPU、8 GB 内存 | 六核 CPU、16 GB 内存 |
| 服务器 / NAS | 四核 CPU、8 GB 内存 | 支持硬件转码的 CPU 或 GPU、16 GB 内存 |
必装依赖(仅源码构建需要手动确认,官方安装包与镜像已内置):
- .NET 10 SDK(编译运行服务端必需,仓库
global.json固定了大版本) - jellyfin-ffmpeg(媒体探测与转码核心,注意不是任意 ffmpeg,需使用 Jellyfin 定制版)
路径 A|官方安装包与一键脚本
最省事的路线。若系统是 Windows,从发行版下载 Jellyfin- -win64.zip 解压到任意目录,直接运行jellyfin.exe,安装版会以系统服务运行;若系统是 Ubuntu/Debian,执行官方一键脚本:
# 添加官方软件源 curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash # 安装服务端 sudo apt install jellyfin注意:一键脚本会写入 apt 源并安装 ffmpeg 依赖,需要 sudo 权限。安装完成后服务名就是jellyfin,后续运维统一用systemctl管理(见日常运维速查)。
路径 B|Docker 容器化部署(最推荐)
配置、缓存、媒体三个目录分离挂载,升级时只需重建容器不动数据:
docker run -d \ --name jellyfin \ --restart unless-stopped \ -p 8096:8096 \ -v /opt/jellyfin/config:/config \ -v /opt/jellyfin/cache:/cache \ -v /mnt/media:/media \ -e TZ=Asia/Shanghai \ jellyfin/jellyfin参数说明:-p 8096:8096发布 Web 端口(默认 8096);三个-v分别对应数据库与配置、图片缓存、媒体文件,目录换成你自己的路径;--restart unless-stopped让容器随系统自启。macOS/Windows 上用 Docker Desktop 执行同样命令,把 Linux 路径换成 Docker Desktop 可见的挂载路径即可。
路径 C|源码构建运行
适合想改代码、提贡献的读者。前置条件是装好 .NET 10 SDK 和 jellyfin-ffmpeg,另外需要准备一份 Web 前端文件(可从任意现有安装中拷贝):
git clone https://gitcode.com/GitHub_Trending/je/jellyfin cd jellyfin dotnet build cd Jellyfin.Server/bin/Debug dotnet Jellyfin.Server.dll --webdir /absolute/path/to/jellyfin-web注意:--webdir指向的是前端资源目录,路径必须写绝对路径,缺了它网页端会加载不出来。Windows 上构建产物是jellyfin.exe,其余命令一致。
首次启动与向导配置
浏览器访问http://<服务器IP>:8096,首次打开进入向导:
- 创建管理员账号并设置密码
- 选择服务器语言与时区
- 添加媒体库:指定路径、选类型(电影/剧集/音乐/照片),文件命名符合
片名 (年份) - S01E01 集名这类惯例时识别最准 - 等待首次扫描完成,即可开始播放
最常改的启动参数(jellyfin --help可查看全部):
| 参数 | 作用 | 示例值 |
|---|---|---|
--datadir | 数据库等数据目录 | --datadir /opt/jellyfin/data |
--configdir | 用户设置与图片目录 | --configdir /opt/jellyfin/config |
--cachedir | 缓存目录 | --cachedir /opt/jellyfin/cache |
--webdir | Web 前端资源目录 | --webdir /usr/share/jellyfin-web |
--logdir | 日志输出目录 | --logdir /var/log/jellyfin |
--ffmpeg | 指定 ffmpeg 可执行文件路径 | --ffmpeg /usr/lib/jellyfin-ffmpeg/ffmpeg |
日常运维速查
| 操作 | 命令 |
|---|---|
| 启动 | sudo systemctl start jellyfin |
| 停止 | sudo systemctl stop jellyfin |
| 重启 | sudo systemctl restart jellyfin |
| 看状态 | sudo systemctl status jellyfin |
| 日志实时追踪 | journalctl -u jellyfin -f |
容器部署则用docker restart jellyfin和docker logs -f jellyfin替代。升级时重新apt upgrade或拉取新镜像重建容器即可,/config里的数据不受影响;升级前先做一份备份更稳妥。
高频问题
端口冲突,8096 被占用怎么办
启动日志里会提示端口已被占用。两个选择:换一个空闲端口发布,或在反向代理里把外部端口映射到内部 8096。改完重启服务生效。
媒体文件识别不出来
先确认服务账号对媒体目录有读权限,再检查文件命名是否符合规范(如movie.mkv、show S01E01.mp4)。目录结构混乱时手动在库设置里调整命名规则,或把文件整理成电影/片名 (年份)/片名 (年份).mkv这类标准结构后触发重新扫描。
转码卡顿或画质差
确认用的是 Jellyfin 定制版 ffmpeg 而非系统通用版;有独显或新版 CPU 的机器开启对应硬件转码;同时检查"播放时转码"是否为预期行为——同网段直连播放时优先走直接播放可以省掉这一步。
进阶选读
反向代理配置 + HTTPS
用 Nginx 把域名和证书收在代理层,客户端只需要记一个地址:
server { listen 443 ssl; server_name media.example.com; ssl_certificate /etc/nginx/certs/fullchain.pem; ssl_certificate_key /etc/nginx/certs/privkey.pem; location / { proxy_pass http://127.0.0.1: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 https; } }代理启用后,在 Jellyfin 的网络设置里把"反向代理服务器"勾选上并填好对外地址,播放地址才会指向域名而不是内网 IP。
数据备份与恢复
服务端支持整体备份(数据库、用户、设置、日志等打成一个 zip)。用 curl 调本机 API 生成备份:
curl -X POST http://127.0.0.1:8096/Backups \ -H "X-Emby-Authorization: MediaBrowser Token=\"<管理员API密钥>\""换机器或数据损坏时,把备份 zip 拷到目标机,用启动参数恢复:
jellyfin --restore-archive /path/to/backup.zip方案怎么选
- 新手:走路径 A,Windows 解压即跑,Linux 一条脚本装完
- 进阶:走路径 B,Docker 隔离干净、升级回滚都方便
- 生产环境:路径 B + 进阶选读里的反向代理与定期备份,缺一不可
三条路径都能跑通同一套服务,选一条从上面任意一节开始动手,装完直接进首次启动与向导配置那一步。
【免费下载链接】jellyfinThe Free Software Media System - Server Backend & API项目地址: https://gitcode.com/GitHub_Trending/je/jellyfin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考