世はクラウド全盛時代。サーバーレスで基本企業やユーザは、利用させてもらうだけのお手軽な時代。とはいえ、様々な事情やセキュリティの観点から使わせないという企業も未だに多いのは事実。そんな時の助けになるのが、様々なオープンソース製品。

そんなものの1つにチャットシステムがあります。LINE駄目、Slack駄目と言ってもそれだけじゃ、ただシャドーITを推進しているようなもの。企業はシャドーIT撲滅したいなら、代わりになるものを提供しなければなりません。そこで使いたいのがRocket Chat。クラウドサービスもあり、またAndroidやiOS用のアプリも用意されていて、非常にオススメです。

図:病院やセキュアな環境で使える最高のシステムかも

今回使用するもの

今回は仮想環境上にLinuxを入れて、其の中にRocket Chat Serverを作るというベタなやり方です。Docker上に構築するという今どきな手法もありますよ。

いざ構築をしましょう

サーバーのインストール

Ubuntu Linuxのインストールについてはここでは省略します。今は昔と違って、Linuxのインストールはとてつもなく簡単になってるので、ここで躓く人は殆どいないでしょう。

ここでは、Rocket Chat Serverのインストールを中心に紹介します。Ubuntu Linux 16.04より採用されたsnapというパッケージ管理システムのおかげで、データベースとして利用するMongoDBやら設定ファイルを書かずに済むのでお手軽です。

  1. ターミナルを起動する
  2. まずは、OSを最新にアップデートしましょう。sudo apt-get updateを実行
  3. さらに、パッケージのアップデートの為に、sudo apt-get dist-upgrade -yを実行
  4. しばらくアップデート作業が完了するまで待機します。
  5. 完了したら、sudo snap install rocketchat-serverで、Rocket Chat本体をインストール
  6. インストールが完了すると、Rocket Chat ServerおよびMongoDBのインストールが完了しています。サービスはOS起動時に自動で立ち上がるようになっています。
  7. Rocket Chat Serverの稼働状況は、systemctl status snap.rocketchat-server.rocketchat-server.serviceで確認可能です。
  8. これですでにもうRocket Chatは使えるようになっています。

ログインして環境設定

まずは、http://localhost:3000にアクセスします。Rocket Chatのメイン画面が表示されます。初回起動時にだけ管理者のアカウントとして、ユーザ名(ニックネーム)、メアド、パスワードの設定を求められます。作成完了したら、早速ログインしましょう。

  • http://localhost:3000/admin/infoの管理画面に入る
  • 非常に沢山の設定項目があるが、主に使うのは、検索窓より上の設定項目。
  • 権限」では、ユーザに与えられたロールに応じて何が可能かを設定するエリアです。管理者だけしかルーム作れないように設定などをしたい場合には、変更を加えます。
  • ユーザ」では新規にユーザを追加したり、権限変更したり、削除したりするエリアです
  • インポート」では他のチャットサービスで使っていたデータを取り込む事が可能です。HipchatとSlackに対応しているみたいです。
  • Assets」では、サービスに表示されるロゴなどを変更する画面です。
  • E2E Encryption」は通信を暗号化する為のオプションです。
  • OAuth」では、他のクラウドサービスと連携する為のオプションです。
  • Slack Bridge」は、Slackに橋渡しをするための設定関係があります。
  • アカウント」では各ユーザが実行可能な細かいカスタマイズの変更許可について設定があります。
  • プッシュ通知」ではプッシュ通知をするためのゲートウェイ設定項目があります。
  • メッセージ」では投稿するメッセージに対する規制やフォーマットなどの設定項目があります。
  • メール」では、招待メールなどの通知に使用するSMTPサーバ設定やヘッダー、フッター、テンプレ設定があります。
  • レイアウト」では、RocketChatの見た目のカスタマイズを行うための設定項目があります。
  • 全般」では、REST APIの設定や翻訳などその他の設定項目があります。

Rocket Chatの主な機能

Rocket ChatはSlack風のチャットサービスです。Slackで実装されてるような主要なサービスは持ち合わせております。また、誰が今オンラインなのか?確認することも可能です。管理者設定からこれ以外にも多種多様な機能を追加可能です。

絵文字も簡単に送れる

非常に沢山の絵文字が用意されていますし、IMEで絵文字を送るのも手軽

メンバーリストやメンバー追加もお手軽

ユーザ招待はメールで送られるので、SMTPなどを事前に設定しておく必要があります。

写真や動画を送信可能

初期設定では最大100MBまで送ることが可能。ファイル自体を送れるので、画像や動画以外もアップロード可能。

いいね的なボタン機能

レスの右上にあるちっちゃなボタンから「いいね」的なリアクションを送れます。

プライベートルーム作成

左上のルーム作成ボタンから、作れます。プライベートルームは招待した人以外は参加が出来ない閉じたチャットルームです。

アプリを利用する

Rocket Chatの優れている点はブラウザ上で動くだけでなく、主要な環境用にクライアントアプリが用意されている点です。Android, iOS, デスクトップPC用(Electronで作られてる)やWindows10 UWPアプリと用意されているので、ローカルサーバに接続して使うことが可能です。ここでは、Android版での接続をしてみます。

  1. Rocket Chatアプリをインストールする
  2. 起動するとWelcome to Rocket.Chatの画面が出るので、Connect with a Serverをクリック。
  3. サーバー接続画面が出るので、http:を選び(SSL有効にしてるならばhttps://)、相手のサーバのIPアドレスとポート番号を入れる(例:http://192.168.1.3:3000
  4. 次にログイン画面が出るので、登録したメアドとパスワードを入力してログイン。
  5. ログインが完了すると、チャンネルを作ったり、プロフィール設定、チャットを行う事がすぐに可能です。

図:サーバアドレスを入力する画面

    

図:Slack風で多機能なチャットが出来ます

図:macOS X クライアントで接続してみた

メンテナンス

セッティング関係

  • snapでのインストールはサーバ環境自体がメジャーリリース時に自動アップデートされる仕組みです。
  • 自動でServerが起動しない場合には、sudo systemctl start snap.rocketchat-server.rocketchat-server.serviceで手動で起動します。
  • ファイアウォール設定時には、以下のコマンドでPort3000番を開けるようにする

  • 自動起動設定ファイルは、/usr/lib/systemd/system/rocketchat.serviceに記述されています。
  • サービスで自動起動設定をする場合は、systemctl enable rocketchat.serviceで行う
  • Rocket Chat自体は、Githubで公開されています。

バックアップ

Rocket Chatのバックアップについてですが、コマンドラインから可能なので、cronと合わせて定期的に外部HDDなどに退避させておくと良いでしょう。

  • バックアップをする時は、sudo snap run rocketchat-server.backupdbを実行
  • リストアする時は、sudo snap run rocketchat-server.restoredb –noIndexRestoreを実行
  • アップロードしてるファイルは、データベースに格納された形で/var/snap/rocketchat-server/common/に保存されていますので、tar cf /tmp/backup/rocket.tarなどをcronに登録しておくと良いでしょう。

図:アップロードされたファイルの在り処

発言内容を取得する

REST APIを使用する

Rocket Chatにも様々なREST APIが装備されています。また、β版且つ未公開となってるRealtime APIを用いると、発言内容などを取得出来るようです。メッセージを送ったり、ルームを作ったり様々なAPIが用意されているので、これらを元に自前のアプリケーションに組み込む事が可能です。

OAuth2.0認証周りはこちらにドキュメントがあります。いずれGoogle Apps Scriptで接続するための仕組みを作ってみたいと思います。

Excelで接続する

Rocket ChatはMongoDBというNoSQLなデータベースを採用しています。JSONオブジェクトなので、JavaScriptとは相性が良さそうです。しかし、VBAから扱うには、VBA-JSONなどのライブラリを使って、JSONをパースする仕組みが必要になります。

MongoDBからRocket ChatのデータベースをJSONでエクスポートするにはmongoexportコマンドを利用することで、DBの内容をJSONで出力する事が可能です。

関連リンク

共有してみる: