搬瓦工搭建 Jellyfin 私人媒体服务器
Jellyfin 是一款完全免费开源的媒体服务器软件,可以管理和串流你的电影、电视剧、音乐和照片。与 Plex 和 Emby 不同,Jellyfin 没有任何付费限制,所有功能完全开放。本文将在搬瓦工 VPS 上通过 Docker 部署 Jellyfin。
一、方案推荐
Jellyfin 对服务器配置的需求取决于使用方式:
- 直接播放(Direct Play):客户端支持媒体格式时直接传输,服务器负载很低,1 核 1GB 即可。
- 软件转码:客户端不支持的格式需要服务器实时转码,至少需要 2 核 2GB。
- 多用户同时串流:每个转码流需要约 1 核 CPU,建议 4 核 4GB 以上。
存储空间根据媒体文件大小确定。搬瓦工 VPS 磁盘空间有限,建议存放经过压缩的媒体文件。具体方案参考 全部在售方案。
二、前置准备
- 已安装 Docker 和 Docker Compose,参考 Docker 安装教程。
- 域名已解析到服务器 IP(可选,也可通过 IP 直接访问)。
三、创建目录结构
mkdir -p /opt/jellyfin
mkdir -p /opt/media/movies
mkdir -p /opt/media/tvshows
mkdir -p /opt/media/music
cd /opt/jellyfin
目录说明:
/opt/jellyfin:Jellyfin 配置文件目录。/opt/media/movies:电影文件存放目录。/opt/media/tvshows:电视剧文件存放目录。/opt/media/music:音乐文件存放目录。
四、编写 Docker Compose 文件
nano docker-compose.yml
version: '3.8'
services:
jellyfin:
image: jellyfin/jellyfin:latest
restart: always
ports:
- "8096:8096"
environment:
- TZ=Asia/Shanghai
volumes:
- jellyfin_config:/config
- jellyfin_cache:/cache
- /opt/media:/media:ro
# 如果需要硬件转码,取消下面的注释
# devices:
# - /dev/dri:/dev/dri
volumes:
jellyfin_config:
jellyfin_cache:
配置说明:
- 媒体目录以只读(
:ro)方式挂载,防止 Jellyfin 意外修改源文件。 - 时区设为
Asia/Shanghai,方便查看日志和管理。 - 默认端口 8096,可根据需要修改。
五、启动服务
docker compose up -d
验证运行状态:
docker compose ps
docker compose logs -f
六、初始化配置
在浏览器中访问 http://服务器IP:8096,进入 Jellyfin 初始设置向导:
- 语言选择:选择"简体中文"。
- 创建管理员账号:设置用户名和密码。
- 添加媒体库:点击"添加媒体库",选择内容类型(电影/电视节目/音乐),指定对应的文件夹路径。
- 元数据语言:选择"Chinese",国家选"People's Republic of China"。
- 远程访问:勾选"允许远程连接到此服务器"。
- 完成设置。
媒体库路径对应关系
| 内容类型 | 容器内路径 | 宿主机路径 |
|---|---|---|
| 电影 | /media/movies | /opt/media/movies |
| 电视节目 | /media/tvshows | /opt/media/tvshows |
| 音乐 | /media/music | /opt/media/music |
七、上传媒体文件
将媒体文件上传到对应目录。可以使用 SCP、SFTP 或 rsync:
# 使用 SCP 上传文件
scp -P SSH端口 movie.mp4 root@服务器IP:/opt/media/movies/
# 使用 rsync 同步目录
rsync -avz -e "ssh -p SSH端口" ./movies/ root@服务器IP:/opt/media/movies/
文件命名规范
为了让 Jellyfin 正确识别和刮削元数据,建议按以下格式命名:
# 电影
/movies/电影名 (年份)/电影名 (年份).mp4
例如:/movies/Inception (2010)/Inception (2010).mp4
# 电视剧
/tvshows/剧名/Season 01/剧名 S01E01.mp4
例如:/tvshows/Breaking Bad/Season 01/Breaking Bad S01E01.mp4
八、配置 Nginx 反向代理(可选)
如果你有域名并希望通过 HTTPS 访问:
apt install nginx certbot python3-certbot-nginx -y
nano /etc/nginx/sites-available/jellyfin
server {
listen 80;
server_name your-domain.com;
client_max_body_size 20M;
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 $scheme;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
certbot --nginx -d your-domain.com
九、转码设置
在 Jellyfin 管理后台进入"控制面板" > "播放" > "转码",可以配置转码相关选项:
9.1 软件转码
搬瓦工 VPS 没有独立 GPU,默认使用 CPU 软件转码。在转码设置中:
- 硬件加速选择"无"。
- 转码线程数设为 0(自动检测)或 VPS CPU 核数。
- 启用"在不支持的媒体格式时允许转码"。
9.2 优化转码性能
为了减少转码需求,建议:
- 尽量使用 H.264 编码的 MP4 文件,大多数设备原生支持。
- 避免使用 HEVC/H.265 编码,许多设备需要转码才能播放。
- 在客户端设置中选择"原始"或"最大"画质,避免不必要的转码。
十、用户管理
在管理后台的"用户"页面可以创建多个用户,为每个用户设置不同的权限:
- 控制可访问的媒体库。
- 设置最大串流比特率。
- 限制同时播放设备数量。
- 启用或禁用转码权限。
十一、客户端连接
Jellyfin 支持丰富的客户端:
- Web 浏览器:直接访问 Jellyfin 地址即可播放。
- Android:Google Play 下载 Jellyfin 应用。
- iOS:App Store 下载 Jellyfin 应用(或 Swiftfin)。
- Android TV:下载 Jellyfin for Android TV。
- Kodi:安装 Jellyfin for Kodi 插件。
- 桌面端:Jellyfin Media Player(基于 mpv)。
客户端连接时填写服务器地址:http://服务器IP:8096 或 https://your-domain.com。
十二、插件推荐
在管理后台的"插件"页面可以安装扩展功能:
- Open Subtitles:自动下载字幕。
- Fanart:获取高质量封面和背景图片。
- TMDb:从 The Movie Database 获取电影和剧集元数据。
- Playback Reporting:播放统计和报告。
十三、常见问题
播放时缓冲严重
可能原因:1)带宽不足,检查 VPS 和客户端的网络速度;2)正在转码且 CPU 性能不够,尝试使用直接播放兼容的格式;3)降低客户端的播放画质设置。
无法刮削元数据
确保文件命名规范,重新扫描媒体库。也可以手动搜索并匹配元数据。
磁盘空间不足
Jellyfin 的元数据和缓存也会占用空间。清理转码临时文件:
docker exec jellyfin-jellyfin-1 rm -rf /cache/transcodes/*
总结
Jellyfin 是搭建私人媒体服务器的绝佳选择,完全免费且功能丰富。搬瓦工 VPS 的大带宽适合串流媒体内容,CN2 GIA 线路可以为国内用户提供不错的观看体验。购买 VPS 时使用优惠码 NODESEEK2026 享受折扣,更多教程请参考 新手教程。