MIRACLE LINUX9にSlackライクなチャットツール 「Rocket.Chat」を構築してみた!
以前のblog記事にMIRACLE LINUX8にRocket.Chatを構築する方法の紹介がありました。
今回はMIRACLE LINUX9に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. 構築手順
3.1. 構築する環境
本手順は、以下のソフトウェアを使用して、チャットシステムを構築することを想定しています。
Linuxディストリビューション MIRACLE LINUX 9.0
データベース MongoDB 5.0.14
チャットシステム Rocket.Chat 5.1.2
JavaScriptエンジン Node.js 14.19.3
3.2. MIRACLE LINUXのインストール
今回、Rocket.Chatを構築するMIRACLE LINUX9のOSインストールは
インストール時のソフトウェア選択で、「最小のインストール」を選択していることを想定しています。また、インターネットへ接続されていることが必要です。
MIRACLE LINUXのインストール方法についてはこのblogやwikiなどに多くのインストール方法の紹介があります!
wiki:MIRACLE LINUX 9.0 インストール手順
https://miraclelinux-users-wiki.growi.cloud/62c563fdbd4f602725aa4dea
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 dnf 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のインストール
MIRACLE LINUX 9 - AppStream からNode.jsのインストールを行います。
$ sudo dnf 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 9でも、このパッケージを利用することができます。
$ sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
GraphicsMagickをインストールします。
$ sudo yum install -y GraphicsMagick
3.6. Rocket.Chatのビルドツールのインストール
Rocket.Chatをビルドするためのツールをインストールします。
$ sudo yum install -y gcc-c++ make
3.7. Rocket.Chatのインストール
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.8. Rocket.Chatの初期設定
ウェブブラウザで http://{Rocket.Chatをインストールしたサーバ}:3000/ に接続すると、Rocket.Chatの初期設定ページが表示されます。ウィザード形式で初期設定ができるようになっていますので、表示される内容に従って、必要事項を入力します。
サーバの登録を行わない場合、[スタンドアロンとして続行]を選択します。
初期設定が完了すると、Rocket.Chatを利用できるようになります。
これでRocket.Chatを利用することが出来るようになりました!
参考情報
このほか、参考になる情報として、MIRACLE LINUX8での構築手順など下記の情報については
- LDAPサーバ連携手順
- ウェブ会議システム連携(Jitsi)
以前の紹介blog MIRACLE LINUX 8にSlackライクなチャットツール「Rocket.Chat」を構築してみた!
https://www.miraclelinux.com/tech-blog/ml8rocketchat
を参考にしてみてください。