突然Rocket.ChatをH2Oがすでに走っている自分のサーバに構築する必要が生じたので構築したが、一件単純ながら結構ハマって苦しんだので備忘録。
09/04追記
残念ながらいくつかのページ遷移においてサブフォルダからルート直下に飛んでしまう不具合に見舞われたため、手元の環境では結局サブドメインに移転してしまいました。
記事は残しておきますが、以下の項目は真似しないことをお勧めします。
こうする
hosts:
"example.com:443":
paths:
"/":
file.dir: "/http/root/directory"
"/rocketchat":
proxy.reverse.url: "http://127.0.0.1:3000/rocketchat"
proxy.websocket: ON
注意点はどこか?
URL指定の仕方
node.js側にはinitから環境変数でROOT_URL=https://example.com/rocketchatを渡すのでH2O側では単にhttp://127.0.0.1:3000/と指定しておかないと重複パスになって死ぬのかと考えがち(私はやらかした)だがそれは間違いで、上記の通りH2O側で改めてサブフォルダを指定しないとUnknown pathなる一行のそっけないエラー表示に目の前を塞がれる。
なおnginxでも同じで、Apacheについては公式ホームページに案内があるので参照のこと。
エラー表示について
Rocket.Chatのエラーページは1行テキストだが、H2Oのエラーページも(少なくともリバースプロキシ関連では)1行テキストなので混同に注意。
H2Oからnode.jsに接続できないときにはconnection failedとこれまた1行だけで出てくるがこれはリバースプロキシ先が繋がらないH2Oのエラー。見かけ上はさっぱり区別がつかない。
おまけ
node.jsをLibreSSLシステム上で走らせようとするのは本当に大変なので、予定している人は諦めてOpenSSLを採用しましょう。