In this tutorial, we will show you how to install Rocket.Chat on Ubuntu 16.04 LTS. For those of you who didn’t know, Rocket.Chat is one of the most popular open-source chat software. A fantastic alternate to both Slack and compensated live chat software. It’s free, is unlimited and it’s a bunch of cool features like Video chat, Screen sharing, Mobile apps, and more.
This article assumes you have at least basic knowledge of Linux, know how to use the shell, and most importantly, you host your site on your own VPS. The installation is quite simple and assumes you are running in the root account, if not you may need to add ‘sudo
‘ to the commands to get root privileges. I will show you through the step-by-step installation of Rocket.Chat on an Ubuntu 16.04 Xenial Xerus server.
Prerequisites
- A server running one of the following operating systems: Ubuntu 16.04 (Xenial Xerus).
- It’s recommended that you use a fresh OS install to prevent any potential issues.
- SSH access to the server (or just open Terminal if you’re on a desktop).
- A
non-root sudo user
or access to theroot user
. We recommend acting as anon-root sudo user
, however, as you can harm your system if you’re not careful when acting as the root.
Install Rocket.Chat on Ubuntu 16.04 LTS
Step 1. First, make sure that all your system packages are up-to-date by running the following apt-get commands in the terminal.
sudo apt-get update sudo apt-get upgrade
Step 2. Installing MongoDB.
Rocket.Chat requires MongoDB for the installation. In this step, we will install MongoDB from the MongoDB repository:
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
Then add the MongoDB repository with the command below:
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
Update the repository and install MongoDB with the apt command:
apt-get update apt-get install mongodb-org
Open MongoDB and set it to run automatically at boot time:
systemctl enable mongod systemctl start mongod
Step 3. Configure a MongoDB ReplicaSet.
This is an optional step, but those who want performance improvements should follow it. Rocket.Chat Server uses a MongoDB replica set:
nano /etc/mongod.conf
There, add this section:
replication: replSetName: "001-rs"
Save, exit, and restart MongoDB:
systemctl restart mongod
Next, run its shell and initiate the replica set:
# mongo > rs.initiate()
After you run rs.initiate()
, you should get the following results:
{ "info2" : "no configuration specified. Using a default configuration for the set", "me" : "idroot.us:27017", "ok" : 1 }
If the value of “ok” is not 1, then something’s wrong. Please go back and follow the steps exactly as shown in this tutorial.
Step 4. Installing Node.js and npm.
Node.js and npm are required by Rocket.Chat and are both available on Ubuntu repositories:
apt-get install nodejs npm
First, install the ‘n’ package globally on the whole system:
npm install -g n
The messaging system requires Node.js 4.5+, so ensure that you choose 4.5:
n 4.5
Check if you have the right node.js version:
node --version
Step 5. Installing Rocket.Chat.
First, download the latest version of Rocket.Chat:
cd /var/www curl -L https://rocket.chat/releases/latest/download -o rocket.chat.tgz
And extract it:
tar xzf rocket.chat.tgz
Rename the extracted folder:
mv bundle Rocket.Chat
Run the following commands to add some environment variables:
cd Rocket.Chat/programs/server npm install cd ../.. export ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000/ export MONGO_URL=mongodb://localhost:27017/rocketchat export PORT=3000 node main.js
Step 6. Install LEMP (Linux, Nginx, MariaDB, and PHP) server.
A Ubuntu 16.04 LEMP server is required. If you do not have LAMP installed, you can follow our guide here.
Create a new SSL directory, in which certificates will be stored:
mkdir -p /etc/nginx/ssl/
In this directory, generate a new SSL certificate file:
cd /etc/nginx/ssl openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/rocketchat.crt -keyout /etc/nginx/ssl/rocketchat.key chmod 400 rocketchat.key
Next, create a Virtual Host configuration:
nano /etc/nginx/sites-available/rocketchat
There, paste the following configuration:
# Upstreams upstream backend { server 127.0.0.1:3000; } # Redirect Options server { listen 80; server_name chat.mydomain.com; # enforce https return 301 https://$server_name$request_uri; } # HTTPS Server server { listen 443; server_name chat.mydomain.com; error_log /var/log/nginx/rocketchat.access.log; ssl on; ssl_certificate /etc/nginx/ssl/rocketchat.crt; ssl_certificate_key /etc/nginx/ssl/rocketchat.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # dont use SSLv3 ref: POODLE location / { proxy_pass http://192.168.1.110:3000/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header X-Forward-Proto http; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; } }
Save, exit, and activate this configuration:
ln -s /etc/nginx/sites-available/rocketchat /etc/nginx/sites-enabled/rocketchat
Run:
nginx -t
And make sure there are no errors. If everything’s ok, restart Nginx:
systemctl restart nginx
Update the environment variables and run Rocket.Chat:
cd /var/www/Rocket.Chat/ export ROOT_URL=https://chat.mydomain.com export MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=001-rs export PORT=3000 node main.js
Step 7. Accessing Rocket.Chat.
Rocket.Chat will be available on HTTP port 80 by default. Open your favorite browser and navigate to http://chat.mydomain.com and complete the required steps to finish the installation. If you are using a firewall, please open port 80 to enable access to the control panel.
Congratulations! You have successfully installed Rocket.Chat with Docker. Thanks for using this tutorial for installing Rocket.Chat open source chat software on your Ubuntu 16.04. For additional help or useful information, we recommend you to check the official Rocket.Chat website.