[教學] 架設私人團隊溝通協作工具-Rocket.Chat

現在團隊溝通協作工具越來越多了,如Slack、JANDI 、Microsoft Teams…等用於工作溝通上的軟體,不同軟體各有不同的特色,而這些服務往往都以人數或者使用空間進行收費,假如你不想要花這筆費用的話,本篇介紹一個可以自行架設的替代方案Rocket.Chat,目前 Rocket.Chat 是 Open Source,且支援多國語言及LiveChat等特別的功能。

官方網站:https://rocket.chat/

原始碼:https://github.com/RocketChat/Rocket.Chat

電腦客戶端下載:https://rocket.chat/install

測試環境:ubuntu 18.04

Rocket.Chat Commit Hash : 202a465f1c

首先,因為Rocket.Chat 是用Node JS寫的並且儲存空間是使用MongoDB

所以要先安裝 MongoDB,輸入指令加入mongoDB的sources:

sudo apt-get install -y build-essential mongodb-org nodejs npm graphicsmagick
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list

接著輸入指令更新apt-get 並且安裝NodeJS與mongo-db

sudo apt-get update && sudo apt-get install -y curl && curl -sL curl -sL https://deb.nodesource.com/setup_8.x | sudo bash -
sudo apt-get install -y build-essential mongodb-org nodejs graphicsmagick

因為ubuntu 18.04的nodejs 版本只有6.4.1可是Rocket.chat需要8.11.3以上版本,輸入以下指令升級NodeJS

sudo npm install -g inherits n && sudo n 8.11.3

然後就是開始下載安裝Rocket.chat

curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz
tar -xzf /tmp/rocket.chat.tgz -C /tmp

用npm安裝所需要的套件,並且把它移到 /opt/Rocket.Chat

cd /tmp/bundle/programs/server && npm install
sudo mv /tmp/bundle /opt/Rocket.Chat

接著要修改增加權限給rocket.chat

sudo useradd -M rocketchat && sudo usermod -L rocketchat
sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat

此時就能夠手動開啟服務試試看,先啟動mongo db服務

sudo systemctl enable mongod && sudo systemctl start mongod

並且設定環境變數 (以下的設定表示預設會將網頁開在3000 port,並且mongodb位置在localhost的27017 port)

export PORT=3000
export ROOT_URL=http://0.0.0.0:3000/
export MONGO_URL=mongodb://localhost:27017/rocketchat

手動啟動Rocket.Chat

cd /opt/Rocket.Chat
node main.js

當出現類似以下訊息時表示啟動完成

➔ System ➔ startup
➔ +---------------------------------------------+
➔ |                SERVER RUNNING               |
➔ +---------------------------------------------+
➔ |                                             |
➔ |  Rocket.Chat Version: 0.74.3                |
➔ |       NodeJS Version: 8.11.3 - x64          |
➔ |             Platform: linux                 |
➔ |         Process Port: 3000                  |
➔ |             Site URL: http://0.0.0.0:3000/  |
➔ |     ReplicaSet OpLog: Disabled              |
➔ |          Commit Hash: 202a465f1c            |
➔ |        Commit Branch: HEAD                  |
➔ |                                             |
➔ +---------------------------------------------+

這時候用瀏覽器開啟設定的ROOT_URL就能夠成功看到成功如下面的畫面

可是每次開機都要手動啟動實在是很不方便

所以接著教如何設定service讓開機能自動啟動
首先在 /lib/systemd/system/rocketchat.service 創一個檔案,並且內容如下(MONGO_URL, ROOT_URL, PORT可依照自己情況調整):

[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.target mongod.target

[Service]
ExecStartPre=/bin/sleep 10
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 ROOT_URL=http://0.0.0.0:3000/ PORT=3000

[Install]
WantedBy=multi-user.target

然後啟動rocketchat 服務

sudo systemctl daemon-reload
sudo systemctl start rocketchat

需要稍微等待一點時間,可以透過以下指令查看目前啟動狀況

sudo systemctl status rocketchat

如果啟動沒有問題就輸入以下指令使這個服務可以在開機會自動啟動

sudo systemctl enable rocketchat

接著就可以開始設定管理員帳號

接著就可以開始使用了