slackクローンの一つRocket.Chatを作ってみた
本家様https://rocket.chat/
参照先https://docs.rocket.chat/installation/manual-installation/centos/
既に数多くの構築例がネットに掲示されてます.
ここではdockerを使わず、単体マシンに入れてみた
入れ物はCentOS 7です
まずCentOS7標準リポジトリには含まれていない「nodejs」、「npm」、「GraphicsMagick」パッケージを使用するので、epelリポジトリを登録します。
[root@rocketchat ~]# yum install epel-release
[root@rocketchat ~]# sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/epel.repo
そしてこれらのパッケージと「gcc-c++」をインストールします
[root@rocketchat ~]# yum --enablerepo=epel install nodejs npm GraphicsMagick gcc-c++
次に、NoSQLのMongoDBをインストールします。
本家様で示す手順ではどうやら古いバージョンのMongoDBがインストールされる 2.6.12とか
MongoDBの本家様で示されている手順を使えば最新版がりようできる.
参照先https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
っで、最新バージョンのMongoDBでRocket.Chatが動くのか?となるがどうやら大丈夫みたいなので使ってみた.
[root@rocketchat ~]# cat /etc/yum.repos.d/mongodb.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=0
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
[root@rocketchat ~]#
このリポジトリで何が配布されているかを一応確認してみる
[root@rocketchat ~]# yum --enablerepo=mongodb-org-3.4 list |grep -i mongodb-org-3.4
mongodb-org.x86_64 3.4.9-1.el7 mongodb-org-3.4
mongodb-org-mongos.x86_64 3.4.9-1.el7 mongodb-org-3.4
mongodb-org-server.x86_64 3.4.9-1.el7 mongodb-org-3.4
mongodb-org-shell.x86_64 3.4.9-1.el7 mongodb-org-3.4
mongodb-org-tools.x86_64 3.4.9-1.el7 mongodb-org-3.4
[root@rocketchat ~]#
っでMongoDBをインストール
[root@rocketchat ~]# yum --enablerepo=mongodb-org-3.4 install mongodb-org-server mongodb-org
npmを使ってアプリをインストールします
[root@rocketchat ~]# npm install -g inherits n
npm: relocation error: npm: symbol SSL_set_cert_cb, version libssl.so.10 not defined in file libssl.so.10 with link time reference
[root@rocketchat ~]#
とエラーが発生.
どうやら「openssl-libs」をupdateする必要があるみたいで
[root@rocketchat ~]# yum update openssl-libs
[root@rocketchat ~]# npm install -g inherits n
/usr/bin/n -> /usr/lib/node_modules/n/bin/n
/usr/lib
tqq inherits@2.0.3
mqq n@2.1.8
[root@rocketchat ~]#
と成功
コマンド「n」で
[root@rocketchat ~]# n 4.8.4
install : node-v4.8.4
mkdir : /usr/local/n/versions/node/4.8.4
fetch : https://nodejs.org/dist/v4.8.4/node-v4.8.4-linux-x64.tar.gz
######################################################################## 100.0%
installed : v4.8.4
[root@rocketchat ~]#
この辺が分からない...
インストール先は /opt で、最新版を取得、展開します
[root@rocketchat ~]# cd /opt
[root@rocketchat opt]# curl -L https://rocket.chat/releases/latest/download -o rocket.chat.tgz
[root@rocketchat opt]# gzip -cd rocket.chat.tgz | tar xf -
[root@rocketchat opt]# mv bundle Rocket.Chat
[root@rocketchat opt]# cd Rocket.Chat/programs/server
[root@rocketchat server]# npm install
これでインストールは完了。次に起動スクリプトを作る。ここで環境設定も行う
[root@rocketchat ~]# vi /usr/lib/systemd/system/rocketchat.service
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target mongod.target
[Service]
ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=root
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=http://rocketchat.sybyl.local:3000/ PORT=3000
[Install]
WantedBy=multi-user.target
[root@rocketchat ~]# systemctl daemon-reload
注意点は「Environment」の設定
「MONGO_URL=mongodb://localhost:27017/rocketchat」にてmongoDBの場所を指定。続いて
「ROOT_URL=http://rocketchat.sybyl.local:3000/」は外見上のURL。ここではプライベートアドレスを定義しているが、内部に置いたままでリバースプロキシで外部にも公開させる際には、ここを外部からのアクセス可能な名称にする。
「PORT=3000」はRocket.Chatで使用するport。
[root@rocketchat ~]# systemctl enable mongod.service rocketchat.service
[root@rocketchat ~]# systemctl start mongod.service rocketchat.service
最新版のRocket.Chatに変更したい場合には
Upgrading is much the same as installing Rocket.Chat
Shutdown Rocket.Chat
Goto the installation folder in this case: cd /opt/
Remove or move the Rocket.Chat folder.
Follow the installation section
とある
起動直後に始めにログインしたユーザが管理者になる
管理権限は複数に与えられる
1サイト1コミュニティーな感じ
デフォルトでは不特定多数の方に登録が許される形であるが、秘密の扉とか登録させないとか可能
mongodとrocketchatが常時稼働する環境が必要なのでVPSが最低限必要かな
https://web.arena.ne.jp/vps-cloud/とか
https://vps.sakura.ad.jp/かな
AWSでリザーブドインスタンスを使えばもっと安くなる感じかな