WindowsでRocketChatを立てたい
お仕事の都合、サクッとチャット環境を構築することになったときのbash_historyを綺麗にしたやつです。
次使う誰かのために。
公式の手順があります。
CentOSが立った後は、以下の公式の手順も使えると思います。(この記事を書いてるときに見つけた…)
https://github.com/RocketChat/docs/tree/master/installation/manual-installation/centos
前提環境
- OS(物理PC): Windows10
- VirtualBox: 5.2.6
- Vagrant: 2.0.2
完成する環境
- CentOS(VM): 7.6 (実際に構築したときのversion。)
- RocketChat: 1.2.1 (実際に構築したときのversion。記事執筆時点では1.3.0がある模様)
(以下RocketChatのために一緒に構築する環境)
- MongoDB: 3.6
- Node.js: 8.11.4
※この2つは"特に"特定のバージョンであることが必要です。
(ちょっとずれても大丈夫だろーと思って進めるとしっかりエラーが出て時間を無駄にしました。。)
インストールするRocketChatのversionと、必要な上記のversionをしっかり確認してください。
手順
注意事項
基本的にコマンドの部分を全てコピペすればOKです。
2点だけ書き換え・確認してください。
-
***TODO_CHANGE_HOST_NAME***
(RocketChatを公開したいURLに書き換えてください。 ※必須) - RocketChat・Node.js・MongoDBのバージョン
まずはVMを立てる
Windowsでの作業です。Virtualbox, Vagrantはインストール済みの前提です。
Vagrantfile
を作成して、 vagrant up
しましょう。
Vagrant.configure("2") do |config|
# Proxy
config.proxy.http = "http://proxy:port"
config.proxy.https = "http://proxy:port"
config.proxy.no_proxy = "localhost,127.0.0.1"
# OS
config.vm.box = "centos/7"
config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
config.vm.network "private_network", ip: "192.168.250.250"
config.ssh.insert_key = false
# Port forwarding
config.vm.network "forwarded_port", guest: 3000, host: 3000
# Spec
config.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
vb.cpus = "1"
end
# Username
config.ssh.username = "vagrant"
end
※MacOSXではこのVagrantfileではインターネットに出れませんでした。。(別記事リンク)
VMで作業
VMに入ります。( vagrant ssh
)
RocketChatに必要なもろもろのインストール
下記コマンドは、 MongoDB:3.6
, Node.js:8.11.4
のインストールコマンドです。別versionをインストールする場合は注意してください。
echo -e "[mongodb-org-3.6]\nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/3.6/x86_64/\ngpgcheck=1\nenabled=1\ngpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc" | sudo tee /etc/yum.repos.d/mongodb-org-3.6.repo
sudo yum -y install epel-release
sudo yum -y update
sudo yum install -y nodejs curl GraphicsMagick npm mongodb-org-server mongodb-org gcc-c++
sudo npm install -g inherits n
sudo n 8.11.4
RocketChatのインストール
RocketChatを /opt/Rocket.Chat/
配下にインストールします。
下記コマンドは、 RocketChat:1.2.1
のインストールコマンドです。以下同文。
cd /opt
sudo curl -L https://releases.rocket.chat/1.2.1/download -o rocket.chat.tgz
sudo tar zxvf rocket.chat.tgz
sudo mv bundle Rocket.Chat
cd Rocket.Chat/programs/server
sudo npm install
もう少し
まだ起動できません。ここを飛ばして起動しようとすると
Error: /lib64/libstdc++.so.6: version 'GLIBCXX_3.4.20' not found (required by /opt/Rocket.Chat/programs/server/node_modules/fibers/bin/linux-x64-57/fibers.node)
とか OPLOG / REPLICASET IS REQUIRED TO RUN ROCKET.CHAT, MORE ...
とか出てくると思います。
sudo npm install -g node-gyp
cd /opt/Rocket.Chat/programs/server/node_modules/fibers/
sudo node-gyp rebuild --target=v8.11.4
sudo cp bin/linux-x64-57/fibers.node{,_bk} #念の為ファイルをバックアップ
sudo cp -f build/Release/fibers.node bin/linux-x64-57/fibers.node #上書き
echo -e "replication:\n replSetName: \"rs01\"" | sudo tee -a /etc/mongod.conf
起動確認
その前にRocketChatをサービス化します。
他PCからアクセスする際のURL(Windows(物理PC)のIP等)を事前に確認して、以下のコマンドの ***TODO_CHANGE_HOST_NAME***
の部分を置き換えて実行してください。
echo -e "[Unit]\nDescription=The Rocket.Chat server\nAfter=network.target remote-fs.target nss-lookup.target nginx.target mongod.target\n[Service]\nExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js\nStandardOutput=syslog\nStandardError=syslog\nSyslogIdentifier=rocketchat\nUser=rocketchat\nEnvironment=LD_PRELOAD=/opt/Rocket.Chat/programs/server/npm/node_modules/sharp/vendor/lib/libz.so NODE_ENV=production MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=http://***TODO_CHANGE_HOST_NAME***:3000/ PORT=3000 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replSet=rs01\n[Install]\nWantedBy=multi-user.target" | sudo tee /usr/lib/systemd/system/rocketchat.service
必要なOSユーザ(CentOS)を作成します。作成したらsudo権限をあげてください。
sudo useradd -M rocketchat && sudo usermod -L rocketchat
sudo chown -R rocketchat: /opt/Rocket.Chat
sudo visudo
rootユーザに権限付与してる行が下の方にあるので、真似て rocketchat
ユーザにも付与します。
rocketchat ALL=(ALL) ALL
まずはDBを起動します。
sudo systemctl start mongod
systemctl status mongod
sudo systemctl enable mongod
mongo --eval "printjson(rs.initiate())"
mongo
コマンドで "ok": "1"
と出たことを確認してください。
次にRocketChatを起動します。
sudo systemctl start rocketchat
systemctl status rocketchat
sudo systemctl enable rocketchat
起動確認
curl localhost:3000
それっぽいのが返って来ればOKです。ただし、まだCentOS内からしかアクセスできません。
他のPCからアクセスできるようにする。(ファイアウォール設定)
まだCentOSでの作業です。
sudo systemctl start firewalld
systemctl status firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --add-port=3000/tcp --zone=public --permanent
sudo firewall-cmd --reload
Windowsに戻って動作確認
ようやくWindowsに帰ってきて動作確認です。
ブラウザで、 http://***TODO_CHANGE_HOST_NAME***:3000
にアクセスして、初期設定を行ってください。
初期設定が終わったら
お疲れ様でした!
もし、チャットの運用・運営方法をお探しでしたら、こちらも併せて読んでいただけると嬉しいです。
仕事でチャットを使うときにまず作るチャンネルN選
良いチャットライフを!!