如何在Ubuntu 20.04 LTS Server / Desktop上安装Jellyfin Media Server

本教程将向您展示如何在Ubuntu 20.04 LTS服务器/桌面上安装Jellyfin媒体服务器。 Jellyfin是一个免费的开源应用程序,它使您可以在一个漂亮的界面中组织电影,电视节目,音乐和照片,并在网络上或通过网络在PC,平板电脑,手机,电视,Roku等上流式传输这些媒体文件。互联网。 Jellyfin可以安装在Linux,MacOS和Windows上。

果冻功能

Jellyfin是Emby媒体服务器的一个分支。 它具有许多与Plex和Emby相同的功能。

  • 与Plex或Emby不同,Jellyfin是100%免费和开源的。 无广告。 移动应用没有播放限制。 (尽管iOS应用无法在后台播放视频。)
  • 观看直播电视并设置自动录制以扩展您的媒体库。
  • 自动从TheTVDB,TheMovieDB,TheOpenMovie数据库和Rotten Tomatoes中获取艺术品,元数据。
  • 支持DLNA。
  • 可以安装可选插件以提供其他功能。
  • 支持使用FFMpeg的视频编码/解码的硬件加速。
  • 和更多。

在Ubuntu 20.04上安装Jellyfin Media Server

Jellyfin未包含在默认的Ubuntu存储库中,但它具有自己的存储库。 运行以下命令以将Jellyfin存储库添加到您的Ubuntu系统。

echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/jellyfin.list

接下来,运行以下命令将Jeffyfin GPG密钥导入Ubuntu系统,以便APT可以在安装过程中验证软件包的完整性。

wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo apt-key add -

并且由于该存储库使用HTTPS连接,因此我们还需要安装 apt-transport-https ca-certificates 包。

sudo apt install apt-transport-https ca-certificates

最后,在Ubuntu系统上更新软件包索引并安装Jellyfin。

sudo apt update

sudo apt install jellyfin

此命令还将安装其他3个软件包作为依赖项:

  • jellyfin-ffmpeg:用于视频转码。
  • jellyfin-server:后端服务器。
  • jellyfin-web:前端Web界面。

现在已经安装了Jellyfin媒体服务器,我们可以通过以下方法检查其状态:

systemctl status jellyfin

如您所见,它在我的Ubuntu 20.04系统上运行。 (按 q 键以收回对终端的控制权。)

如何在Ubuntu 20.04 LTS Server / Desktop上安装Jellyfin Media Server

如果Jellyfin媒体服务器未运行,则可以使用以下命令启动它:

sudo systemctl start jellyfin

Jellyfin媒体服务器初始设置

基于Web的管理界面位于端口8096上。您可以通过以下URL访问Jellyfin Web界面。

http://127.0.0.1:8096/web

如果在远程Ubuntu服务器上安装了Jellyfin,则需要使用Nginx或Apache设置反向代理才能访问Web UI,本教程后面将对此进行说明。

第一步是选择您喜欢的语言。

安装jellyfin媒体服务器ubuntu 20.04

在下一个屏幕上,创建一个用户帐户。

jellyfin-ubuntu-20.04-apt-存储库

现在您可以添加库。 请点击 Add Media Library 按钮。

jellyfin ubuntu 20.04服务器

选择一个 内容类型 (电影,音乐,电视节目等)和显示名称。

如何在Ubuntu 20.04 LTS Server / Desktop上安装Jellyfin Media Server

然后点击 加号(+) 按钮选择内容的文件夹。

jellyfin媒体文件夹路径

请注意 jellyfin 用户需要具有对媒体目录的读取和执行权限。 例如,我的2T外部硬盘驱动器安装在 /media/linuxbabe/ ,由root拥有。 不在群组中的用户 root 无法访问它,所以我运行以下命令给用户 jellyfin 读取并执行权限。 (我不建议通过以下方式更改所有权 chown 要么 chgrp 命令。 使用 setfacl 命令就足够了。)

sudo setfacl -m u:jellyfin:rx /media/linuxbabe/

您可能还需要在单个媒体目录上分配权限,如下所示。

sudo setfacl -m u:jellyfin:rx /media/linuxbabe/directory-name

添加递归标志(-R), 这使 jellyfin 读取并执行驱动器上每个文件和子目录的权限。

sudo setfacl -R -m u:jellyfin:rx /media/linuxbabe/

如果外部硬盘驱动器仅用于存储媒体文件,则可以这样做,但是如果外部硬盘驱动器上有敏感文件,则不要这样做。

完成添加媒体文件夹后,即可配置库设置。 选择您的语言,国家/地区等。

jellyfin库设置

请点击 OkNext 按钮。 您以后可以随时添加更多库。 下一步允许您选择是否启用远程访问。 我不建议启用本机远程访问方法,因为它不提供HTTPS加密,因此请取消选中这两个复选框。 如果需要远程访问,请在本文后面阅读如何设置反向代理。

果冻远程访问

请点击 NextFinish 按钮。 最后,登录到您的Jellyfin帐户。

重做初始设置

如果您在初始设置中出错,则可以重新开始。 首先,编辑Jellyfin配置文件。

sudo nano /etc/jellyfin/system.xml

更改

<IsStartupWizardCompleted>true</IsStartupWizardCompleted>

<IsStartupWizardCompleted>false</IsStartupWizardCompleted>

保存并关闭文件。 然后重新启动Jellyfin。

sudo systemctl restart jellyfin

现在访问 localhost:8096/web 您将再次看到设置向导。

在哪里下载电影和电视节目

  1. 使用像Deluge这样的洪流客户端。
  2. 了解如何从Usenet下载。

Usenet的优势

  1. 它可以为您提供更好的隐私,因为其他人看不到您正在下载的内容。
  2. 超快的下载速度。
  3. Usenet上的文件通常比torrent文件保留的时间更长。 例如,Newsdemon将文件存储4430天(超过12年),因此您可以非常快的速度下载旧内容。

设置反向代理

既然听 127.0.0.1:8096,Jellyfin Web界面仅可用于来自同一台计算机的连接。 为了能够从远程计算机访问Jellyfin Web界面,我们可以使用Nginx或Apache为Jellyfin设置反向代理。

Nginx的

Nginx是非常流行的Web服务器和反向代理。 如果您想使用Nginx,请运行以下命令进行安装。

sudo apt install nginx

然后为Jellyfin创建一个服务器阻止文件。

sudo nano /etc/nginx/conf.d/jellyfin.conf

将以下内容添加到此文件。 更换 jellyfin.example.com 用您自己的域名。 您还应该为此子域创建DNS A记录。 如果您没有真实域名,建议您到NameCheap购买。 价格低廉,终身免费提供Whois隐私保护。

server {
      listen 80;
      listen [::]:80;
      server_name jellyfin.example.com;

      access_log /var/log/nginx/jellyfin.access;
      error_log /var/log/nginx/jellyfin.error;

      set $jellyfin 127.0.0.1;

      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_set_header X-Forwarded-Protocol $scheme;
          proxy_set_header X-Forwarded-Host $http_host;

          # Disable buffering when the nginx proxy gets very resource heavy upon streaming
          proxy_buffering off;
      }

      # location block for /web - This is purely for aesthetics so /web/#!/ works instead of having to go to /web/index.html/#!/
      location ~ ^/web/$ {
          # Proxy main Jellyfin traffic
          proxy_pass http://$jellyfin:8096/web/index.html/;
          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_set_header X-Forwarded-Protocol $scheme;
          proxy_set_header X-Forwarded-Host $http_host;
      }

      location /socket {
          # Proxy Jellyfin Websockets traffic
          proxy_pass http://$127.0.0.1:8096;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";
          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_set_header X-Forwarded-Protocol $scheme;
          proxy_set_header X-Forwarded-Host $http_host;
      }

        # Security / XSS Mitigation Headers
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Content-Type-Options "nosniff";

}

保存并关闭此文件。 然后测试Nginx配置。

sudo nginx -t

如果测试成功,请重新加载Nginx以使更改生效。

sudo systemctl reload nginx

现在您可以通过以下方式访问Jellyfin媒体服务器 jellyfin.example.com

阿帕奇

如果您比Nginx更喜欢Apache,请使用以下命令安装Apache Web服务器。

sudo apt install apache2

要将Apache用作反向代理,我们需要启用 proxy 模块和标头模块。

sudo a2enmod proxy proxy_http headers proxy_wstunnel

然后为Jellyfin创建一个虚拟主机文件。

sudo nano /etc/apache2/sites-available/jellyfin.conf

将以下配置放入文件中。 更换 jellyfin.example.com 与您的实际域名。 不要忘记为此子域创建DNS A记录。 如果您没有真实域名,建议您到NameCheap购买。 价格低廉,终身免费提供Whois隐私保护。

<VirtualHost *:80>
   ServerName jellyfin.example.com
   ErrorDocument 404 /404.html

   #HTTP proxy
   ProxyPass / http://localhost:8096/
   ProxyPassReverse / http://localhost:8096/

   #Websocket proxy
   SSLProxyEngine on
   <Location /:/websockets/notifications>
        ProxyPass wss://localhost:8096/:/websockets/notifications
        ProxyPassReverse wss://localhost:8096/:/websockets/notifications
   </Location>

   Header always unset X-Frame-Options
</VirtualHost>

保存并关闭文件。 然后启用此虚拟主机。

sudo a2ensite jellyfin.conf

重新启动Apache

sudo systemctl restart apache2

现在您可以使用域名访问Jellyfin媒体服务器 jellyfin.example.com

启用HTTPS

为了在您从外部访问Jellyfin服务器时对HTTP通信进行加密,我们可以通过安装由Let’s Encrypt颁发的免费TLS证书来启用HTTPS。 运行以下命令以在Ubuntu 20.04上安装Let’s Encrypt客户端(certbot)。

sudo apt install certbot

如果使用Nginx,则还需要安装Certbot Nginx插件。

sudo apt install python3-certbot-nginx

接下来,运行以下命令以获取并安装TLS证书。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d jellyfin.example.com

如果使用Apache,则需要安装Certbot Apache插件。

sudo apt install python3-certbot-apache

接下来,运行以下命令以获取并安装TLS证书。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d jellyfin.example.com

哪里:

  • --nginx:使用nginx插件。
  • --apache:使用Apache插件。
  • --agree-tos:同意服务条款。
  • --redirect:通过301重定向强制HTTPS。
  • --hsts:将Strict-Transport-Security标头添加到每个HTTP响应。 强制浏览器始终对域使用TLS。 防御SSL / TLS剥离。
  • --staple-ocsp:启用OCSP装订。 有效的OCSP响应被装订到服务器在TLS期间提供的证书。

现在应该获得证书并自动安装。

jellyfin启用https certbot letsencrypt

您可以通过HTTPS访问Jellyfin Web界面: https://jellyfin.example.com

jellyfin Web界面

如何在Ubuntu 20.04上升级Jellyfin

当新版本的Jellyfin媒体服务器发布时,您可以通过执行以下命令来对其进行升级。

sudo apt update

sudo apt upgrade

然后重新启动Jellyfin。

sudo systemctl restart jellyfin

故障排除

如果您的Ubuntu服务器运行WireGuard VPN,您可能会在Jellyfin日志中看到以下错误(sudo journalctl -eu jellyfin)。

[ERR] Error sending socket message from 10.0.0.102 to 239.255.255.250:1900
System.Net.Sockets.SocketException (0xFFFFFFFF): Bad value for ai_flags

此错误意味着无法将消息从WireGuard接口发送到239.255.255.250,这是SSDP(简单服务发现协议)多播地址。 这是由于不允许您的WireGuard接口访问IP地址。

要解决此问题,请编辑WireGuard接口配置文件。

sudo nano /etc/wireguard/your-interface.conf

找出 AllowedIPs 参数。 我的像下面。

AllowedIPs = 10.0.0.0/8

如您所见,VPN客户端仅被允许连接到10.0.0.0/8网络。 现在添加 239.255.255.250 地址。

AllowedIPs = 10.0.0.0/8, 239.255.255.250

保存并关闭文件。 重新启动WireGuard。

sudo systemctl restart [email protected]

重新启动Jellyfin。

sudo systemctl restart jellyfin

检查Jellyfin日志(sudo journalctl -eu jellyfin)。 上面的错误应该消失了。

包起来

我希望本教程可以帮助您在Ubuntu 20.04上安装Jellyfin媒体服务器。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。 保重🙂

Sidebar