自分だけのメディアサーバを立てる

· 3 min read
自分だけのメディアサーバを立てる

以前、課題で自分だけの動画サイトを構築するという課題をしましたが
今回は自分専用のメディアサーバを立ててみたいと思います。

Media Server | Plex allows you to stream video smarter.

https://www.plex.tv/ja/

すごいところ

  • PlexをインストールするだけでDLNAとYoutubeスタイルの両方が利用できる。
  • ファイルを入れるだけで、ジャケット、作品概要、あらすじ、字幕、テーマソングを拾ってきてくれる。手打ちよりも簡単で、統一感がある動画ライブラリに。
  • 動画の場合どこまで再生したかを全てのデバイスで一致させているので、シークいらず。
  • 動画の画質を調整できるので回線速度の変化があってもストリーミング出来る。
  • 開発スピードの早さ。ChromeCastやAmazon Fire TVなどの最新デバイスにも対応。
  • フリー版でも機能が充実している(有料版はさらに充実している)
  • 日本語化されている
  • マルチプラットフォームに対応している(サーバもクライアントも)
  • ウェブブラウザさえあればよい
  • ポートの開放など必要なく外出先からでも見られる
  • スマートデバイスアプリあり
  • GUIで設定が完結する
  • 豊富な設定項目が用意されている
  • 見た目がオシャレ
  • 簡単一発インストール(今回は簡単ではなかったですが・・・)

だめなところ

  • 日本語化のローカライズが微妙。日本語4割・英語6割くらい
  • 日本語の情報が少ない=知名度が低い

Plexの仕組み

公式サイトのスクショが一番わかりいいので貼っておきます。

要は、WindowsでもMacでもLinuxでも
インストールしたらその端末がメディアサーバになるよってものです。

セットアップに際して

元々Plexは外部から直接アクセスさせる仕組みになっているわけではなく
Plexのサーバを経由して外部アクセスを可能にしています。

今回はPLEXのサーバを経由せず、直接サーバにアクセスできる仕組みにします。

サーバ構成

今回はAWSを使いました。
https://plex.hdserver.info/ というドメインをRoute53上で設定し
Amazon LightsailにPlexをインストールした形になります。

Lightsailの料金プランは$3.50のプラン、リージョンは東京、OSはAmazon linuxを使用しました。

メディアデータ(音楽とか動画とか)は外部からアップロード・ダウンロードができるようにしてます。
※Lightsailはデータ転送枠が決まっているため、本当はストリーミングサーバを建てるには不向きだったりします・・・

インストール

1. システムを最新の状態にしておく

言わずもがな。

# yum -y update

2. Plexのrpmをダウンロードする

公式サイトのダウンロードページ
https://www.plex.tv/downloads/

に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 -v
Server 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>

初期設定を行う

ここまで来たらあとはGUI操作になります。
https://plex.hdserver.info/


参考サイト

https://www.linode.com/docs/applications/media-servers/install-plex-media-server-on-centos-7/
https://webnetforce.net/plex-with-subdomain/