Help us understand the problem. What is going on with this article?

Windows でも Let's Chat で ChatOps

More than 3 years have passed since last update.

Windows でも Let's Chat で ChatOps

開発内コミュニケーション、どうしてますか? メールでなんてやってられませんよね。というわけでチャットツールの導入についてです。

で、以下のような条件で探したところ Let's Chat が候補に挙がったので導入方法の紹介です。

  • クライアントソフトが不要
  • Windows でサーバが動かせる
  • ログが残せる
  • Redmine や Jenkins との連携がある(といいな)
  • サーバマシンの起動で自動的に起動する

Let's Chat には以下のような特徴があります。

  • BYOS (bring your own server)
  • LDAP / Kerberos 認証もサポート
  • XMPP Multi-user chat (MUC)
  • 複数のルームを作成可能
  • デスクトップ通知(やり方わかってません)
  • メンション
  • 画像の埋め込み
  • ファイルアップロード
  • Hubot 連携
  • REST-like API
  • チャットの過去ログが閲覧可能
  • MIT ライセンス

インストール

事前準備

まずは下回りとして以下をインストールします。

  • Python 2.7
  • MongoDB
  • Node.js

Python と Node.js は適当にインストーラでインストールするだけなので省略します。

MongoDB のインストールは、MongoDB のインストールドキュメントを参照して、サービス起動できるようにします。

Let's Chat のインストール

https://github.com/sdelements/lets-chat から適当に Releases か Download ZIP なり、git で落とすなりして適当なフォルダに落としておきます。

起動まで

https://github.com/sdelements/lets-chat/wiki/Installation に書いてある通りにnpm installしてnpm startすればOK・・・と思いきや、Windows ではちょっとトラブルがあるので対応します。具体的にはnpm startの中で呼ばれる migroose コマンドが、カレントディレクトリにあるmigroose.js とぶつかっていて、node_modules.bin\migroose.cmd を呼びたいのに .\migroose.js を起動してしまうためです。

対策としては、環境変数 PATHEXT を修正するか、package.json を修正するかのどちらかになります。ここでは後者で対応します。

package.json修正前(関係あるものだけ)
{
  "scripts": {
    "start": "node app.js",
    "prestart": "migroose",
    "migrate": "migroose"
  }
}
package.json修正後(関係あるものだけ)
{
  "scripts": {
    "start": "node app.js",
    "prestart": "migroose.cmd",
    "migrate": "migroose.cmd"
  }
}

これで、npm startで起動できます。

サービス化

Node.js の Windows でのサービス化って難しいのかと思っていたのですが、実はとても簡単でした。

winser というパッケージを使えば、npm start するアプリを簡単にサービス化できるみたいです。

サービス化は管理者として実行したコマンドプロンプトでnpm install winser して、winser -i するだけで終わりです。これでサービス一覧に lets-chat が並びますので、普通に起動したり、PC の再起動をしたときに Let's Chat が起動するようになります。

インストールの後に

ファイルアップロード

デフォルトでは default.yml でアップロードが禁止されているので、settings.yml を書いて許可します。
yaml:settings.yml
files:
enable: true
provider: local
local:
dir: uploads
restrictTypes: false

restrictTypes を無効にしているので、何でもアップロードできるようになります。制限したい場合は、true (か、書かない)にすると defaults.yml に書かれている allowedTypes によって、jpeg/png/gif に制限されます。

それと、settings.ymlでhttp.host: 'localhost' としているので、この行を削除します。(削除しないとlocalhostからしかアクセスできません。

Hubot で各種ツールと連携

Redmine や Subversion、Jenkins といったツールとの連携を、Hubot を使って実現できるみたいです。まだ試してないので、試したら記事にする、かも?

運用面

投稿されたメッセージやアップロードしたファイルがずっと残るような気がします(実際にどうだかは調べてません)。定期的にスクリプトを実行して削除処理をかけないと、容量を食いつぶしてしまうかもしれません。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away