QNAP NASのマルチメディアステーションのページを非公開にする
QNAP NASのWebサーバ構築で躓いたメモです。
QNAP NASにはapacheが入っており、
管理画面のボタンクリックでWebサーバを開設できます。
面倒な設定ファイルの書換えが不要なところが魅力です。
しかし、高機能が故にやや不便なところもあります。
たとえば、自分のホームページを外部に公開したいとき、
http://自分のドメイン
みたいなURLで設置すると思います。
QNAP NASはデフォルトで以下ページが有効になっています。
http://自分のドメイン/msv2
http://自分のドメイン/musicstation
http://自分のドメイン/photo
http://自分のドメイン/photostation
http://自分のドメイン/video
実際にこれらのページにアクセスすると、
以下のようなログインページが表示されます。
認証をかけているとはいえ、公の場にログイン画面を晒すのは
セキュリティ上好ましくありません。
このログイン画面はマルチメディアステーションを無効にすることで
表示されなくなります。
しかし、今度は「無効だよ!」というページが表示されてしまいます。
はて、どうすれば良いのでしょうか・・・
上記の画面は、/etc/config/apache/extra下の
apache-msv2.conf、apache-musicstation.conf、apache-photo.conf、apache-video.confに
エイリアスとして定義されています。
<IfModule alias_module> Alias /photostation "/mnt/ext/opt/photostation_pub" <Directory "/mnt/ext/opt/photostation_pub"> AllowOverride All Order allow,deny Allow from all
これらのファイルは、/etc/config/apache/apache.confの
最後でインクルードされています。
Include /etc/config/apache/extra/apache-msv2.conf Include /etc/config/apache/extra/apache-musicstation.conf Include /etc/config/apache/extra/apache-photo.conf Include /etc/config/apache/extra/apache-video.conf
したがって、これらのインクルード行をコメントアウトすれば
エイリアスで定義したページは表示されなくなります。
#Include /etc/config/apache/extra/apache-msv2.conf #Include /etc/config/apache/extra/apache-musicstation.conf #Include /etc/config/apache/extra/apache-photo.conf #Include /etc/config/apache/extra/apache-video.conf
apacheの再起動は、/etc/init.d/Qthttpd.shをrestartすることで行います。
/etc/init.d/Qthttpd.sh restart
しかし、そうすると/etc/config/apache/apache.confの末尾に
インクルード行が自動で追加されてしまうのです。
#Include /etc/config/apache/extra/apache-msv2.conf #Include /etc/config/apache/extra/apache-musicstation.conf #Include /etc/config/apache/extra/apache-photo.conf #Include /etc/config/apache/extra/apache-video.conf Include /etc/config/apache/extra/apache-msv2.conf Include /etc/config/apache/extra/apache-musicstation.conf Include /etc/config/apache/extra/apache-photo.conf Include /etc/config/apache/extra/apache-video.conf
上記は/etc/init.d/Qthttpd.sh内でインクルード行がなかったら
自動で追加する処理が実行されるためです。
そこで、この処理を強制的に無効にします。
Qthttpd.sh自身は起動時にどこからもなく
デフォルトのファイルに戻ってしまうので、
必要なら起動時に修正を加えたQthttpd.shで上書きします。
前置きが長くなってしまいましたが手順をまとめます。
1.apache.confの書換え
万一に備え、まずapache.confのバックアップを取ります。
cp -p /etc/config/apache/apache.conf /etc/config/apache/apache.conf.bak
/etc/config/apache/apache.confを開き、
vi /etc/config/apache/apache.conf
末尾のhttpd-vhosts-user.conf以外のInclude~の行をコメントアウトします。
Include /etc/config/apache/extra/httpd-vhosts-user.conf #Include /etc/config/apache/extra/apache-msv2.conf #Include /etc/config/apache/extra/apache-musicstation.conf #Include /etc/config/apache/extra/apache-photo.conf #Include /etc/config/apache/extra/apache-video.conf
2.Qthttpd.shの書換え
これも念のためバックアップを取ります。
cp -p /etc/init.d/Qthttpd.sh /etc/init.d/Qthttpd.sh.bak
そして、Qthttpd.sh内の以下行をコメントアウトします。
if [ "x${MSV2_SUPPORT}" = xTRUE ] && [ -f /usr/bin/ffmpeg ]; then /bin/grep ffmpeg.so ${PHP_INI} 1>>/dev/null 2>>/dev/null [ $? != 0 ] || /bin/sed -i "/extension = ffmpeg.so/d" ${PHP_INI} 2>/dev/null 1>/dev/null # /bin/grep "^Include" ${APACHE_CONF} | /bin/grep "apache-msv2.conf" 1>>/dev/null 2>>/dev/null # if [ $? != 0 ] && [ -f /etc/config/apache/extra/apache-msv2.conf ]; then # /bin/echo "" >> ${APACHE_CONF} # /bin/echo "Include /etc/config/apache/extra/apache-msv2.conf" >> ${APACHE_CONF} # fi # [ -f /etc/config/apache/extra/apache-msv2.conf ] || /bin/sed -i "/^Include.*apache-msv2.conf/d" ${APACHE_CONF} 2>/dev/null 1>/dev/null # /bin/grep "^Include" ${APACHE_CONF} | /bin/grep "apache-musicstation.conf" 1>>/dev/null 2>>/dev/null # if [ $? != 0 ] && [ -f /etc/config/apache/extra/apache-musicstation.conf ]; then # /bin/echo "Include /etc/config/apache/extra/apache-musicstation.conf" >> ${APACHE_CONF} # fi # /bin/grep "^Include" ${APACHE_CONF} | /bin/grep "apache-photo.conf" 1>>/dev/null 2>>/dev/null # if [ $? != 0 ] && [ -f /etc/config/apache/extra/apache-photo.conf ]; then # /bin/echo "Include /etc/config/apache/extra/apache-photo.conf" >> ${APACHE_CONF} # fi
if [ x"$VS_QPKG" = xTRUE ]; then /bin/grep "^Include" ${APACHE_CONF} | /bin/grep "apache-video.conf" 1>>/dev/null 2>>/dev/null # if [ $? != 0 ] && [ -f /etc/config/apache/extra/apache-video.conf ]; then # /bin/echo "" >> ${APACHE_CONF} # /bin/echo "Include /etc/config/apache/extra/apache-video.conf" >> ${APACHE_CONF} # fi
3.apacheの再起動
Qthttpd.shをリスタートします。
/etc/init.d/Qthttpd.sh restart
これでマルチメディアステーションのページが表示されなくなります。
再起動後もこの設定を保ちたい場合は
以降の手順を実行します。
4.ファイルをHDDに退避する
Qthttpd.shをHDD側にコピーします。
コピー先はHDD上のディレクトリであればどこでも構いません。
cp -p /etc/init.d/Qthttpd.sh /share/MD0_DATA/.qpkg/autorun/Qthttpd.sh
5.起動時の設定
起動時に実行されるシェルに以下処理を追加します。
vi /share/MD0_DATA/.qpkg/autorun/autorun.sh
cp -p /share/MD0_DATA/.qpkg/autorun/Qthttpd.sh /etc/init.d/ /etc/init.d/Qthttpd.sh restart
これで、OSの再起動後も設定が有効になります。
実際にマルチメディアステーションのページにアクセスすると・・・
このように非表示になることが確認できます。
ひとまず目的は達成されました。
他にもっといい方法があるかもしれませんが、
ご参考にしていただければ幸いです。