Jellyfin 是一个自由软件媒体系统 (项目地址点此直达) ,可让您进行媒体和流媒体的管理。它是专有的 Emby 和 Plex 的替代品,可通过多个应用程序从专用服务器向终端用户设备提供媒体。Jellyfin 是 Emby 3.5.2 版本的后代,移植到.NET Core 框架以支持完整的跨平台支持。没有任何附加条件,只是一个团队想要更好地构建更好的东西并共同努力实现它,致力于让所有用户都能访问最好的媒体系统。本文详细介绍如何在 Ubuntu 18.04 手动安装 Jellyfin 并使用 nginx 进行反代。注意,以下操作是在 root 账号下进行的,非 root 账号需提升到 root 权限。

安装依赖

安装 apt 的 https 传输

apt install apt-transport-https -y

启用 Universe 存储库

add-apt-repository universe

安装 Jellyfin

导入 GPG 签名密钥

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

添加软件源

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

安装 Jellyfin

apt update && apt install jellyfin -y

管理 Jellyfin 系统服务

Jellyfin 支持以下三种形式的服务管理,根据自己的喜好选择:

service jellyfin status
systemctl restart jellyfin
/etc/init.d/jellyfin stop

使用 nginx 进行反代

安装最新稳定版 nginx

使用如下命令添加 nginx 软件源:

apt update && apt install software-properties-common -y && add-apt-repository ppa:ondrej/nginx -y

安装最新稳定版 nginx :

apt update && apt install nginx-extras -y

创建 nginx 虚拟机

使用如下命令创建 nginx 虚拟机配置文件:

vim /etc/nginx/sites-available/jellyfin

复制以下内容粘贴并保存:

server {
  listen         80;
  server_name    example.com;  # 修改为自己想用的域名

  access_log  /var/log/nginx/example.com_access.log;    # 修改为自己想用的域名
  error_log   /var/log/nginx/example.com_error.log;     # 修改为自己想用的域名

  location / {
        # Proxy main Jellyfin traffic
        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 /embywebsocket {
        # 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;
    }
}

接入 nginx

使用如下命令将虚拟机接入 nginx:

ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/jellyfin && systemctl restart nginx

配置防火墙

配置防火墙,允许 http 及 https:

ufw allow http && ufw allow https

启用 ssl

使用如下命令安装 cerbot :

add-apt-repository ppa:certbot/certbot -y && apt update && apt install python-certbot-nginx -y

为域名签发证书:

certbot  # 按提示操作,完成 ssl 配置

禁止 IP 及非配置域名访问

按官方建议删除 /etc/nginx/sites-enabled 下的 default 配置文件:

rm /etc/nginx/sites-enabled/default

创建 default_server ,禁止 IP 及非配置域名访问:

cat > /etc/nginx/sites-available/default_server << EOF
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    
    server_name _;
    return    500;
    
}

server {
   listen 443 ssl default_server;
   listen [::]:443 ssl default_server;
   ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;   #替换为任一可用ssl证书
   ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; #替换为任一可用ssl证书私钥
    
   server_name _;
   return    500;

}
EOF

启用 default_server 并重启 nginx :

ln -s /etc/nginx/sites-available/default_server /etc/nginx/sites-enabled/default_server && systemctl restart nginx

浏览器访问 example.com 即可打开 Jellyfin 配置向导,按照提示依次配置系统语言、账号信息、媒体库、默认元数据、远程访问等,完成 Jellyfin 安装。配置完成后便可使用自己设置的账号登录 Jellyfin 。通过以上步骤便可在 Ubuntu 18.04 手动安装 Jellyfin 并使用 nginx 进行反代,本文结束。

jellyfin.png