Jellyfinは、メディアの管理とストリーミングを可能にするオープンソースのメディアストリーミングシステムです。これはクロスプラットフォームであり、EmbyやPlexなどの他のアプリケーションに代わるものです。 Jellyfinを使用すると、Webベースのインターフェイスから、メディアファイル、テレビ番組、音楽、写真を整理して共有できます。これらのストリーミングメディアには、インターネット経由でPC、タブレット、電話、Roku、TVでアクセスできます。 Jellyfinは、TheMovieDB、OpenMovie、Rotten Tomatoes、TheTVDBデータベースからメタデータを自動的に取得します。
この投稿では、Debian10にリバースプロキシとしてNginxを使用してJellyfinメディアストリーミングサーバーをインストールする方法を紹介します。
- Debian10を実行しているサーバー。
- サーバーIPで指定された有効なドメイン名。
- ルートパスワードがサーバーに設定されます。
まず、システムパッケージを最新バージョンに更新する必要があります。次のコマンドで更新できます:
apt-get update -y
すべてのパッケージが更新されたら、次のコマンドを使用して他の必要なパッケージをインストールします。
apt-get install apt-transport-https ca-certificates gnupg2 curl git -y
すべてのパッケージがインストールされたら、次のステップに進むことができます。
Jellyfinをインストール
デフォルトでは、JellyfinパッケージはDebian10リポジトリに含まれていません。そのため、JellyfinリポジトリをAPTに追加する必要があります。
次のコマンドで追加できます:
echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/debian buster main" | tee /etc/apt/sources.list.d/jellyfin.list
リポジトリが追加されたら、次のコマンドを使用してGPGキーを追加します。
wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | apt-key add -
次に、リポジトリを更新し、次のコマンドを使用してJellyfinをインストールします。
apt-get update -y
apt-get install jellyfin -y
Jellyfinをインストールしたら、次のコマンドでJellyfinのステータスを確認できます。
systemctl status jellyfin
次の出力が得られるはずです:
? jellyfin.service - Jellyfin Media Server Loaded: loaded (/lib/systemd/system/jellyfin.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/jellyfin.service.d ??jellyfin.service.conf Active: active (running) since Mon 2021-03-22 08:27:42 UTC; 5min ago Main PID: 10192 (jellyfin) Tasks: 17 (limit: 4701) Memory: 113.9M CGroup: /system.slice/jellyfin.service ??10192 /usr/bin/jellyfin --webdir=/usr/share/jellyfin/web --restartpath=/usr/lib/jellyfin/restart.sh --ffmpeg=/usr/lib/jellyfin-ffm Mar 22 08:27:45 debian10 jellyfin[10192]: [08:27:45] [WRN] 127.0.0.1/32: GetBindInterface: Loopback 127.0.0.1 returned. Mar 22 08:27:45 debian10 jellyfin[10192]: [08:27:45] [INF] Executed all pre-startup entry points in 0:00:00.1545678 Mar 22 08:27:45 debian10 jellyfin[10192]: [08:27:45] [INF] Core startup complete Mar 22 08:27:46 debian10 jellyfin[10192]: [08:27:46] [INF] Executed all post-startup entry points in 0:00:00.1976994 Mar 22 08:27:46 debian10 jellyfin[10192]: [08:27:46] [INF] Startup complete 0:00:03.6985068 Mar 22 08:27:48 debian10 jellyfin[10192]: [08:27:48] [INF] StartupTrigger fired for task: Update Plugins Mar 22 08:27:48 debian10 jellyfin[10192]: [08:27:48] [INF] Queuing task PluginUpdateTask Mar 22 08:27:48 debian10 jellyfin[10192]: [08:27:48] [INF] Executing Update Plugins Mar 22 08:27:49 debian10 jellyfin[10192]: [08:27:49] [INF] Update Plugins Completed after 0 minute(s) and 0 seconds Mar 22 08:27:49 debian10 jellyfin[10192]: [08:27:49] [INF] ExecuteQueuedTasks
この時点で、Jellyfinが起動し、ポート8096でリッスンしています。次のコマンドで確認できます。
ss -antpl | grep 8096
出力:
LISTEN 0 128 0.0.0.0:8096 0.0.0.0:* users:(("jellyfin",pid=10192,fd=289))
Nginxをリバースプロキシとして構成する
次に、ポート80でJellyfinにアクセスするために、Nginxをリバースプロキシとして構成する必要があります。
まず、次のコマンドを使用してNginxパッケージをインストールします。
apt-get install nginx -y
インストールしたら、次のコマンドを使用して新しいNginx構成ファイルを作成します。
nano /etc/nginx/conf.d/jellyfin.conf
次の行を追加します:
server { 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を確認します。
nginx -t
出力:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
次に、Nginxサービスを再起動して、変更を適用します。
systemctl reload nginx
次に、Webブラウザーを開き、URL http://jellyfin.example.comを使用してJellyfinWebインターフェースにアクセスします。 。次のページにリダイレクトされます:
言語を選択して、次へをクリックします ボタン。次のページが表示されます:
ユーザー名とパスワードを入力し、次へをクリックします ボタン。次のページが表示されます:
次へをクリックします ボタン。次のページが表示されます:
メタデータ言語を選択し、次へをクリックします ボタン。次のページが表示されます:
リモートアクセスを許可し、次へをクリックします ボタン。インストールが完了すると、次のページが表示されます。
完了をクリックします ボタンをクリックしてインストールを終了します。 Jellyfinログインページが表示されます:
ユーザー名とパスワードを入力し、署名をクリックします で ボタン。次のページにJellyfinダッシュボードが表示されます。
次に、Certbotクライアントパッケージをインストールして、Let'sEncryptSSLの管理をインストールする必要があります。まず、次のコマンドを使用してCertbotをインストールします。
apt-get install python3-certbot-nginx -y
インストールが完了したら、次のコマンドを実行してLet'sEncryptSSLをWebサイトにインストールします。
certbot --nginx -d jellyfin.example.com
以下に示すように、有効なメールアドレスを入力し、利用規約に同意するよう求められます。
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for jellyfin.example.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/conf.d/jellyfin.conf
次に、以下に示すように、HTTPトラフィックをHTTPSにリダイレクトするかどうかを選択します。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
2と入力し、Enterキーを押してインストールを終了します。次の出力が表示されます。
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/jellyfin.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://jellyfin.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=jellyfin.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/jellyfin.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/jellyfin.example.com/privkey.pem Your cert will expire on 2020-10-30. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le - We were unable to subscribe you the EFF mailing list because your e-mail address appears to be invalid. You can try again later by visiting https://act.eff.org.
これで、WebサイトはLet'sEncryptSSLで保護されます。 URLhttps://jellyfin.example.com。を使用して安全にアクセスできます
おめでとう!これで、Debian10サーバーにJellyfinが正常にインストールされました。メディアを友達、家族、他のユーザーと簡単に共有できるようになりました。