雨ブロ【yusukixsのブログ】

アドテク関連の業界で働くエンジニアです。最近はKubernetesでコンテナクラスタを構築してサービス開発することに力を入れてます。

社内のコミュニケーションツールとして「DevHub」をインストールしてみた

皆さんは社内でのコミュニケーションツールは何を使っているでしょうか? 最近だとSlackやChatWorkが流行っていますね。

僕の務める会社の場合、社内でのコミュニケーションツールとして、Jabber(XMPP)サーバを社内イントラに設置してチャットアプリを利用しています。

この度、DevHubというツールを使いたいという要望を受けて、社内のサーバーにインストールしセットアップしました。

その構築メモです。

そもそもDevHubって何?

わかりやすく端的に言うと、 チャットとWikiを1つのページでまとめて表示できるツールです。

MOONGIFTの紹介記事がわかりやすいです。

DevHub - 開発者たちにぴったりなチャットシステム

ページ全体にBasic認証をかけることはできますが、ユーザーごとの認証はありません。誰が何を書いたかという厳密なログを残したい場合の利用には向いていないと思います。

今回はセキュリティポリシー上の理由により、社内のイントラサーバーにインストールすることにしました。

環境

CentOS 6.2 64bit (何年か前から使ってるサーバーなので古いです…)

DevHub実行環境の準備

実行用にNode.jsとMongoDBをインストールします。

Node.jsのインストール

Node.jsをインストールします。 まずは社内からインターネット接続をするため、yumをproxy経由で利用するようにします。

/etc/yum.conf に追記

proxy=http://proxy.example.com:8080

よしこれで社外につなげられるぞとyum install nodejsを実行するとエラー。

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

どうやら環境が古くて、yumリポジトリが見つからない模様。

CentOS6でyumが繋がらなくなった

上記ページを参考に、/etc/yum.repos.d/epel.repoで次のように修正

#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

↓

baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

これでyumでインストールできるようになりました。

yum install epel-release nodejs npm

インストール確認

# node -v
v0.10.36

これでNode.jsがインストールできました。

MongoDBのインストール

yumの設定は終わっているので、コマンド一発です。

yum install mongodb-org

インストール後、MongoDBを起動します。

service mongod start

ブート時の自動起動も登録しておきます。

chkconfig mongod on

DevHubインストール

実行環境が準備できたので、いよいよDevHubのインストールです。

例の如く、proxyの設定です。今度はGitをproxy越しに利用できるようにします。

git config --global http.proxy http://proxy.example.com:8080
git config --global https.proxy http://proxy.example.com:8080

proxyの設定ができたので、githubからcloneします。

# cd /usr/local
# git clone git@github.com:volpe28v/DevHub.git

ssh: connect to host github.com port 22: Connection timed out
fatal: The remote end hung up unexpectedly

ぐえー、エラーだ… どうやらSSHの22番ポートが閉じてて、外部に取りにいけないようです。 ウチのProxyサーバーはセキュリティが厳しすぎて、よくつまづきます…

ということで、443ポート(HTTPS)でgitを取りにいくようにします。 さすがに80と443ポートは開いてるので。

git config --global url."https://".insteadOf git://

URLをgit形式のSSHではなく、HTTPSに変えて再チャレンジでclone成功。

cd /usr/local
git clone https://github.com/volpe28v/DevHub.git

ソースが取得できたので、npmでインストール完了です。

cd DevHub
npm install

DevHubのセットアップ

以下のコマンドで起動します。

cd /usr/local/DevHub
node app.js -p 3000 -d devhub_db -t title &

-p ポート番号(default 3000) -d データベース名(default devhub_db) -t タイトル(default '')

これでhttp://hostname:3000にてDevHubのページが開けます。

ただし、このままだとずっとコンソールでログインしていないといけないので、Node.jsをデーモン化して実行するforeverというツールをインストールします。

npm install forever -g

foreverでNode.jsを実行すればデーモン化できるので、ログアウトをしてもプロセスが停止しないようになります。

foreverでのDevHub起動

forever start app.js -p 3000 -d devhub_db -t title

foreverでのDevHub停止

forever stop /usr/local/DevHub/app.js

注意点

注意点として、foreverの実行する際、カレントディレクトリをDevHubディレクトリとしてください。

DevHubディレクトリで実行されていない場合、画像をDevHubにアップロードするとDevHubが落ちてしまいます。 画像のアップロード先のパスがおかしくなってしまうことが原因のようです。これでかなりハマりました…

ともあれ、これでDevHubを利用できるようになりました。 これを使ってプロジェクト内のコミュニケーションが円滑化することを期待したいです。