Tropic Host

在 VPS 上部署 Jellyfin:搭建自己的媒体服务器

阅读约需 10 分钟
Tropic
在 VPS 上部署 Jellyfin:搭建自己的媒体服务器

在 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:主要区别

两者都能把本地收藏变成媒体服务,但采用的模式不同。

参数JellyfinPlex
源代码开源专有
高级功能服务器和官方客户端没有付费等级部分功能取决于订阅方案
中心账户不需要使用服务商的生态系统
远程访问所有者自行配置域名、反向代理或 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 Play2 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/jellyfin

2. 创建 /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,同时为用户创建权限最小化的独立账户。