前言

最近买了台储存型 VPS 来刷 PT. 有的时候还想看些片子,因为没开各家流媒体服务商的会员,所以我一般都是把资源下到移动硬盘里。但是走到哪都拿个移动硬盘也不现实。所以就萌生了在那台储存型 VPS 上搭个影音中心的想法。为了最好的体验,这个影音中心应该建在局域网内。但是我因为缺少相关的设备,就放在公网了。

为什么选择 Jellyfin

我选择影音系统软件主要有以下考虑:

  • 开源
  • 免费
  • 多平台客户端支持
  • 好用

所以在一开始的时候我想要搭建 kodi, 但是它对 Centos7 很不友好(没有预编译的包, 编译的环境也很难架设), 于是便装了大名鼎鼎的 PLEX. 我很不喜欢 PLEX 的一点是, 它的安卓客户端如果想要直接播放电影是需要订阅的. 淘宝上终身订阅大概在 250 到 300 之间, 土豪可以考虑. 而不愿意买授权的我则选择卸载掉, 继续试车. 我尝试的第三个软件是 emby, 也是商业软件. 但是他的很多基本功能是不需要花钱. 后来经朋友提醒, 有一个基于 emby 的开源软件 Jellyfin. 这不直接开冲?

安装 Jellyfin

依赖

Jellyfin 依赖 ffmpeg, libicu 和 liblttng-ust, 所以得先把这个装上.

yum install epel-release
rpm -v --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
yum install ffmpeg ffmpeg-devel lttng-ust libicu

本体

Jellyfin 的当前最新稳定版本可以在 这里 找到.
需要先安装 server 和 web, 再安装 Jellyfin. 截止至发文时, Jellyfin 的最新版本是 10.6.4. 那么安装命令应为:

wget https://repo.jellyfin.org/releases/server/centos/stable/server/jellyfin-server-10.6.4-1.el7.x86_64.rpm
yum localinstall jellyfin-server-10.6.4-1.el7.x86_64.rpm
wget https://repo.jellyfin.org/releases/server/centos/stable/web/jellyfin-web-10.6.4-1.el7.noarch.rpm
yum localinstall jellyfin-web-10.6.4-1.el7.noarch.rpm
wget https://repo.jellyfin.org/releases/server/centos/stable/server/jellyfin-10.6.4-1.el7.x86_64.rpm
yum localinstall jellyfin-10.6.4-1.el7.x86_64.rpm

然后启动服务, 并设置为开机自启.

systemctl enable jellyfin --now

防火墙

Jellyfin 服务默认会使用 tcp 端口 8096 和 8920(SSL) 作为网页管理端口. 如果你的机器有运行防火墙的话, 记得给他们加个白名单. udp 端口 1900 和 7359 被作为设备发现端口. 如果你的服务器假设在公网的话, 不要开放这两个端口. 在内网的话, 则需要放行.

服务无法启动

你可以通过 service jellyfin status 查看当前 jellyfin 服务的状态.

如果你遇到了 Jellyfin 服务启动不起来的问题, 可以尝试一下把 jellyfin.service 里的运行用户改成 root.

打开 /usr/lib/systemd/system/jellyfin.service, 把 User=Jellyfin 改成 User=root, 然后把下面的 user-group 字段删掉.

配置

不出意外的话, 访问 http://[服务器的ip]:8096 就可以设置 Jellyfin 了(地址中没有中括号).

后记

因为我的储存型 VPS 在 OVH 机房, 所以到国内三网的效果都不是很好. 为了解决加载慢的问题, 可以尝试套 CDN, 挂梯子或者反代. 前两者都是比较容易做到的. 后者我尝试用 NGINX 去实现, 但是总是会遇到奇怪的问题, 比如声音文件无法加载, 或者分片的视频无法加载. 等我折腾好了再水一文.

除另有声明外,本博客文章均采用 知识共享(Creative Commons) 署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。