Skip to content

Deploy Rocket.Chat to UBUNTU

Raphael Guarilha edited this page Sep 16, 2015 · 11 revisions

This guide explains how to deploy your own Rocket.Chat instance to a Ubuntu Linux machine.

1. Install Dependencies

  • Node.js
  • MongoDB
  • curl
  • nave
  • pm2
# SYSTEM CONFIGURATION
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
apt-get update
apt-get install -y git nodejs npm mongodb-org curl

ln -s /usr/bin/nodejs /usr/bin/node

npm install nave -g
nave usemain 0.10.40

curl https://install.meteor.com/ | sh

npm install pm2 -g
pm2 startup

2. Setup MongoDB Replica Set

Rocket.Chat uses the MongoDB replica set to provide redundancy and high availability. We need to configure the replica set

For older MongoDB versions (2.4 and bellow)

Append replSet=001-rs into mongod.conf file:

$ echo replSet=001-rs >> /etc/mongod.conf

And restart Mongo:

$ service mongod restart
$ mongo

For new MongoDB versions (2.6 and above)

Using YAML syntax add this section into mongod.conf:

replication:
      replSetName:  "001-rs"

Start the MongoDB shell and initiate the replica set:

$ mongo
> rs.initiate()

The result should look like this

{
  "info2" : "no configuration explicitly specified -- making one",
  "me" : "localhost:27017",
  "info" : "Config now saved locally.  Should come online in about a minute.",
  "ok" : 1
}

After a few seconds, you should see your prompt turn into 001-rs:PRIMARY> , this indicates the replica set is being used. Type exit to get back to your regular shell.

3. Download Rocket.Chat

Note: If running behind a reverse Nginx SSL proxy, see Section 6 first for important information on setting the ROOT_URL value below as it needs to be adjusted before deployment.

Then to deploy Rocket.Chat:

HOST=http://your_hostname.com
MONGO_URL=mongodb://localhost:27017/rocketchat
MONGO_OPLOG_URL=mongodb://localhost:27017/local
ROOT_URL=http://localhost:3000
PORT=3000

mkdir -p /var/www/
mkdir -p /var/log/rocket.chat
cd /var/www/
wget https://github.com/RocketChat/Rocket.Chat/archive/master.tar.gz
tar -xvzf master.tar.gz
mv Rocket.Chat-master rocket.chat

cd ./rocket.chat
meteor build --server "$HOST" --directory .

cd ./bundle/programs/server
npm install

cd ../..

rm -f pm2-rocket-chat.json
echo '{'                                                     > pm2-rocket-chat.json
echo '  "apps": [{'                                         >> pm2-rocket-chat.json
echo '    "name": "rocket.chat",'                           >> pm2-rocket-chat.json
echo '    "script": "/var/www/rocket.chat/bundle/main.js",' >> pm2-rocket-chat.json
echo '    "out_file": "/var/log/rocket.chat/app.log",'      >> pm2-rocket-chat.json
echo '    "error_file": "/var/log/rocket.chat/err.log",'    >> pm2-rocket-chat.json
echo "    \"port\": \"$PORT\","                             >> pm2-rocket-chat.json
echo '    "env": {'                                         >> pm2-rocket-chat.json
echo "      \"MONGO_URL\": \"$MONGO_URL\","                 >> pm2-rocket-chat.json
echo "      \"MONGO_OPLOG_URL\": \"$MONGO_OPLOG_URL\","     >> pm2-rocket-chat.json
echo "      \"ROOT_URL\": \"$ROOT_URL\","                   >> pm2-rocket-chat.json
echo "      \"PORT\": \"$PORT\""                            >> pm2-rocket-chat.json
echo '    }'                                                >> pm2-rocket-chat.json
echo '  }]'                                                 >> pm2-rocket-chat.json
echo '}'                                                    >> pm2-rocket-chat.json

pm2 start pm2-rocket-chat.json
pm2 save

4. Configure Rocket.Chat

Rocket.Chat is installed and needs to be configured. Follow these guides to properly configure everything your instance needs:

  1. Creating the First Admin
  2. Run Rocket.Chat behind a SSL Reverse Proxy
Clone this wiki locally