2022年1月4日火曜日

Mirakurunにリバースプロキシで外部からアクセスする

 Mirakurunを外部からアクセスするのにApache2のリバースプロキシを使用してみた。これならDigest認証をApache側でやったり、バーチャルホストでサブドメインで管理できたりして便利そうだし。でもMirakurunの作者もリバースプロキシの下に置かないでくださいって言ってるので本当はやってはいけません…ちょっと設定するときだけ使いたかったので…

まずはMirakurun側の設定。Hostnameをちゃんと設定しないとリバースプロキシからアクセスするとJavaScript系が全部403で弾かれてこまった…

sudo EDITOR=nano mirakurun config server

で設定ファイルを開いて、hostnameがもうあるならそちらを編集して、ない場合は追加する。

# logLevel: <number>
logLevel: 2

# path: <string>
path: /var/run/mirakurun.sock

# port: <number>
# You can change this if port conflicted.
# Don't expose this port on the internet, not even with NAPT.
# Use this in LAN or VPN.
# `~` to disable TCP port listening.
port: 40772
hostname: mk.hoge.f5.si

こんな感じでhostnameに使用するDDNSのアドレスを入れて保存する。

sudo mirakurun restart

で再起動する。

次にApache2の設定。

sudo nano /etc/apache2/sites-available/000-default.conf

設定するコンフィグファイルを開いて、バーチャルホストを追加。

<VirtualHost *:80>
ServerName mk.hoge.f5.si

        <IfModule mod_proxy.c>
        ProxyRequests   Off
        ProxyPreserveHost       Off
        ProxyErrorOverride Off
        ProxyPass       /rpc       ws://127.0.0.1:40772/rpc
        ProxyPassReverse        /rpc       ws://127.0.0.1:40772/rpc
        ProxyPass       /       http://127.0.0.1:40772/
        ProxyPassReverse        /       http://127.0.0.1:40772/
        </IfModule>

</VirtualHost>

ここでWebSocketの部分も追加しておかないとメインページしか表示されなくて焦った。認証とかは適宜追加しておく。

sudo a2enmod proxy proxy_wstunnel
sudo service apache2 restart

これで設定が有効になってるはず。

今回ハマったのはMirakurun側のHostnameがちゃんと設定されてないとうまくアクセスできない(mDNSとかでアクセスする際もちゃんと設定しておかないとIPからじゃないと行けないかも)のと、Apache側でWebSocketもリバースプロキシ設定してやらないと行けないところ。/rpcのところは/rpc/だと行けなかったり色々ハマってしまったのでまた設定するとき用のメモでした。

Mirakurunは外部ネットワークからアクセスする想定ではないので本来はVPNとかを使ったほうが良いかも。とりあえず設定が終わったらアクセスできないように設定しておいたほうがよいですな。

0 件のコメント:

コメントを投稿