Webブラウザを使ったチャットがあると、ネットをつかった会議や議論の時に便利だろう。 SkypeやGoogle Hangoutは、チャットがbuilt-inされているので、それを併用すればよいのだけど、 いわゆる「テレビ会議」システムを使った、他拠点での会議をおこなう時に、 言葉で説明するより文字で説明した方がよいことがある。 たとえば、定量的に精密に議論をしたい時に、「テレビ会議」では誤って伝わる可能性があり、 文字を使ったコミュケーションを併用したいことがある。 それと議論のためにファイル(おもにグラフのファイル)やURLの共有をしたい時にもチャットは役に立つ。

巷にはそのためだけの商用サービスなどもあり、各所で利用されているとは思うのだが、 研究プロジェクト内でのみ共有するような議論は、外部に保存したくないなどの微妙な問題があり、 あまり使われるとは思えない。研究費からそのような費用を出すのは、不可能ではないが、 研究室レベルでやるのは簡単ではないという事情もあり。 それで、オープンソースでなんとかならないかというと、あまりよい選択肢はない。 往年の掲示板CGIを使うというのもあると思うし、Wikiベースのシステムでも、 あとで議事録を残したり、議論内のファイルを保持記録しておくにはよいかもしれない。

だからChatonというWebベースの(ほぼ)リアルタイムチャットソフトがある。

http://chaton.practical-scheme.net/

ソースコードは https://github.com/shirok/Chaton で公開されており、 自分の使えるLinux機があれば、Gaucheが動くことを前提として、手軽に設置利用できる。 ただ、一つ面倒なのは、ChatonはCOMETというプロトコルを採用していて、 そのためにhttpポートに加えて、ある特定のポートをコンテンツのポーリングのために必要とする。 githubで公開されているコードは、このポートが任意に公開できることを前提としていて、 80と443しかポートが空いていない場合には、reverse proxyを設定する必要があり、 そのためにはソースコードを一部修正する必要があった。

ので自分用に修正をしたコードをフォークした。https://github.com/dadeba/Chaton

以下、そのセットアップ方法を記録しておく。

ソースをcloneする
1
git clone git@github.com:dadeba/Chaton.git
“conf/site.conf”を適切に編集する。

最低限必要なのはgoshのパスと、COMET serverを保持するディレクトリ(下記4.参照)。

設置するチャット用の設定ファイルを作る。

Chatonオリジナルものは”sample.conf”になる。 このforkバージョンでは追加の設定が必要なのでそれについて。 COMETのポートをApacheのreverse proxyを使って外部に公開するため、 それ用のpathを(comet-proxy-path "comet1")で指定する。これはこの行を追記する。 また、(comet-port "9997")も適当なポート番号を指定する。このポート番号はあとで利用する。

Chaton用ファイルを生成

オリジナルのドキュメントにあるように

1
gosh ./build-site mychat.conf

としてChatonを設置する。この結果、server-htdocs-dirとserver-data-dirに必要なファイルが生成される。 server-htdocs-dirのほうはhttpdからアクセスできる場所ではないといけないし、 server-data-dirはhttpdが書き込みできる必要がある。一番簡単には、どちらもhttpdが動くユーザーの権限、 Ubuntuの場合”www-data:www-data”がowner:groupとなる場所を指定した方がよい。 httpdによる、server-data-dirへの適切な書き込みやアクセス権限がないと、原因不明で動作しない。 面倒を避けるために、COMET serverを保持するディレクトリもwww-dataがownerとした方がよい。

例えば”/var/www/chaton”を作成し、“`chown www-data:www-data /var/www/chaton”として、 COMET serverのpathは”/var/www/chaton/bin”として、各チャットのserver-data-dirは “/var/www/chaton/mychat/logs”のようにディレクトリを指定するのが一番簡単。 オリジナルのドキュメントに従って、各自のホームディレクトリ下に作成すると、 権限の設定が面倒なことになる場合がある。 この場合、build-siteの実行も、www-dataの権限で行うか、 rootで実行後、生成されたファイルのownerとgroupをwww-data:www-dataとする必要がある。

Apacheのreverse proxyの設定

reverse proxy moduleは読み込まれているという前提で 以下の設定をApacheの設定ファイルに追記する。

1
2
3
Alias /chaton/mychat /var/www/chaton/mychat/htdocs
ProxyPass        /comet1 http://localhost:9997
ProxyPassReverse /comet1 http://localhost:9997

最初の行はserver-htdocs-dirで指定したディレクトリと、ApacheでのURLとの対応を指定する。 残りの2行でreverse proxyを設定する。COMET serverは9997ポートで動作するので、 それを”http://example.com/comet1“のURLでアクセスできるように指定する。どちらの行も必要。

COMET serverを起動
1
sudo -u www-data gosh /var/www/chaton/bin/chaton-viewer-mychat
Apacheを再起動する。

http://example.com/chaton/mychat

にアクセスすると利用開始できると思う。