在 VPS 上部署 Jellyfin:如何搭建自己的媒体服务器
装满视频的文件夹很少能称得上好用的媒体库:文件名不统一、字幕单独存放,还要手动寻找正确的剧集。Jellyfin 可以把这类存档变成个人流媒体服务,提供海报、简介、用户配置文件和续播功能。
与此同时,Jellyfin 不销售订阅,也不提供现成的内容目录。它使用您自己的文件,可以部署在家用电脑、NAS 或 VPS 上。下面将介绍它的功能、服务器要求,以及如何在 Ubuntu 上配合域名和 HTTPS 完成安装。
Jellyfin 是什么,为什么需要它
Jellyfin 是一款免费、开源的媒体服务器。服务器会索引电影、剧集、音乐、照片和其他内容,客户端应用则负责在手机、电脑或电视上播放这些内容。
扫描文件夹后,Jellyfin 会下载海报和简介,按季整理剧集,记录播放进度,并显示“继续观看”区域。家庭用户可以创建彼此独立的本地配置文件、限制媒体库访问权限并设置家长控制。Quick Connect 允许用户通过短代码在电视上登录,无需输入很长的密码。
Jellyfin 为 Android、iOS、Android TV、Roku、webOS、Tizen、Xbox 和电脑提供客户端,同时还支持网页界面以及与 Kodi 集成。
此外,Jellyfin 还支持音乐、IPTV、电视调谐器和电视节目录制。SyncPlay 可以让多个用户同步观看,插件则可添加字幕、新的元数据来源和各种集成功能。
Jellyfin 不会自行搜索或下载电影。它只负责整理和传输服务器所有者已经拥有的内容。
Jellyfin 与 Plex:主要区别
两者都能把本地收藏变成媒体服务,但采用的模式不同。
| 参数 | Jellyfin | Plex |
|---|---|---|
| 源代码 | 开源 | 专有 |
| 高级功能 | 服务器和官方客户端没有付费等级 | 部分功能取决于订阅方案 |
| 中心账户 | 不需要 | 使用服务商的生态系统 |
| 远程访问 | 所有者自行配置域名、反向代理或 VPN | 提供更多现成机制 |
| 数据控制权 | 最大 | 部分基础设施由服务商控制 |
人们选择 Jellyfin,通常是看重独立性、隐私以及无需订阅。若最重要的是尽可能简单地完成部署,并希望所有设备上的应用都具有一致且成熟的体验,那么 Plex 可能更方便。
Direct Play 还是转码:什么最消耗服务器资源
Jellyfin 的性能与其说取决于媒体库大小,不如说更取决于播放方式。
| 模式 | 工作方式 | 负载 |
|---|---|---|
| Direct Play | 服务器直接传输原始文件 | 低 |
| Direct Stream | 更换封装格式或单独处理某条轨道 | 低或中等 |
| Transcoding | 实时更改编解码器、分辨率或码率 | 高 |
如果电视支持文件所使用的编解码器、音频和字幕,服务器几乎不会消耗 CPU。问题通常出现在客户端无法识别格式、网络连接要求降低码率,或必须把字幕烧录进画面时。此时 Jellyfin 会启动 FFmpeg,并实时对视频进行转码。
4K、HEVC、HDR 以及从 HDR 转换为 SDR 尤其消耗资源。普通无显卡 VPS 即使拥有许多虚拟核心,也可能无法胜任。因此,使用兼容格式和 Direct Play,往往比升级到更高一级套餐更省钱。
Jellyfin 需要怎样的服务器
官方对常规安装的建议是大约 8 GB RAM。在没有图形界面的 Linux 上,小型服务器可以使用 4 GB RAM 运行。系统、数据库、图片、缓存和临时文件需要高速磁盘;媒体库通常单独存放,并占据大部分存储空间。
| 使用场景 | 起步配置 | 说明 |
|---|---|---|
| 音乐和一路 1080p Direct Play | 2 vCPU、4 GB RAM | 网络和磁盘速度更重要 |
| 小型家庭媒体库 | 4 vCPU、8 GB RAM | 建议使用兼容格式 |
| 偶尔进行 1080p 转码 | 4–8 个高性能 vCPU 或 GPU | 负载取决于编解码器 |
| 多路 4K/HDR | 现代 Intel iGPU 或独立显卡 | 普通纯 CPU VPS 不适合 |
还要考虑流量:20 Mbps 的视频流每小时大约传输 9 GB 数据。如果每天观看,月流量很快就会达到数百 GB。
家用服务器还是 VPS
对于数 TB 的媒体收藏和经常进行的硬件转码,家用迷你电脑或 NAS 更划算。您可以安装大容量硬盘,并选择支持 Intel Quick Sync 的处理器,但远程访问会受到供电、家庭网络以及是否拥有公网 IP 的影响。
VPS 具有公网地址、稳定的网络连接,并且可以全天候运行。它适合音乐、小型视频库、Direct Play,以及位于不同地点的用户。限制主要是存储成本,以及普通套餐通常不提供 GPU。
还可以采用混合方案:文件继续保存在家中,VPS 则作为受保护的入口。没有公网 IPv4 时,这种架构很有帮助,但播放速度仍然受到家庭网络上行带宽的限制。
使用 Docker Compose 在 Ubuntu 上安装 Jellyfin
在下面的配置中,Jellyfin 和 Caddy 运行在同一个 Docker 网络内。端口 8096 不会直接暴露到互联网;Caddy 负责接收 HTTPS 连接并自动申请证书。
首先,将域名的 A 记录(例如 media.example.com)指向服务器的 IP 地址。
1. 安装 Docker 并创建目录
sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo systemctl enable --now docker
sudo mkdir -p /opt/jellyfin/{config,cache,caddy-data,caddy-config}
sudo mkdir -p /srv/media/{movies,series,music}
cd /opt/jellyfin2. 创建 /opt/jellyfin/compose.yaml
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
volumes:
- ./config:/config
- ./cache:/cache
- /srv/media:/media:ro
networks: [media]
caddy:
image: caddy:2
container_name: jellyfin-caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data
- ./caddy-config:/config
networks: [media]
networks:
media:参数 :ro 会以只读方式挂载媒体库,从而保护原始文件,避免其被 Jellyfin 意外删除。
3. 创建 /opt/jellyfin/Caddyfile
media.example.com {
reverse_proxy jellyfin:8096
}将域名替换为您自己的域名,然后启动容器并开放所需端口:
sudo docker compose up -d
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 443/udp
sudo ufw enable如果 SSH 使用其他端口,请在执行 ufw enable 之前单独添加放行规则。
证书签发后,打开 https://media.example.com。在 Jellyfin 的网络设置中,将反向代理加入受信任代理列表,以确保外部访问限制能够正确生效。
媒体库的初始设置
在设置向导中选择语言,创建管理员账户,然后添加媒体库:
- 电影 —
/media/movies; - 剧集 —
/media/series; - 音乐 —
/media/music。
为提高识别准确率,请使用清晰的命名方式:
/media/movies/电影名称 (2024)/电影名称 (2024).mkv
/media/series/剧集名称 (2024)/Season 01/剧集名称 S01E01.mkv另外创建一个用于观看的普通用户配置文件,并在登录页面隐藏管理员账户。只向用户开放其所需的媒体库,除非确有必要,否则不要授予删除文件的权限。
更新与备份
Jellyfin 配置中包含用户、设置、数据库和播放进度。更新前,请先停止容器并备份 config 目录:
cd /opt/jellyfin
sudo docker compose stop jellyfin
sudo tar -czf /root/jellyfin-config-$(date +%F).tar.gz config
sudo docker compose start jellyfin请将压缩包转移到 VPS 之外。媒体文件需要单独备份。
执行以下命令进行更新:
sudo docker compose pull
sudo docker compose up -d不要直接暴露端口 8096。请使用 HTTPS 或 VPN,定期安装更新,并监控磁盘剩余空间。
在 tropic.host 的 VPS 上运行 Jellyfin
对于主要使用 Direct Play 的小型媒体库,可以从 4 GB RAM 的 Linux VPS 开始。若有多个用户、较大的数据库以及其他服务,选择 8 GB 更合理。
选择 tropic.host 的 VPS 时,应分别评估磁盘容量、每月流量以及是否需要转码。虚拟服务器可以作为一个始终在线、具有公网 IP 和 HTTPS 的访问节点,但无法替代 GPU 服务器。如果需要同时进行多路 4K/HDR 播放并转换格式,最好使用带 Intel iGPU 的家用服务器、独立服务器,或配有显卡的专用套餐。
可以先从小型收藏开始,在 Jellyfin 面板中查看 Direct Play 会话所占比例,然后根据实际负载再增加 CPU、RAM 或存储空间。
总结
Jellyfin 可以把自己的媒体收藏变成个人流媒体服务,不需要强制订阅,也不依赖中心账户。要顺利部署,应提前估算存储空间、流量以及发生转码的可能性。
使用 Direct Play 的小型服务器通常配备 4–8 GB RAM 就足够。经常播放 4K/HDR 内容则需要硬件视频处理。无论采用何种配置,都应使用 HTTPS 或 VPN 保护外部访问,并分别备份设置和媒体库。
FAQ
Jellyfin 完全免费吗?
是的。服务器和客户端都无需购买高级套餐。您只需要为硬件、VPS、磁盘、域名和流量付费。
Jellyfin 自带可直接观看的电影和剧集吗?
不带。用户需要自行添加媒体文件。
没有显卡的 VPS 可以运行 Jellyfin 吗?
可以,前提是大多数文件都通过 Direct Play 播放。若经常转码 4K 和 HDR 内容,则需要配备合适 iGPU 或独立显卡的服务器。
Jellyfin 需要多少 RAM?
小型 Linux 服务器可以使用 4 GB RAM 运行。对于家庭媒体库和多个用户,建议按 8 GB 规划。
如何通过互联网安全地访问 Jellyfin?
请使用域名,并通过反向代理配置 HTTPS,或者使用 VPN。不要直接暴露端口 8096,同时为用户创建权限最小化的独立账户。
