如何在 Ubuntu 上安装 Jellyfin 媒体服务器

Jellyfin 是一个开源的媒体服务器软件,让你可以整理、管理和流式传输你的个人媒体收藏,比如电影、音乐、电视节目和照片,而且完全免费,没有订阅费用或数据收集的担忧。

简介

  • 媒体管理:Jellyfin 整理媒体库,自动获取元数据,提供丰富的细节,比如封面、描述和演员表。
  • 多平台访问:服务器可以在各种设备上访问,包括智能电视、手机(通过 Android/iOS 应用)、网页浏览器和流媒体设备。
  • 直播电视和 DVR:借助电视调谐器,你可以观看直播电视,甚至录制内容。
  • 注重隐私:Jellyfin 不收集用户数据,不需要在线账户,提供完全的隐私控制。
  • 开源:Jellyfin 完全开源,遵循 GPLv3 许可,没有付费墙后的特殊功能。

流行用例

  • 家庭媒体中心:创建一个媒体中心,可以访问电影、电视节目和音乐,并且可以从任何连接的设备上访问。
  • 远程访问:通过网页浏览器或支持的应用,从任何地方访问你的媒体。
  • 家庭档案:创建多个用户档案,每个都有自己的媒体偏好和家长控制。

Jellyfin 是那些想要一个完全免费且自托管的媒体流解决方案,而不牺牲隐私的用户的首选。

必要前提

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一个指向服务器 IP 的域名(可选)。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。本文将以雨云为例进行演示。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便尝试本篇文章的内容。

注册链接: https://rainyun.ivwv.site/

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

点击 云产品云服务器立即购买

选择距离你较近的区域,以保证低延迟。

选择配置。

选择 Ubuntu 22.04 版本。

最后点击 立即购买,并按照提示进行购买。购买后等待机器部署完毕,点击购买的服务器,进入管理面板,找到远程连接相关信息。

使用 PowerShell 进行远程连接。

输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

到此为止,我们的云服务器就创建好了。

开始安装

1.安装所需包

更新你的系统并安装必要的包:

bash 复制代码
apt install apt-transport-https ca-certificates gnupg curl -y

创建 keyrings 目录并添加 Jellyfin GPG 密钥:

bash 复制代码
mkdir -p /etc/apt/keyrings
curl -fsSL <https://repo.jellyfin.org/jellyfin_team.gpg.key> | sudo gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg

2.添加 Jellyfin 仓库

创建一个 Jellyfin 仓库文件:

bash 复制代码
cat <<EOF | tee /etc/apt/sources.list.d/jellyfin.sources
Types: deb
URIs: <https://repo.jellyfin.org/$>( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release )
Suites: $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release )
Components: main
Architectures: $( dpkg --print-architecture )
Signed-By: /etc/apt/keyrings/jellyfin.gpg
EOF

更新包列表:

bash 复制代码
apt update

3.安装 Jellyfin

使用以下命令安装 Jellyfin:

bash 复制代码
apt install jellyfin -y

4.验证 Jellyfin 服务

检查 Jellyfin 服务的状态:

bash 复制代码
systemctl is-enabled jellyfin
systemctl status jellyfin

5.管理 Jellyfin 服务

使用以下命令管理 Jellyfin 服务:

  • 启动 Jellyfin
bash 复制代码
systemctl start jellyfin
  • 停止 Jellyfin
bash 复制代码
systemctl stop jellyfin
  • 重启 Jellyfin
bash 复制代码
systemctl restart jellyfin

6.配置防火墙

安装 UFW 并配置它以允许必要的服务(也可以直接在云服务器Web面板中开启对应的端口):

bash 复制代码
apt install ufw -y
ufw allow OpenSSH
ufw enable
ufw allow "WWW Full"
ufw status

7.安装 Apache 和 Certbot

安装 Apache 和 Certbot 用于 SSL 配置:

bash 复制代码
apt install apache2 certbot python3-certbot-apache -y

检查 Apache 状态:

bash 复制代码
systemctl is-enabled apache2
systemctl status apache2

启用所需的 Apache 模块:

bash 复制代码
sudo a2enmod proxy proxy_http ssl proxy_wstunnel remoteip http2 headers
systemctl restart apache2

8.设置 Apache 作为反向代理

创建 Jellyfin 的 web 根目录并设置权限:

bash 复制代码
mkdir -p /var/www/html/jellyfin/public_html
chown -R www-data:www-data /var/www/html/jellyfin/public_html

使用 Certbot 为你的域名获取 SSL 证书:

bash 复制代码
certbot certonly --agree-tos --email you_email@gmail.com --no-eff-email --webroot -w /var/www/html -d your_domain

9.配置 Apache 虚拟主机

创建一个新的 Apache 虚拟主机配置:

bash 复制代码
nano /etc/apache2/sites-available/jellyfin.conf

插入以下配置,根据需要更改域名(your_domain)、SSL 证书路径和服务器 IP 地址:

xml 复制代码
<VirtualHost *:80>
    ServerName your_domain

    # Comment to prevent HTTP to HTTPS redirect
    Redirect permanent / https://your_domain/

    ErrorLog /var/log/apache2/your_domain-error.log
    CustomLog /var/log/apache2/your_domain-access.log combined
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName your_domain
    DocumentRoot /var/www/html/jellyfin/public_html

    ProxyPreserveHost On

    ProxyPass "/.well-known/" "!"
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443"

    ProxyPass "/socket" "ws://0.0.0.0:8096/socket"
    ProxyPassReverse "/socket" "ws://0.0.0.0:8096/socket"

    ProxyPass "/" "http://0.0.0.0:8096/"
    ProxyPassReverse "/" "http://0.0.0.0:8096/"

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/your_domain/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/your_domain/privkey.pem
    Protocols h2 http/1.1

    SSLCipherSuite HIGH:RC4-SHA:AES128-SHA:!aNULL:!MD5
    SSLHonorCipherOrder on

    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

    ErrorLog /var/log/apache2/your_domain-error.log
    CustomLog /var/log/apache2/your_domain-access.log combined
</VirtualHost>
</IfModule>

10.启用 Jellyfin 站点并重启 Apache

启用 Jellyfin 站点配置:

bash 复制代码
a2ensite jellyfin.conf
apachectl configtest
systemctl restart apache2

11.访问 Jellyfin Web 界面

打开你的网页浏览器,访问你的 Jellyfin 安装的域名,比如 https://your-domain.com/。如果配置成功,你应该可以看到 Jellyfin 安装向导,然后可以继续设置你的媒体服务器。

首先,选择你的 Jellyfin 安装的默认语言,然后点击 Next

现在,为你的 Jellyfin 安装创建一个新的管理员用户。输入你的用户名和密码,然后点击 Next

对于媒体库,你可以稍后配置。点击 Next 继续。

选择你的首选语言,然后点击 Next

检查允许远程连接的选项以启用对你的 jellyfin 媒体服务器的远程访问。此外,你可以通过检查选项来启用端口映射。然后,点击 Next

如果你的配置成功,你应该得到 You're Done! 的消息。点击 Finish 完成 jellyfin 安装。

现在,你应该被重定向到 Jellyfin 登录页面。输入你的管理员用户名和密码,然后点击 Sign In

如果一切顺利,你应该得到像这样的 Jellyfin 管理仪表板:

最后,点击 Administration 部分的 Dashboard 菜单。你应该可以看到关于你的 Jellyfin 媒体服务器安装的详细信息:

Jellyfin 现在已经成功安装在你的服务器上。通过配置 Apache 作为反向代理,你可以通过 HTTPS 安全地访问 Jellyfin。

相关链接

雨云 - 新一代云服务提供商: https://www.rainyun.com/NTEzMTM1_?s=blog

面试鸭:https://mianshiya.com/?shareCode=sq29yv

我的博客:https://blog.ivwv.site

相关推荐
LIKEYYLL5 分钟前
GNU Octave:特性、使用案例、工具箱、环境与界面
服务器·gnu
云云32141 分钟前
搭建云手机平台的技术要求?
服务器·线性代数·安全·智能手机·矩阵
云云32144 分钟前
云手机有哪些用途?云手机选择推荐
服务器·线性代数·安全·智能手机·矩阵
cominglately1 小时前
centos单机部署seata
linux·运维·centos
魏 无羡1 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
coder_pig1 小时前
📝小记:Ubuntu 部署 Jenkins 打包 Flutter APK
flutter·ubuntu·jenkins
CircleMouse1 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
Karoku0662 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes
木子Linux2 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
mit6.8242 小时前
Ubuntu 系统下性能剖析工具: perf
linux·运维·ubuntu