以前、課題で自分だけの動画サイトを構築するという課題をしましたが
今回は自分専用のメディアサーバを立ててみたいと思います。
Media Server | Plex allows you to stream video smarter.
すごいところ
- PlexをインストールするだけでDLNAとYoutubeスタイルの両方が利用できる。
- ファイルを入れるだけで、ジャケット、作品概要、あらすじ、字幕、テーマソングを拾ってきてくれる。手打ちよりも簡単で、統一感がある動画ライブラリに。
- 動画の場合どこまで再生したかを全てのデバイスで一致させているので、シークいらず。
- 動画の画質を調整できるので回線速度の変化があってもストリーミング出来る。
- 開発スピードの早さ。ChromeCastやAmazon Fire TVなどの最新デバイスにも対応。
- フリー版でも機能が充実している(有料版はさらに充実している)
- 日本語化されている
- マルチプラットフォームに対応している(サーバもクライアントも)
- ウェブブラウザさえあればよい
- ポートの開放など必要なく外出先からでも見られる
- スマートデバイスアプリあり
- GUIで設定が完結する
- 豊富な設定項目が用意されている
- 見た目がオシャレ
- 簡単一発インストール(今回は簡単ではなかったですが・・・)
だめなところ
- 日本語化のローカライズが微妙。日本語4割・英語6割くらい
- 日本語の情報が少ない=知名度が低い
Plexの仕組み
公式サイトのスクショが一番わかりいいので貼っておきます。
要は、WindowsでもMacでもLinuxでも
インストールしたらその端末がメディアサーバになるよってものです。
セットアップに際して
元々Plexは外部から直接アクセスさせる仕組みになっているわけではなく
Plexのサーバを経由して外部アクセスを可能にしています。
今回はPLEXのサーバを経由せず、直接サーバにアクセスできる仕組みにします。
サーバ構成
今回はAWSを使いました。plex.hdserver.infoというドメインをRoute53上で設定し
Amazon LightsailにPlexをインストールした形になります。
Lightsailの料金プランは$3.50のプラン、リージョンは東京、OSはAmazon linuxを使用しました。
メディアデータ(音楽とか動画とか)は外部からアップロード・ダウンロードができるようにしてます。
※Lightsailはデータ転送枠が決まっているため、本当はストリーミングサーバを建てるには不向きだったりします・・・
インストール
1. システムを最新の状態にしておく
言わずもがな。
# yum -y update
2. Plexのrpmをダウンロードする
公式サイトのダウンロードページにRedhat版のrpmが置いてあるのでダウンロードします。
# wget https://downloads.plex.tv/plex-media-server/1.12.3.4973-215c28d86/plexmediaserver-1.12.3.4973-215c28d86.x86_64.rpm
3. yumインストールします
rpmからのインストールになります。
# yum install plexmediaserver*.rpm
4. plexmediaserverの起動、自動起動をONにします。
# service plexmediaserver start # chkconfig plexmediaserver on
5. plexレポジトリを有効化しておく(オプション)
レポジトリを有効化しておくと、yum updateしたときに自動で更新がかかります。
こちらはお好みで。
# vi /etc/yum.repos.d/plex.repo [PlexRepo] name=PlexRepo baseurl=https://downloads.plex.tv/repo/rpm/$basearch/ enabled=0 ★0→1 gpgkey=https://downloads.plex.tv/plex-keys/PlexSign.key gpgcheck=1
これでPlexのインストールは完了です。簡単でしょ?
Apacheでリバースプロキシさせる
ただインストールしただけだとデフォルトでは32400ポートでアクセスする形となり、しかもLANからしかアクセスできません。
そこでApacheのmod_proxy(リバースプロキシ)を使用して、サブドメインでPlexを運用します。
「インターネット(80/443ポート)→Apache→(32400ポート)Plex」という形で
フロントのApacheを経由させることでインターネットからポートを指定せずとも接続出来るようにします。
1. Apacheのインストール
割愛してもよかったですが…。2.2系です。
# yum -y install httpd mod_ssl
# httpd -vServer version: Apache/2.2.34 (Unix)
2. Apacheの設定
今回は443ポート(https://)で運用してます。
80ポートからのアクセスは443にリダイレクトかかります。
「https://plex.hdserver/」でアクセスすると
「http://plex.hdserver:32400」で動作しているPlex Media Serverにアクセスできる仕様です。
# vi /etc/httpd/conf.d/vhosts.conf <VirtualHost> ServerName plex.hdserver.info RewriteEngine on RewriteCond %{HTTP_HOST} ^plex\.hdserver\.info RewriteRule ^/(.*)$ https://plex.hdserver.info/$1 [R=301,L] </VirtualHost> <VirtualHost *:443> ServerName plex.hdserver.info ProxyRequests Off ProxyPreserveHost On ProxyPass / http://127.0.0.1:32400/ ProxyPassReverse / http://127.0.0.1:32400/ ProxyPass /:/websockets/notifications wss://127.0.0.1:32400/:/websockets/notifications ProxyPassReverse /:/websockets/notifications wss://127.0.0.1:32400/:/websockets/notifications RewriteCond %{HTTP_HOST} !^plex\.hdserver\.info$ [NC] RewriteRule ^/$ http://%{HTTP_HOST}/ [L,R=301] ErrorLog logs/plex.error.log CustomLog logs/plex.access.log combined </VirtualHost>
ちなみにこの段階ではサーバのSSL証明書を用意していないので、
ブラウザからアクセスするとセキュリティ警告が出ます。
サーバの証明書はLet’s Encryptの無料証明書を使いました。
Let’s Encryptを使用してSSL証明書を発行する
Let’s Encryptの使い方については公式リファレンスに詳しく書いてあるので、ここでは割愛します。
今回はスタンドアロンで証明書を取ってきているので、
コマンド実行時はApacheを落とす必要があります。
あと、Amazon Linuxだと –debug オプションつけないと動かないです。
# /etc/init.d/httpd stop # ./certbot-auto certonly -a standalone -d plex.hdserver.info --debug # /etc/init.d/httpd start
無事SSL証明書が発行できたら、
Apacheのconfに証明書のパスを書いておきます。
SSLCertificateFile /etc/letsencrypt/live/plex.hdserver.info/cert.pem SSLCertificateChainFile /etc/letsencrypt/live/plex.hdserver.info/chain.pem SSLCertificateKeyFile /etc/letsencrypt/live/plex.hdserver.info/privkey.pem
これで、PlexをサブドメインかつSSL通信で利用することが出来るようになりました。
初期設定を行う
ここまで来たらあとはGUI操作になります。
https://plex.hdserver.info/アクセスしましょう。
サインイン画面がでるはずです。
アカウント登録が必要なので登録して、ログインします。
ここでハマった
最初にログインしたら以下の画面に遷移しました。
Plexサーバが見つからないと表示されてますが、初期設定をしないと表示されないのですが
初期設定は同じローカルネットワーク内からでないとできないっぽいです。
公式サイトではSSHのポートフォワーディングをして初期設定をする様ガイドされてましたが
自分はこの方法でもダメでした。。
解決方法
Lightsailで同じネットワーク内にWindowsサーバ立てて、そこのブラウザから初期設定画面に行きました。
ちょっと頭の悪い方法ですが、この方法に辿り着くまで1日かかりました・・・
この画面がでてきたら成功です。ウィザードに従ってセットアップを完了しましょう。
初期設定完了後
以下の画面がでたらセットアップ完了です。おつかれさまでした。
あとは適当に設定イジったり、サーバにメディアデータをコピーするなりしてenjoyしましょう。