MIRACLE LINUX 8にSlackライクなチャットツール「Rocket.Chat」を構築してみた!
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の初期設定ページが表示されます。ウィザード形式で初期設定ができるようになっていますので、表示される内容に従って、必要事項を入力します。
初期設定が完了すると、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にログインし、管理メニューを表示します。
管理メニューの[設定]を選択し、LDAPの[開く]ボタンを押します。
LDAP設定のページが表示されますので、Active Directoryの接続情報を入力します。
以下の条件でActive Directoryに接続する場合の設定例を紹介します。
[設定条件]
Active DirectoryのIPアドレス |
172.16.5.1 |
Active DirectoryのLDAPポート番号 |
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にログインし、管理メニューを表示します。
管理メニューの[アプリ]を選択し、アプリの検索欄に Jitsi と入力すると、Jitsiのアプリが表示されます。
[インストール]ボタンを押すと、Jitsiアプリがインストールされ、Rocket.Chatからウェブ会議システムを利用できるようになります。
チャンネルやダイレクトメッセージの中で、ウェブ会議システムへの招待を行います。
ページの右上に配置されている[通話]ボタンを押し、[Start call]ボタンを押すと、ウェブ会議室に接続されます。
、
チャンネルやダイレクトメッセージには、ウェブ会議室が開始されたことと、ウェブ会議室に入るための[Join call]ボタンが表示されます。[Join call]ボタンを押すと、ウェブ会議室に接続されます。
ウェブ会議室(Jitsi)
Jitsiアプリの標準設定では、Jitsiの公開ウェブ会議システム(https://meet.jit.si)に接続されるようになっています。自前で構築したJitsiウェブ会議システムを使用する場合、環境に合わせて設定変更を行う必要があります。
MIRACLE LINUX 関連ページ
MIRACLE LINUX に興味を持っていただけたら、ぜひ以下のページも合わせてご確認ください!
当記事に記載している設定、スクリプトは動作を保証するものではありません。
詳細に関しては以下のページをご参照ください。
https://www.cybertrust.co.jp/corporate/terms-of-use.html