PlexMediaServerをdocker-composeで構築

# PlexMediaServer
PlexMediaServerは、サーバ内のメディア(ライブTV/動画/音楽/写真など)をプラットフォームを選ばず再生することのできるサーバです。ほかにも作品のメタデータの自動付与・リモートアクセス可能な設定の提供など多くの機能を持っています。私は、録画したテレビ番組・映画・ライブTVを、自宅・外出先から再生するために、MirakurunとEPGStationとこのPlexMediaServerを起動しています。今回はPlexMediaServerをローカルで起動する方法について紹介したいと思います。

![Screen Shot 2021-11-27 at 15.11.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/403359b4-2542-62da-02a5-6fc2ffc46d09.png)


# 前提
以下2点は、読者への前提としています。不足している知識は他のサイトなどで補ってください。

* Dockerやdocker-composeを使ったことがある
* 自宅に安定稼働しているLinuxサーバがある・用意できる

# 設定方法
## PlexMediaServerの起動
1. docker-compose.yml ファイルを作成してください。

	```:docker-compose.yml
	version: "2.4"
	services:
		plex:
			image: ghcr.io/linuxserver/plex
			container_name: plex
			network_mode: host
			environment:
				- PUID=1000
				- PGID=1000
				- VERSION=docker
				- UMASK_SET=022
				- PLEX_CLAIM=your_claimed_token
				- NVIDIA_VISIBLE_DEVICES=all
				- NVIDIA_DRIVER_CAPABILITIES=all
	#    runtime: nvidia
			volumes:
				# - /path/to/plex_cache_data_dir:/config
				# - /path/to/tv:/tv
				# - /path/to/music:/music
				# - /path/to/movies:/movies
				- ./plugin:/mnt
			restart: unless-stopped   
	```
1. your_claimed_tokenは、サーバ起動時に自動でログインするためのトークンを取得するためのシークレットですが、いらないかもしれません。アカウント作成後に以下にアクセスして取得することができます。
	
	> https://www.plex.tv/claim/
	
1. Plexメディアパス(有料)を持っている場合GPU資源をエンコードなどに利用することができます。設定に`runtime: nvidia`の指定をするだけでOKです。上記設定ではコメントアウトしています。
1. 永続ボリュームは5種類ありますが必須なのは、`/path/to/plex_cache_data_dir:/config`だけです。ここは、動画などを再生しているときにキャッシュ・再生データやメタデータなどのファイルが保管されます。1GBあれば十分です。その他はメディアとプラグインの場所ですので、必要に応じてマウントしてください。メディア類はPlex側からは /tv, /music, /movies　のディレクトリとして見えます。
1. `docker-compose up -d`で起動してください。
1. http://<サーバのIPアドレス>:32400/web にWEBアプリが起動しているはずです。

## 初期設定
1. とりあえずボタンを押しましょう。![Screen Shot 2021-11-27 at 16.11.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/cdc08d39-579e-5198-ddcc-f0ac0cbb03fd.png)
1. とりあえずサインインしましょう![Screen Shot 2021-11-27 at 17.13.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/4ff5ca22-ca7d-b039-72e3-fddd16327f66.png)


1. CLAIM SERVERを押し承認済みになるまで待機します。 ![Screen Shot 2021-11-27 at 16.13.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/d208305f-b1f0-ee40-ca4b-4f81bfb87c2d.png)

1. ホームに戻ると⚠️が消えているので＋を押します。![Screen Shot 2021-11-27 at 16.16.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/d2d7a636-dfdc-b33f-3e12-dcfe12a5130f.png)

## 映画の設定
1. 映画を追加してみます。言語は日本語を選んでおきましょう。メタデータ取得のソース切り替わります。![Screen Shot 2021-11-27 at 16.18.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/e08aca5d-41e9-e105-35e2-86683c8574a8.png)
1. ディレクトリのブラウザをするボタンを押下して/movieを選びます。![Screen Shot 2021-11-27 at 16.18.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/e60db22a-18ac-de57-0610-52c98ec473b3.png)
1. メタデータを作成しながら同期が始まります。メタデータを自動で作成してもらうためには、できるだけ`正確な映画タイトル.mp4`といった形式でファイル名を付ける必要があります。私はEPGStationのエンコード終了後に正規表現でタイトルを抽出して保存しています。![Screen Shot 2021-11-27 at 16.21.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/b9f95879-9e37-4cd4-2b57-35ee9f16ec02.png)
1. メタデータは体感95%は自動付与されますが、完全ではありません。見つけられなかった分は「マッチ」機能で選択して教えてあげます。![Screen Shot 2021-11-27 at 16.23.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/7868ac77-a3f1-6151-2576-ab7e3a4a6f52.png)
1. と言っても、マッチボタンを押しポップアップから適切なものを選択するだけですので、あまりに手間とは感じないと思います。![Screen Shot 2021-11-27 at 16.24.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/cf233e25-3be6-b83f-a253-a57776e1169c.png)

## ライブTVの設定
1. Mirakurun3.7.0以上がローカルサーバに起動していることを前提とします。Mirakurunのアプリを開いて、ConnectionGuideから図の①②を控えておいてください。![Screen Shot 2021-11-27 at 16.39.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/b342f03c-fc69-0143-b76e-947ea5d44a11.png)

1. 右上の設定から、ライブTV&DVRを押したあと「SET UP PLEX DVR」を押下します![Screen Shot 2021-11-27 at 16.31.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/f5f978b5-3d2a-ccc2-4810-6b5236ed22fa.png)
1. 手動で選択するを選んでから①を入力します。![Screen Shot 2021-11-27 at 16.40.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/52f91c96-d2a9-988d-b6b8-e2bf79162176.png)
1. 日本を選んで接続。![Screen Shot 2021-11-27 at 16.41.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/58fafcdc-c072-c3a1-e963-49d1e1db2bbd.png)
1. ②を入力します ![Screen Shot 2021-11-27 at 16.42.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/d58c6632-5ae4-9d0c-b39f-dcd828e9d626.png)
1. 適当なチャンネルをチェックして続ける。後で変更できます。![Screen Shot 2021-11-27 at 16.43.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/72c25a56-0bd8-a05a-730a-9bb43ddff37f.png)
1. EPGのダウンロードが始まります。終わったら番組表へのボタンが押せるようになります。![Screen Shot 2021-11-27 at 16.45.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/a10bb30c-c55e-2b5e-9b3f-38c134652cbb.png)


## リモートアクセス
1. 初期設定が完了した時点でアカウントにサインインしているはずです。じつはサインインした時点ですでに有効になっています。「Fully accessible outside your network」が表示されていればOKです。![Screen Shot 2021-11-27 at 17.00.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96637/4fcca97a-b3a0-4f3c-a76b-bae51769bfbb.png)
1. ブラウザからアクセス

	> https://app.plex.tv/desktop
1. その他の再生クライアント。プラットフォームはiOS,AppleTV,MAC,AmazonfireTV,Android,Roku,Playstation,Xboxなどなんでもあります。

	> https://www.plex.tv/ja/media-server-downloads/#plex-app


# 最後に
お疲れ様でした。理想のメディア再生環境構築のお手伝いができれば幸いです。

# 参考
https://gist.github.com/sammrai/150b6e16a07f4e689af0701754f6f1f8

https://github.com/plexinc/pms-docker

https://medium.com/chinachu/mirakurun-3-7-0-release-f7044371415d