OpenSUSE 13: PLEXをインストールする

Youtubeのような動画サーバを提供するPLEXのインストール方法を記載します。PLEXに動画を追加するにはこちらを参考にしてください。

1 PLEXのインストール

CentOS 7向けのrpmパッケージをインストールします。

> PLEX=https://downloads.plex.tv/plex-media-server/0.9.16.3.1840-cece46d
> wget -q ${PLEX}/plexmediaserver-0.9.16.3.1840-cece46d.x86_64.rpm
> sudo zypper --no-gpg-checks -n in \
     plexmediaserver-0.9.16.3.1840-cece46d.x86_64.rpm
> sudo systemctl enable plexmediaserver
> sudo systemctl start plexmediaserver
> sudo systemctl start plexmediaserver

2 ポートの開放

32400/tcpを開放します。

> firewall_open_tcp()
{
  for t in FW_SERVICES_EXT_TCP FW_SERVICES_DMZ_TCP FW_SERVICES_INT_TCP; do
    sudo sed -e "s/^${t}=\"\(.*\)\"/${t}=\"\1 $1\"/g" \
         -i /etc/sysconfig/SuSEfirewall2
  done
  sudo systemctl restart SuSEfirewall2
}
> firewall_open_tcp 32400

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

Apache2経由でPLEXにアクセスできるようにし、Apache2のDigest認証でアクセス制御を実現します。

Apache2をインストールし、URI書き換えに必要なモジュールを有効にします。

> sudo zypper -n in apache2
> for mod in proxy proxy_http rewrite auth_digest; do
  sudo a2enmod ${mod}
done

PLEX向けの設定ファイルを追加します。

> sudo su -c 'cat <<EOF > /etc/apache2/conf.d/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
  Require valid-user
</Proxy>
EOF
'

PLEX向けのDigest認証ファイルを作成します。

> sudo htdigest2 -c /etc/apache2/.plexmediaserver \
"plexmediaserver" user

Apache2を再起動します。

> sudo systemctl enable apache2
> sudo systemctl restart apache2

Apache2のポートを開放します。32400/tcpを開いている場合は閉じてください。

> firewall_open_service()
{
  for t in FW_CONFIGURATIONS_EXT FW_CONFIGURATIONS_DMZ FW_CONFIGURATIONS_INT; do
    sudo sed -e "s/^${t}=\"\(.*\)\"/${t}=\"\1 $1\"/g" \
         -i /etc/sysconfig/SuSEfirewall2
  done
  sudo systemctl restart SuSEfirewall2
}
> firewall_open_service apache2

4 PLEXをインストールするスクリプト

以下のスクリプトでPLEXのインストールとApache2のDigest認証を利用できます。

#!/bin/sh

# Password and username for digest authentication.
DIGEST_PASSWD=plexmediaserver
DIGEST_USER=user

firewall_open_tcp()
{
  for t in FW_SERVICES_EXT_TCP FW_SERVICES_DMZ_TCP FW_SERVICES_INT_TCP; do
    sudo sed -e "s/^${t}=\"\(.*\)\"/${t}=\"\1 $1\"/g" \
         -i /etc/sysconfig/SuSEfirewall2
  done
  sudo systemctl restart SuSEfirewall2
}

firewall_open_service()
{
  for t in FW_CONFIGURATIONS_EXT FW_CONFIGURATIONS_DMZ FW_CONFIGURATIONS_INT; do
    sudo sed -e "s/^${t}=\"\(.*\)\"/${t}=\"\1 $1\"/g" \
         -i /etc/sysconfig/SuSEfirewall2
  done
  sudo systemctl restart SuSEfirewall2
}

# Install PLEX.
PLEX=https://downloads.plex.tv/plex-media-server/0.9.16.3.1840-cece46d
wget -q ${PLEX}/plexmediaserver-0.9.16.3.1840-cece46d.x86_64.rpm
sudo zypper --no-gpg-checks -n in \
     plexmediaserver-0.9.16.3.1840-cece46d.x86_64.rpm
sudo systemctl enable plexmediaserver
sudo systemctl start plexmediaserver
# Comment out if you need.
# firewall_open_tcp 32400

# Install apache2.
sudo zypper -n in apache2
for mod in proxy proxy_http rewrite auth_digest; do
  sudo a2enmod ${mod}
done
sudo su -c 'cat <<EOF > /etc/apache2/conf.d/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
  Require valid-user
</Proxy>
EOF
'
sudo zypper -n in expect
expect -c "
set timeout -1
spawn sudo htdigest2 -c /etc/apache2/.plexmediaserver \
\"plexmediaserver\" ${DIGEST_USER}
expect \"New password: \"
send \"${DIGEST_PASSWD}\n\"
expect \"Re-type new password: \"
send \"${DIGEST_PASSWD}\n\"
expect eof
"
sudo systemctl enable apache2
sudo systemctl restart apache2
firewall_open_service apache2