Jellyfin 是一个免费、开源的媒体服务器软件,让您能够将自己的电影、音乐、照片和视频流传到世界任何地方的任何设备。与 Plex 或 Emby(商业服务)不同,Jellyfin 提供真正的隐私:无需强制账户、无追踪、无广告,您完全拥有自己的服务器。本指南涵盖在 Ubuntu 22.04 VPS 上安装 Jellyfin、设置 Nginx 反向代理并使用 HTTPS 进行安全的远程访问、添加媒体库以及实施适当的安全控制以保护个人内容。
简而言之:Jellyfin 是一个免费、开源、注重隐私的媒体服务器,非常适合自建流媒体服务。本文涵盖在 Ubuntu 22.04 VPS 上的安装、配置 Nginx 反向代理(带 Let's Encrypt HTTPS)、添加媒体库和保护远程访问。由于大多数 VPS 缺乏 GPU,转码依赖于 CPU 核心——限制并发流为 1-2 个并降低比特率以避免 CPU 过载。
什么是 Jellyfin 以及它与 Plex 的区别
Jellyfin 是一个媒体服务器应用程序,可将您的数字媒体集合(电影、电视节目、音乐、照片、播客和有声书)集中在一个地方,然后将其流传到智能手机、计算机、智能电视、平板电脑和您网络内或互联网上的其他设备。
与 Plex 的主要区别:Jellyfin 是真正的开源和免费软件。没有强制账户与公司相关联,没有使用追踪,没有广告,您保留对服务器的完全控制。Plex 是一个商业服务,可能需要订阅并跟踪您的观看习惯。Emby 也是一个商业产品。Jellyfin 由社区驱动,没有商业利益,使其成为隐私意识用户和自建爱好者的理想选择。
为什么在 VPS 上托管 Jellyfin
- 隐私保护:您的电影和音乐永远不会通过他人的服务器。一切都保留在您自己的 VPS 上,完全在您的控制下。
- 无订阅费用:与 Plex(可能需要付费功能)或付费计划不同,Jellyfin 完全免费。
- 完全控制:您决定谁可以访问、何时访问,您的 VPS 由您拥有和管理。
- 全球可访问性:在世界任何地方的 VPS 上托管——泰国、新加坡或其他地方——并从任何位置流传。
- 通过 HTTPS 的远程访问:使用适当的域名和 SSL 证书,从任何地方安全地流传 4K 内容。
前置要求和系统要求
要有效运行 Jellyfin,您需要:
- Ubuntu 22.04 LTS VPS:具有 root 或 sudo 访问权限以进行管理。
- SSD 存储:至少 500 GB(理想情况下 1–2 TB,取决于媒体库大小)。避免使用慢速 HDD 存储。
- 多核 CPU:最少 2 核;推荐 4 核或更多(因为大多数 VPS 缺乏 GPU,转码受 CPU 限制)。
- RAM:最少 2–4 GB 以实现舒适操作。
- 带宽:至少 10 Mbps;像 AsiaGB 这样使用 SSD 的 VPS 提供商可以轻松处理。
- 域名:用于安全的 HTTPS 远程访问(例如 media.example.com)。
| 规格 | 最低 | 推荐 |
|---|---|---|
| CPU 核心数 | 2 | 4 个或更多 |
| RAM | 2 GB | 4 GB |
| SSD 存储 | 500 GB | 1–2 TB |
| 带宽 | 10 Mbps | 50 Mbps 或更高 |
| 操作系统 | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS |
在 Ubuntu 22.04 上安装 Jellyfin
按照以下步骤从官方 Ubuntu 存储库安装 Jellyfin 并获得自动更新。
第 1 步:更新系统包
安装前,更新软件包列表并升级现有软件包:
sudo apt update sudo apt upgrade -y
第 2 步:添加官方 Jellyfin 存储库
Jellyfin 维护官方 Ubuntu 存储库,确保您自动接收安全更新:
sudo apt install curl gnupg2 -y curl https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo apt-key add - echo "deb https://repo.jellyfin.org/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/jellyfin.list sudo apt update
第 3 步:安装 Jellyfin
现在安装 Jellyfin 及其 systemd 服务:
sudo apt install jellyfin -y
第 4 步:启动 Jellyfin 服务
启用 Jellyfin 在重新启动时自动启动,并立即启动它:
sudo systemctl enable jellyfin sudo systemctl start jellyfin
检查状态:
sudo systemctl status jellyfin
查找"active (running)"——如果看到这个,Jellyfin 已成功启动。
Jellyfin 初始网络设置
Jellyfin 运行后,在客户端设备的网络浏览器中打开并导航到:
http://your-vps-ip:8096
将"your-vps-ip"替换为您的实际 VPS IP 地址(例如 192.0.2.123)或如果从 VPS 本身访问则使用 localhost。
您将看到 Jellyfin 服务器设置向导。完成这些步骤:
- 选择语言:选择简体中文或您首选的语言。
- 创建管理员账户:为管理员设置用户名和密码。使用包含大写字母、小写字母、数字和符号的强密码。
- 配置位置:选择国家和货币设置。
- 添加媒体库:Jellyfin 会询问您是否现在想添加媒体。您可以跳过此步骤——我们将在下一部分中添加库。
提示:安全地保存您的管理员密码。此凭证授予对您个人音乐和电影库的完全访问权限。
添加媒体库
现在您需要在 VPS 上创建文件夹来存储媒体文件并告诉 Jellyfin 它们的位置。
第 1 步:在 VPS 上创建媒体文件夹
通过 SSH 进入您的 VPS 并创建媒体目录结构:
sudo mkdir -p /mnt/media/{movies,tv,music,photos}
sudo chown -R jellyfin:jellyfin /mnt/media
sudo chmod -R 755 /mnt/media
这会创建 /mnt/media/movies、/mnt/media/tv、/mnt/media/music 和 /mnt/media/photos,全部由 jellyfin 用户拥有。
第 2 步:在 Jellyfin 网络界面中添加库
回到 Jellyfin 网络界面,在侧边栏中单击"库"。
- 单击"添加库"
- 选择媒体类型:电影、电视节目、音乐、照片等
- 单击"下一步"
- 设置文件夹路径:/mnt/media/movies(用于电影)、/mnt/media/tv(用于电视节目)等
- 单击"添加"
Jellyfin 自动扫描该文件夹并从在线数据库获取元数据(标题、年份、海报、评分)。
提示:按标题将视频文件组织在子文件夹中,例如 /mnt/media/movies/The-Matrix/ 或 /mnt/media/tv/Breaking-Bad/Season-1/。Jellyfin 使用文件夹和文件名查找元数据。例如,"The.Matrix.1999.1080p.x264.mkv"将在 TMDB 上正确匹配。
VPS 上的转码注意事项
转码将视频从一种格式转换为另一种格式或降低质量(例如 4K 转 1080p)以降低带宽使用。大多数 VPS 缺乏 GPU,因此转码是 CPU 密集型的,可能会减慢您的服务器。
VPS 转码的挑战
- CPU 密集型:4K 视频可能需要 80–100% 的 CPU 在实时转码。
- 并发流:4 核 VPS 最多可同时处理 1–2 个转码的流,而不是 10 个。
- 比特率:4K 视频可能需要 15–25 Mbps,您的 VPS 可能难以处理。
解决方案
- 限制并发流:在"管理">"策略">"最大并发流"中,设置限制(例如 2)。
- 降低远程比特率:要求用户在 Jellyfin 应用中选择"远程"并选择较低的比特率(1–5 Mbps 而不是 8–20 Mbps)。
- 预先转码媒体:如果资源允许,在播放前预先转码视频(耗时但消除实时 CPU 负载)。
- 禁用硬件加速:如果您的 VPS 没有 GPU,保持硬件加速关闭。
警告:不要设置过高的转码比特率。如果用户尝试流传 4K 而您的 VPS 将其转码为 1080p 10 Mbps,CPU 可能会激增,服务器可能变得无响应。
使用 HTTPS 设置 Nginx 反向代理
Jellyfin 默认侦听 localhost:8096。为了安全的远程访问,在前面设置一个带有 HTTPS 的 Nginx 反向代理。
第 1 步:安装 Nginx 和 Certbot
安装 Nginx 和 certbot 来管理 Let's Encrypt 证书:
sudo apt install nginx certbot python3-certbot-nginx -y
第 2 步:创建 Nginx 配置
为 Jellyfin 创建 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/jellyfin
粘贴以下配置(用您的实际域名替换 media.example.com):
server {
listen 80;
server_name media.example.com;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl http2;
server_name media.example.com;
ssl_certificate /etc/letsencrypt/live/media.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/media.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
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;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
}
}
按 Ctrl+X,然后 Y 保存。
第 3 步:启用 Nginx 站点
创建符号链接并测试配置:
sudo ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
nginx -t 命令检查语法。如果看到"syntax is ok",您就没问题了。
第 4 步:获取 Let's Encrypt 证书
使用 certbot 获取免费的 HTTPS 证书:
sudo certbot certonly --nginx -d media.example.com
回答 certbot 的提示(电子邮件、同意 ToS 等)。您的证书现在存储在 /etc/letsencrypt/live/media.example.com/
第 5 步:为 HTTPS 配置 Jellyfin
在 Jellyfin 网络界面中,转到"管理">"网络":
- 将"公开 HTTPS 端口"设置为 443
- 将"HTTPS 证书路径"设置为 /etc/letsencrypt/live/media.example.com/fullchain.pem
- 将"HTTPS 密钥路径"设置为 /etc/letsencrypt/live/media.example.com/privkey.pem
- 保存
Jellyfin 现在可通过安全 HTTPS 在 https://media.example.com 上访问。
警告:不要更改 Jellyfin 的默认端口 (8096)。Nginx 自动将端口 80 和 443 路由到 8096 上的内部 Jellyfin 服务器。
远程访问安全性
由于您通过 HTTPS 流传个人内容,因此实施适当的安全措施。
防止未授权访问
- 强密码:使用长密码,包含大写字母、小写字母、数字和符号。例如:MyJelly9@2024!Secure
- 禁用公开注册:转到"管理">"策略">"允许用户注册"并设置为"关闭",以防止陌生人创建账户。
- 手动管理用户:自己创建用户账户并安全地共享凭证。
- 监控访问:定期访问"管理">"日志"以查看谁访问了您的服务器以及何时访问。
可选:添加 VPN 保护
为了额外的隐私,限制 Jellyfin 访问仅限 VPN 用户(需要在 VPS 上运行 VPN 服务器,如 WireGuard 或 OpenVPN)。这可防止直接互联网暴露,但增加了设置复杂性。
安全提示:Cloudflare Tunnel(免费)是另一个选项:从您的 VPS 创建加密隧道到 Cloudflare,然后通过 Cloudflare 域访问 Jellyfin。这避免了在 VPS 上打开除 SSH 外的任何端口。
使用 UFW 进行防火墙配置
通过仅允许必要的端口来保护您的 VPS:
启用 UFW 并配置规则
sudo ufw enable sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp
如果您想直接访问 LAN 上的 Jellyfin(绕过 Nginx),请添加:
sudo ufw allow 8096/tcp
但是,如果使用 Nginx 反向代理(推荐),端口 8096 不需要暴露到互联网。
检查防火墙状态
sudo ufw status
端口 22、80 和 443 应显示为"ALLOW"。
总结
您已成功在 Ubuntu VPS 上安装 Jellyfin,配置了带有 HTTPS 的 Nginx 反向代理,添加了媒体库,并保护了远程访问。您的私人媒体服务器现在已准备好将您的电影和音乐集合流传到世界上任何设备。
关键要点:
- 大多数 VPS 缺乏 GPU,因此 CPU 基础转码是有限的——限制并发流和比特率。
- 始终使用 HTTPS 和有效证书以及强密码。
- 禁用公开注册并手动管理用户。
- 考虑使用 VPN 或 Cloudflare Tunnel 进行额外安全层。
- 定期监控访问日志以查找可疑活动。
常见问题 (FAQ)
Jellyfin 与 Plex 有什么区别?
Jellyfin 是免费的、开源的、真正私密的——无强制账户、追踪或广告。Plex 是一项商业服务,可能需要订阅并跟踪您的观看习惯。Emby 也是商业的。Jellyfin 由社区驱动,没有商业利益。
如何将电影添加到 Jellyfin?
在 VPS 上创建 /mnt/media/movies 文件夹,将视频文件 (.mkv、.mp4 等) 复制到其中,然后在 Jellyfin 的网络界面中转到"库">"添加库">"电影",将路径设置为 /mnt/media/movies,然后保存。Jellyfin 自动扫描并获取元数据。
没有 GPU 的 VPS 上转码如何工作?
VPS 使用基于 CPU(软件)的转码,这非常占用资源。将并发流限制为 1-2 个,要求用户选择较低的比特率(1-5 Mbps 而不是 8-20 Mbps),并避免 4K 流以防止 CPU 过载。
如何在互联网上保护 Jellyfin?
使用带有有效证书(Let's Encrypt)的 HTTPS,设置强密码,禁用公开注册,手动创建用户账户,定期检查日志,并考虑使用 VPN 或 Cloudflare Tunnel 以获得额外安全性。
立即开始使用 AsiaGB VPS
AsiaGB VPS 全系列采用 SSD 存储,可选择泰国或新加坡数据中心,并提供完整的 Root 权限,Linux 系统每月低至 500 泰铢起,由泰语技术团队提供支持。
查看 VPS 套餐