現在位置: ホーム / みらくるブログ / MIRACLE LINUX 8にSlackライクなチャットツール「Rocket.Chat」を構築してみた!

MIRACLE LINUX 8にSlackライクなチャットツール「Rocket.Chat」を構築してみた!

今回はOSSのビジネスチャットソフトウェア、Rocket.ChatをMIRACLE LINUX 8.4にインストールしてみました!

1. Rocket.Chatの概要

現在、電子メールや電話に置き換わるコミュニケーションツールとして、チャットが広く利用されるようになってきました。Slack等クラウドサービスとして利用できるチャットサービスも多く提供されており、容易にチャットを利用できるようになっています。

ビジネスチャットは、会社全体、部門内、グループ内のコミュニケーションや、1対1のコミュニケーション等、様々な用途で利用することができます。過去のやり取りを参照したり、検索したりすることもできるようになっており、業務効率化、生産性向上が期待できます。

一方、Slack等クラウドサービスのビジネスチャットを利用する場合、チャットのやり取りの履歴がサービス提供サイトに残ることになります。アクセスは制限されたユーザーに絞ることはできますが、外部に機密情報や個人情報を残すことが心配であったり、組織のセキュリティポリシーに反したりすると、クラウドサービスのビジネスチャットを利用することが難しいこともあります。

Rocket.Chatは、オープンソースソフトウェアのビジネスチャットソフトウェアです。
公開チャンネル、非公開チャンネル、1対1でチャットを行うダイレクトメッセージ等のチャットルームの利用、チャットメッセージの文字修飾(太字、斜体、取り消し線)、絵文字の利用等、チャットシステムで一般的に利用できる機能は網羅しています。

Rocket.Chatは、オンプレミス環境に組織専用のチャットシステムを構築することができますので、前述のようなセキュリティの心配が少なくなり、安心して利用できるチャットシステムを構築することができます。

2. ユースケース

2.1. インターネットに接続できない環境での利用

自治体や機密情報を扱う企業では、インターネットに接続できない環境で業務を行っていることがあります。このような環境でチャットを使用する場合、クラウドサービスのチャットシステムを利用することができません。

Rocket.Chatは、オンプレミス環境やプライベートクラウド環境にチャットシステムを構築することができますので、上記のようなインターネットに接続できない環境でもチャットシステムを利用することができます。

また、インターネットに接続できる環境であっても、セキュリティの観点から外部サービスの利用が禁止されている場合には、オンプレミス環境にチャットシステムを構築することで、安心してチャットシステムを利用できるようになります。

2.2. チャット利用アカウントを柔軟に運用したい環境での利用

チャットシステムを、社員や職員だけでなく、パート社員、アルバイト、取引先等、広い範囲で利用したい場合、アカウントの管理方法が課題となることがあります。クラウドサービスのチャットシステムでは、アカウント課金を考慮しないといけないこともあります。

Rocket.Chatは、組織専用のチャットシステムですので、アカウント課金はなく、アカウントを自由に発行することができます。必要な時にアカウントを発行し、不要なったら削除するというような運用を簡単に行うことができます。

また、組織が持っているActive Directory等のアカウント管理システムと連携して、既存のアカウントでチャットシステムを利用したり、シングルサインオンでチャットシステムを利用したりすることもできます。


 

3. 構築手順

MIRACLE LINUX/Rocket.Chatを使用したチャットシステムを構築する方法を説明します。

3.1. 構築する環境

本手順は、以下のソフトウェアを使用して、チャットシステムを構築することを想定しています。

Linuxディストリビューション

MIRACLE LINUX 8.4

データベース

MongoDB 5.0.12

チャットシステム

Rocket.Chat 5.1.2

JavaScriptエンジン

Node.js 14.19.3

 

3.2. MIRACLE LINUXのインストール

今回、Rocket.Chatを構築するMIRACLE LINUXの環境はこちらの記事の手順でインストールします。 なお、本手順では、インストール時のソフトウェア選択で、「最小のインストール」を選択していることを想定しています。また、インターネットへ接続されていることが必要です。


3.3. MongoDBのインストール

公式サイトからMongoDBのパッケージをインストールするため、リポジトリファイルを作成します。

$ cat << EOF | sudo tee -a /etc/yum.repos.d/mongodb-org-5.0.repo
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
EOF

MongoDBをインストールします。

$ sudo yum install -y mongodb-org

MongoDBの設定ファイルを編集します。MongoDBの設定ファイルは、/etc/mongod.confです。ストレージエンジンにwiredTigerを指定します。

storage:
    engine: wiredTiger

レプリケーションを有効にします。レプリケーションセットの名前はrs01を指定します。

replication:
    replSetName: rs01

/etc/mongod.confは、以下のような内容になります。

systemLog:
    destination: file
    logAppend: true
    path: /var/log/mongodb/mongod.log
    
storage:
    dbPath: /var/lib/mongo
    journal:
        enabled: true
    engine: wiredTiger
    
processManagement:
    fork: true  # fork and run in background
    pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
    timeZoneInfo: /usr/share/zoneinfo
    
net:
    port: 27017
    bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
    
replication:
    replSetName: rs01
    

MongoDBの起動、サーバ起動時の自動起動設定を行います。

$ sudo systemctl enable --now mongod

mongoコマンドを使用して、レプリカセットを作成します。

$ mongo --eval "printjson(rs.initiate())"
MongoDB shell version v5.0.12
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName;=mongodb
Implicit session: session { "id" : UUID("c92f65e5-b984-4635-8471-5723b869e38c") }
MongoDB server version: 5.0.12
{
    "info2" : "no configuration specified. Using a default configuration for the set",
    "me" : "127.0.0.1:27017",
    "ok" : 1,
    "$clusterTime" : {
        "clusterTime" : Timestamp(1663482784, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    },
    "operationTime" : Timestamp(1663482784, 1)
}    

3.4. Node.jsのインストール

パッケージマネージャを使用してNode.jsをインストールするためのセットアップを行います。

$ sudo yum install -y curl && curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -

インストールされるリポジトリファイルに、MIRACLE LINUX 8.4では使用できない設定が含まれていますので、コメントアウトします。

Node.jsのリポジトリファイルは、/etc/yum.repo.d/ nodesource-el8.repoです。failovermethod=priorityの行をコメントアウトします。

[nodesource]
name=Node.js Packages for Enterprise Linux 8 - $basearch
baseurl=https://rpm.nodesource.com/pub_14.x/el/8/$basearch
#failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL

[nodesource-source]
name=Node.js for Enterprise Linux 8 - $basearch - Source
baseurl=https://rpm.nodesource.com/pub_14.x/el/8/SRPMS
#failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL
gpgcheck=1

Node.jsをインストールします。

$ sudo yum install -y nodejs

npmを使用してinheritsとnをインストールし、Rocket.Chatに必要なNode.jsのバージョンをセットアップします。

$ sudo npm install -g inherits n && sudo n 14.19.3

$ /usr/local/bin/node -v
v14.19.3

3.5. GraphicMagickのインストール

GraphicMagickは、MIRACLE LINUXの標準パッケージには含まれていないため、Extra Packages for Enterprise Linux(EPEL)のリポジトリからインストールします。

EPELは、Red Hat Enterprise Linux向けにリポジトリ追加用のパッケージが提供されており、MIRACLE LINUX 8.4でも、このパッケージを利用することができます。

$ sudo yum install -y \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm        

GraphicsMagickをインストールします。

$ sudo yum install -y GraphicsMagick

3.6. Rocket.Chatのインストール

Rocket.Chatをビルドするためのツールをインストールします。

$ sudo yum install -y gcc-c++ make

Rocket.Chatの最新版をダウンロードします。

$ curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz

tarファイルを展開し、セットアップを行います。

$ tar xf /tmp/rocket.chat.tgz -C /tmp
$ cd /tmp/bundle/programs/server && npm install        

Rocket.Chatを/optに配置します。

$ sudo mv /tmp/bundle /opt/Rocket.Chat

Rocket.Chatサービスを起動するためのユーザーを作成し、Rocket.Chatを配置したディレクトリのパーミッションを変更します。

$ sudo useradd -M rocketchat && sudo usermod -L rocketchat
$ sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat        

Rocket.Chatを起動するためのsystemdユニットファイルを作成します。

$ cat << EOF | sudo tee -a /usr/lib/systemd/system/rocketchat.service
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service

[Service]
ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 
Environment=MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01
Environment=ROOT_URL=http://localhost:3000/
Environment=PORT=3000

[Install]
WantedBy=multi-user.target
EOF

Rocket.Chatの起動、サーバ起動時の自動起動設定を行います。

$ sudo systemctl enable rocketchat && sudo systemctl start rocketchat

本手順通りにインストールを行うと、Rocket.Chatは3000/tcpで待ち受けを行います。必要に応じてfirewalldの設定を行ってください

$ sudo firewall-cmd --add-port 3000/tcp
$ sudo firewall-cmd --add-port 3000/tcp --permanent      

3.7. Rocket.Chatの初期設定

ウェブブラウザで http://{Rocket.Chatをインストールしたサーバ}:3000/ に接続すると、Rocket.Chatの初期設定ページが表示されます。ウィザード形式で初期設定ができるようになっていますので、表示される内容に従って、必要事項を入力します。


image002.png


初期設定が完了すると、Rocket.Chatを利用できるようになります。



 

4. 外部システムとの連携

4.1. Active Directory連携

Rocket.Chat は、LDAPサーバと連携する機能があります。

Rocket.Chatへのログイン時のユーザー認証をLDAP に問い合わせることができます。また、LDAP に登録されているメールアドレス等のアカウント情報を、自動的にRocket.Chatに取り込むことも可能です。

LDAPサーバにはActive Directoryを指定することができます。Active Directoryのアカウント情報を使用したチャットシステムを構築することができます。


Rocket.Chatへのログイン時のユーザー認証をLDAP に問い合わせることができます。また、LDAP に登録されているメールアドレス等のアカウント情報を、自動的にRocket.Chatに取り込むことも可能です。

LDAPサーバにはActive Directoryを指定することができます。Active Directoryのアカウント情報を使用したチャットシステムを構築することができます。

 

Active Directoryと連携するには、次のように設定します。

管理者権限を持ったユーザーでRocket.Chatにログインし、管理メニューを表示します。

image004.png

 

管理メニューの[設定]を選択し、LDAP[開く]ボタンを押します。

image006.png

 

LDAP設定のページが表示されますので、Active Directoryの接続情報を入力します。

以下の条件でActive Directoryに接続する場合の設定例を紹介します。

 

[設定条件]

Active DirectoryIPアドレス

172.16.5.1

Active DirectoryLDAPポート番号

389

接続が中断された場合の再接続

する

LDAP認証に失敗した場合のローカルユーザー認証

しない

バインドDN

cn=rocketchat,cn=users,dc=example,dc=com

バインドDNのパスワード

StrongPassword

LDAP接続の暗号化

なし

ログイン後のユーザー検索

する

検索ベースDN

cn=users,dc=example,dc=com

検索フィルター

(objectclass=person)

検索範囲

sub

ログイン時にユーザーデータを更新

する

メールアドレスのデフォルトドメイン

example.com

 

[設定する内容](デフォルトの値から変更しない項目は省略)

表示タブ

設定種別

設定項目

設定値

接続

 

有効にする

有効化

 

 

サーバーの種類

Active Directory

 

 

ホスト

172.16.5.1

 

 

ポート

389

 

 

再接続

有効化

 

認証

有効にする

有効化

 

 

ユーザーDN

cn=rocketchat,cn=users,dc=example,dc=com

 

 

パスワード

StrongPassword

ユーザー

検索

 

ログイン後に

ユーザーを検索

有効化

 

検索フィルター

ベースDN

cn=users,dc=example,dc=com

 

 

フィルター

(objectClass=person)

データ同期

 

ログオン時に

ユーザーデータ

を更新

有効化

 

 

デフォルト

ドメイン

example.com

 

上記の設定を行い、[変更を保存]ボタンを押すと、 Active DirectoryのアカウントでRocket.Chatにログインできるようになります。

 

4.2. ウェブ会議システム連携

Rocket.Chatには、ウェブ会議システムと連携する機能があります。

Rocket.Chatは、いくつかのウェブ会議システムとの連携が可能です。ここでは、Jitsiとの連携方法について説明します。

Jitsiとの連携を行う場合、Rocket.Chatマーケットプレイスからアプリをダウンロードしてインストールする必要があります。マーケットプレイスからアプリをダウンロードするには、Rocket.Chat Cloudのユーザー登録が必要です。

管理者権限を持ったユーザーでRocket.Chatにログインし、管理メニューを表示します。


image007.png

 

管理メニューの[アプリ]を選択し、アプリの検索欄に Jitsi と入力すると、Jitsiのアプリが表示されます。

 

image009.png

 

[インストール]ボタンを押すと、Jitsiアプリがインストールされ、Rocket.Chatからウェブ会議システムを利用できるようになります。

チャンネルやダイレクトメッセージの中で、ウェブ会議システムへの招待を行います。

ページの右上に配置されている[通話]ボタンを押し、[Start call]ボタンを押すと、ウェブ会議室に接続されます。

image011.png

 

チャンネルやダイレクトメッセージには、ウェブ会議室が開始されたことと、ウェブ会議室に入るための[Join call]ボタンが表示されます。[Join call]ボタンを押すと、ウェブ会議室に接続されます。

 

image013.png

 

image015.jpg

ウェブ会議室(Jitsi)

 

Jitsiアプリの標準設定では、Jitsiの公開ウェブ会議システム(https://meet.jit.si)に接続されるようになっています。自前で構築したJitsiウェブ会議システムを使用する場合、環境に合わせて設定変更を行う必要があります。

 

MIRACLE LINUX 関連ページ

MIRACLE LINUX に興味を持っていただけたら、ぜひ以下のページも合わせてご確認ください!

 

当記事に記載している設定、スクリプトは動作を保証するものではありません。
詳細に関しては以下のページをご参照ください。
https://www.cybertrust.co.jp/corporate/terms-of-use.html