カラクリスタ

ただの「人」の個人ブログ。人です

herokuでzncとlingr-ircdを動かしてngrok経由でつなぐという無茶な環境を構築した

概要: な、何を言っているか分からねーと思うが、俺も何がなんだが分からない。


簡単に言うと、

https://github.com/boxelly/buildpack-zncboxelly/buildpack-znc https://github.com/boxelly/buildpack-lingr-ircdboxelly/buildpack-lingr-ircd

という二つの buildpack を作って、

  • Heroku 上に IRC Bouncer な環境を作った

という話です。ちなみに、今日は上記二つの buildpack が動くのを確認してから、選挙の投票に向かいました。で、その後で飯を食ったという。

で、上記二つの buildpack の使い方は、それぞれ、

https://github.com/boxelly/buildpack-znc/blob/master/README.mdbuildpack-znc/README.md at master · boxelly/buildpack-znc https://github.com/boxelly/buildpack-lingr-ircd/blob/master/README.mdbuildpack-lingr-ircd/README.md at master · boxelly/buildpack-lingr-ircd

を参照してください。


で、一応中身的な話をすると、今回の環境では、

  1. heroku の 1 worker dyno の中に、それぞれのサービスで必要なデーモンを動かして
  2. 外向けの公開には https://ngrok.com/ を登録して tcp 公開機能を使い
  3. 最後に、公開した ngrok の tcp port に IRC Client から接続

という感じになっていて、かつこれの元のアイディアは、

j-mcnally/znc-buildpak

を元にしています。

あと、

  • lingr-ircd

については、 @mattn さんの、

go-lingr/lingr-ircd at master · mattn/go-lingr

を、

$ GOOS=linux GOARCH=386 go build

という感じでコンパイルしたバイナリを同梱し、あと、

  • ngrok

については、

ngrok - secure introspectable tunnels to localhost

で、公開されている、linux 32bit 用バイナリをそのまま同梱しています。

まあその辺りの細かい話というか著作権表記等は、各 buildpack のREADM.md に記載してあります。


ま、今日の話としては以上です。

で、これ一応いまのところは動いてますが、いかんせん結構無茶な構成でやっているし、かつ、今後安定して運用できるかは謎なので、その辺り人が真似するのは激しくオススメできません。

あと、これいまのところこの環境は heroku の無料枠で収まってますが、その辺りもまだ未知数なので、これを試す場合、その辺りも各自のリスク管理の元やってください。


というワケで以上です。

何か質問が有る方は Disqus のコメント欄でお願いします。

FIXME