Ubuntu 16.04: PLEXをインストールしてYoutubeのような個人用動画サーバを立ち上げる

Ubuntu 16.04にPLEXをインストールして、内部ネットワーク向けに動画サーバを立ち上げる方法を記載します。

インストールは簡単なのでお勧めです。

 

1 PLEXとは

個人利用の為のメディアサーバーです。

かなり簡単にYoutubeのようなサーバを立ち上げることができます。

ブラウザ経由でアクセスするのでAndroidからも閲覧できます。

 

基幹部分は無料で、プレミアムを購入することで追加機能を利用できます。

今回はフリーで利用できる部分でUbuntu 16.04上にある動画ファイルを別マシンのChromeから閲覧します。

2 PLEXパッケージのインストール

PLEXのダウンロードページからUbuntu向けのdebパッケージを取得してインストールします。

$ wget https://downloads.plex.tv/plex-media-server/0.9.16.6.1993-5089475/plexmediaserver_0.9.16.6.1993-5089475_amd64.deb
$ sudo dpkg -i plexmediaserver_0.9.16.6.1993-5089475_amd64.deb

ファイルコピー以外に、systemdへの登録とplexユーザが追加されます。

ufwを動かしている場合は32400/tcpと32400/udpを開けて下さい。

3 Chromiumのインストール

Firefoxでは動画プレイヤーが上手く動作しない問題があるようなので、Chromiumをインストールします(Chromeでも問題ありません)。

$ sudo apt-get install -y chromium-browser chromium-browser-l10n

4 PLEXへ接続

Chromimu/Chromeブラウザで以下のURLに接続します。

http://[Ubuntu 16.04のマシンへのアドレス]:32400/web

初回接続時に利用規約の確認画面が表示されます。

「同意する」を押した後、PLEXユーザのログイン画面が表示されます。

ここではログインしないままで続けていきます。

0001_License.png

PLEXユーザアカウントの登録画面が表示されますが、登録せず再度上記のIPアドレスに接続します。

ホーム画面が表示されます。

5 ライブラリの追加

PLEXはライブラリという単位で動画や画像を管理します。

ライブラリは指定されたディレクトリから全てのデータを再帰的にスキャンし、サムネイル等の情報をメタデータとして登録します。

メタデータの登録完了後、動画や画像の閲覧が可能になります。

メタデータは以下のディレクトリ配下に格納されます。

/var/lib/plexmediaserver/Library/Application\ Support

映画用のライブラリの場合、動画データのみがライブラリへ追加されます。

写真用のライブラリの場合、画像データのみがライブラリへ追加されます。

ここでは映画用のライブラリを追加し、以下のディレクトリを指定します。

/var/lib/plexmediaserver/Library/Movies

画面左側にある「ライブラリの追加」を選択します。ライブラリの種類と名前を決めます。

0002_Add-Library.png

「メディアフォルダーを見る」を選択します。

0003_Select-Directory.png

ライブラリのディレクトリを指定します。ディレクトリは複数指定できます。

指定し終わったら「追加」を選択します。

「ライブラリに追加」を選択するとライブラリの追加が完了します。

0004_Input-Directory.png

存在しないディレクトリを指定した場合は後ほど自分で追加する必要があります。

plexから見て読み込みができれば良いので、自分のUID/GID (hiroom2:hiroom2)を指定しています。

$ sudo mkdir -p /var/lib/plexmediaserver/Library/Movies
$ sudo chown hiroom2:hiroom2 /var/lib/plexmediaserver/Library/Movies

6 動画の追加

ブラウザ経由で動画をアップロードする機能はありません。

ライブラリに新規に動画が格納されたディレクトリを追加するか、ライブラリに指定したディレクトリへ直接動画を格納する必要があります。

ここではmvやドラッグアンドドロップですでに指定されたディレクトリに動画を追加します。

$ mv MyYoutube /var/lib/plexmediaserver/Library/Movies/

再帰的にスキャンされるのでディレクトリごと格納しても良いでしょう。

ライブラリはディレクトリ構造を表示させることもできます。

 

動画を追加しても、デフォルトのままだとスキャンは自動実行されないようになっているので、スキャンが実行されません。

手動でスキャンを実行させるには、「ライブラリの更新」を選択します。

0005_Manual-Scan.png

スキャンが完了するとライブラリのデッキが更新され、サムネイルが表示されます。

0006_Complete-Scan.png

サムネイルをクリックすると動画を再生できます。

0007_Play-Movie.png

7 内部ネットワークのみのアクセスを許可する

内部ネットワークのアドレスのみからアクセスできるようにします。

ホーム画面の右上の「設定」を選択し、設定画面を開きます。

0008_Config.png

右上の「サーバ」を選択し、左側の「ネットワーク」を選択します。

デフォルトだと詳細設定が表示されていないので、「詳細設定を表示」を選択します。

0009_Config-Server-Netowrk.png

認証不要なネットワークリストに許可するIPアドレスを指定します。

ここでは私の環境での内部ネットワークの192.168.11.0/255.255.255.0を指定しています。

「変更を保存」を選択することで反映されます。

0010_Network-List.png

Apache2を用いる場合は認証不要なネットワークリストに127.0.0.1/255.255.255.255を指定します。

8 スキャンの変更

デフォルトだとスキャンは自動実行されないようになっています。

ライブラリで指定したディレクトリが更新されたらスキャンするように変更します。

 

設定画面のサーバの設定にて、「ライブラリ」を選択します。

「自動でライブラリを更新する」にチェックを入れます。

「変更を保存」を選択することで反映されます。

0011_Auto-Scan.png

9 Apache2によるDigest認証(任意)

PLEXは内部ネットワーク向けにはユーザ認証機能は持たないので、Apache2のproxy_httpで接続できるようにし、Apache2のDigest認証を用いる必要があります。

 

ただし、以降の手順だとwww.my.server/plexmediaserverのようなベースURIを指定できておりません。改善の余地ありです。

 

Apache2をインストールします。

$ sudo apt-get install -y apache2
$ sudo a2enmod proxy_http rewrite auth_digest

Digest認証用のパスワードファイルを作成します。

レルムplexmediaplayerにユーザ名hiroom2を追加し、パスワードを入力します。

このユーザ名とパスワードがPLEXへアクセスするのに必要なものとなります。

$ sudo htdigest -c /etc/apache2/.plexmediaserver_htdigest "plexmediaserver" hiroom2
Adding password for plexmediaserver in realm hoge.
New password:
Re-type new password:

PLEX向けのsiteファイルを作成します。

こちらの設定を参考にしました。

$ cat /etc/apache2/sites-available/plexmediaserver.conf
ProxyPass         / http://127.0.0.1:32400/
ProxyPassReverse  / http://127.0.0.1:32400/
ProxyRequests     Off
ProxyPreserveHost On

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/web
RewriteCond %{HTTP:X-Plex-Device} ^$
RewriteRule ^/$ /web/$1 [R,L]

<Proxy http://127.0.0.1:32400>
  AuthType Digest
  AuthName "plexmediaserver"
  AuthUserFile /etc/apache2/.plexmediaserver_htdigest
  Require valid-user
</Proxy>

a2ensiteで有効化します。

$ sudo a2ensite plexmediaserver

Apache2を再起動します。

$ sudo systemctl restart apache2

このままだと[サーバ]:32400経由でまだ接続できるので、先ほど192.168.11.0/255.255.255.0に指定したPLEXの設定の認証不要なネットワークリストを127.0.0.1/255.255.255.255を指定します。

 

これ以降、他のマシンから:32400指定のアクセスを実行しても、ホーム画面は表示されなくなります(PLEXユーザアカウント登録画面が表示される)。

 

正確にはPLEXが提供するユーザアカウントでの制御になります。アカウントを作成せず、マシンを登録していなければ認証は成功しません。

0014_NoAuth-LocalHost-Only.png

内部ネットワークに接続されたAndroidのChromeから:32400を指定せずにアクセスすると以下のように認証を求められます。

0012_Digest-Auth.png

ログイン後、PLEXのホーム画面が表示されました。

0013_Plex-from-Android.png