リアルタイムチャットを自前でセットアップする - めも

# リアルタイムチャットを自前でセットアップする

Aug 20th, 2014

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

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

Posted by N.Nakasato (U.Aizu)
Aug 20th, 2014

Tweet

« 「Coders at Work」を読む
Blog Archives
Chiselを使うための準備 »

@dadeba on GitHub

Copyright © 2014 - N.Nakasato (U.Aizu) -
Powered by Octopress