MisskeyのリバースプロキシとしてApacheを使用する際の注意点
シュガータウンにMisskeyのインスタンスを立ててみました。 mi.sugattor.ga
Misskeyインストールのチュートリアルでは、基本的にリバースプロキシとしてnginxを使っています。
しかしシュガータウンではWebサーバが既にApache上で動いているため、リバースプロキシにApacheを使わざるを得ませんでした。
予想外に苦労したので備忘録として残しておきます。
導入mod
- proxy
- proxy_http
- proxy_wstunnel(忘れないで)
- rewrite (多分勝手に有効)
- headers (多分勝手に有効)
ProxyPreserveHostはOnにする
これがOnじゃないと「http-signature verification failed and no LD-Signature.」とか「signature verification failed」が出てリモートフォローができない。
ソース: フォローできないMisskeyインスタンスがある · Issue #3656 · misskey-dev/misskey · GitHub
WebSocketのリバースプロキシを設定する
これがないとTLが自動で流れない。
ProxyPass /streaming ws://~~/streaming
を入れてあげること。
なんかnginxはこういうの気にしなくてもいいらしい。
設定例
<VirtualHost *:443> ServerName example.tld ProxyRequests Off ProxyPreserveHost On ProxyPass /streaming ws://[ローカルIPアドレス]:3000/streaming ProxyPassReverse /streaming ws://[ローカルIPアドレス]:3000/streaming ProxyPass / http://[ローカルIPアドレス]:3000/ ProxyPassReverse / http://[ローカルIPアドレス]:3000/ </VirtualHost>
おまけ:サーバ自身へのcurlが成功すること
MisskeyのインスタンスのあるサーバからMisskeyのdefault.ymlで設定しているURLにcurlが成功する必要がある。
これができないと他インスタンスの絵文字やリアクションが表示されない。
curl https://[自分のインスタンスのURL]/
で正しく表示されること。*1
私は/etc/hosts
にサーバ自身のローカルIPアドレスとホスト名を書いて解決した。