社内用チャットにKandanをインストール、さらにHubotを導入する

## Kandanを導入する

構築環境はUbuntu14.04です。

### Node.jsインストール

```
$ curl -L git.io/nodebrew | perl - setup
$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bashrc
$ source ~/.bashrc
$ nodebrew install latest
$ nodebrew use v0.11.13
$ node -v
v0.11.13
```


### Rubyインストール

```
$ curl -sSL https://get.rvm.io | bash
$ source /home/(ユーザ名)/.rvm/scripts/rvm
$ rvm install 2.0.0-p481
$ rvm use 2.0.0-p481
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-linux]
```

### PostgreSQLインストール

```
$ sudo apt-get install postgresql postgresql-contrib libpq-dev
```

* ユーザー・パスワード設定

```
$ sudo su - postgres
$ psql
postgres=# create user "kandan" with password 'kandan';
postgres~# ALTER ROLE kandan WITH CREATEDB;
```

仮に「kandan」としておきます。

* Rails用にユーザー認証の設定

```
$ sudo vim /etc/postgresql/9.3/main/pg_hba.conf
```

* 追加します。

```
local   all             kandan                                md5
```

* サービスの再起動

```
$ sudo service postgresql restart
```

### Kandanインストール

* GitHubからチェックアウト

```
$ git clone https://github.com/kandanapp/kandan.git
$ git checkout v1.2
```

* Kandanに必要なモジュール・Gemのインストール

```
$ sudo apt-get install libxml2-dev libxslt-dev # nokogiriに必要
$ gem install bundler
$ cd kandan
$ bundle install --path vendor/bundle
```

* アセッツプリコンパイル

「config/enviroments/production.rb」の以下をtrueにする

```
config.serve_static_assets = true
```


```
$ bundle exec rake assets:precompile RAILS_ENV=production
```

### データベースの設定

* config/database.ymlの設定

以下を加えます。

```
production:
  adapter: postgresql
  encoding: unicode
  database: kandan_production
  pool: 5
  username: kandan
  password: kandan
```

* DBマイグレーションの実行

```
$ bundle exec rake db:create db:migrate kandan:bootstrap RAILS_ENV=production
```

### Nginxでリバースプロキシの設定
* Nginxの設定ファイルを以下のようにします。

```
$ cat /etc/nginx/sites-available/default
server {
	listen 80 default_server;
	listen [::]:80 default_server ipv6only=on;

	root /usr/share/nginx/html;
	index index.html index.htm;

	# Make site accessible from http://localhost/
	server_name localhost;

	location / {
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $http_host;
		proxy_redirect off;

		if (!-f $request_filename) {
			proxy_pass http://localhost:3000;
			break;
		}
	}
}
```

* Nginxの再起動

```
$ sudo service nginx restart
```

### Kandanの起動

* 以下のコマンドでサーバーを起動させて、localhostをブラウザで開くとログイン画面が表示される

```
$ cd kandan
$ bundle exec thin start -e production
```

![kandalogin.png](https://qiita-image-store.s3.amazonaws.com/0/34365/a1b57c6e-afcc-784a-3b4e-61b8df852b96.png "kandalogin.png")


* 以下のUsernameとPasswordでログインをする

Username: Admin
Password: kandanappadmin

* ログイン後の画面
![login_after3.png](https://qiita-image-store.s3.amazonaws.com/0/34365/fb2faac6-200c-1dd9-6840-c850b1e41b49.png "login_after3.png")


## Hubotを導入する

* Hubotのユーザー作成とアクセスキーの取得を行う

```
$ bundle exec rake kandan:boot_hubot RAILS_ENV=production
Creating hubot user...

$ bundle exec rake kandan:hubot_access_key  RAILS_ENV=production
Your hubot access key is xxxxxxxx
```

* Hubotをインストールする

```
$ wget https://github.com/github/hubot/archive/v2.4.7.zip
$ unzip v2.4.7.zip
$ cd hubot-2.4.7
$ npm install
$ make package
```

* Kandanとの連携

```
cd hubot
$ git clone https://github.com/kandanapp/hubot-kandan.git node_modules/hubot-kandan
$ npm install faye
$ npm install ntwitter
```

* hubot-scripts.jsonから "redis-brain.coffee" を取り除く

hubot/hubot-scripts.json

```
- ["redis-brain.coffee", "tweet.coffee", "shipit.coffee"]
+ ["tweet.coffee", "shipit.coffee"]
```

* hubot-kandanのpackage.jsonのバージョンを書き換える

hubot/node_modules/hubot-kandan/package.jsonを編集

``` 
- "version":     "1.0",
+ "version":     "1.0.0",
```

* ~/.bashrcに環境変数を追加

```
# Host名
export HUBOT_KANDAN_HOST=localhost
# Portが80以外の場合
#export HUBOT_KANDAN_PORT=3000
# 取得したアクセスキー
export HUBOT_KANDAN_TOKEN=xxxxxxxxxxxxx
# info以外の場合
export HUBOT_LOG_LEVEL=debug
```

* 設定を反映

```
$ source ~/.bashrc
```

* アダプタを指定してHubotを起動

```
$ ./bin/hubot -a kandan
```

### Hubot動作確認

* @hubot shipitと打ってPOSTボタンを押します。

Hubotがリスの画像を出してくれました。

![shipit.png](https://qiita-image-store.s3.amazonaws.com/0/34365/f6596cfb-78cb-e856-f3ac-df47954c98fd.png "shipit.png")