SlackみたいなオープンソースRocket.Chatを構築

ソフトウェア

 Slackを使っているのですが、データ等を上げる時にすこしセキュリティ的に危ないデータを安易に置けないかなと思ったので、例えば社内で構築できるSlackのようなものは無いか探した所、Rocket.Chatというものがあったので挑戦してみました。

構築環境

 なんとなく好きなのでCentOSを利用しています。ネットで調べるとUbuntuの方が成功している方が多そうでしたが、動作しましたのでCentOSを好んで利用しているかたがいれば参考になればと思います。

時間がかかったところ

 ほとんどの方が引っ掛かった所で最後にサービスが起動しないという事象にひっかりました。

 結論から言うとNode.js関連のバージョンを合わせないと動かないです。ネットでの構築記録が少し古い(1年位)とそのまま実行しても他のアップデートとの兼ね合いで合わなくなりますのでそこを合わせれば動作します。

構築記録

 要領さえ分かってしまえば実行するコマンドは少ないです。
以下実行コマンドです。(一部出力結果もあります)

$sudo yum -y update

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

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

$sudo yum install -y gcc-c++ make mongodb-org nodejs

$sudo yum install -y epel-release && sudo yum install -y GraphicsMagick

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

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

$tar -xzf /tmp/rocket.chat.tgz -C /tmp

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

$cd /opt/Rocket.Chat/programs/server && npm install

$sudo useradd -M rocketchat && sudo usermod -L rocketchat

$sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat

$cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.target mongod.target
[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 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000
[Install]
WantedBy=multi-user.target
EOF

$sudo sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf

$sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf

$sudo systemctl enable mongod && sudo systemctl start mongod

$mongo --eval "printjson(rs.initiate())"

$sudo systemctl enable rocketchat && sudo systemctl start rocketchat

動作結果

 動作はしました。細かい動作は見ていませんが、それなりの動作はするかと思います。日本語にも対応していました。

まとめ

 Slackのようなチャットツールはとても便利だと思いますが、重要ファイル等を置くのはちょっと・・・という中規模企業には使えるのではないかと思いました。

コメント