How to Install Rocket.Chat on Ubuntu 18.04
Rocket.Chat is an open-source web chat server, which is an excellent self-hosted alternative to Slack. It offers many functionalities such as chat, video and voice conferencing, file sharing, and a help-desk system.
Rocket.Chat has many handy features. Some of them are listed below:
- Real-time translation
- Incoming and outgoing WebHook integrations to Rocket.Chat
- Live chat / Messaging call center / Audio Calls
- Powerful APIs
- File Upload and sharing
- Web, Desktop and Mobile applications for Linux, Android, iOS, Windows and Mac
- Remote Video Monitoring
- Custom themes, emojis, sounds, and company assets
- and many more…
Let’s begin with the installation.
- An Ubuntu 18.04 VPS.
- A system user with root privileges, or access to the root user itself.
Step 1: Log in and Update the System’s Software Packages
Login to your Ubuntu 18.04 VPS via SSH as the root user (or as the user with root privileges):
ssh root@IP_Address -p Port_number
Where ‘IP_Address‘ and ‘Port_number‘ are the actual IP address and SSH port number of your server.
Once you are logged in, run the following commands to make sure that all installed packages on your server are updated to their latest available versions:
apt update && apt upgrade
Once this is done, we can start with the actual software installation.
Step 2: Install MongoDB
Rocket.Chat requires a MongoDB database server, version 3.2 or higher. At the moment of writing this article, the latest MongoDB version available in the official Ubuntu 18.04 repository is 3.6.3. While this server version will work fine, it’s always ideal to use the latest version possible. In order to install a more recent version of MongoDB, we will install the database server from the MongoDB repositories. These repositories can be easily added by importing the MongoDB public key with the following command:
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
Executing: /tmp/apt-key-gpghome.LTAnWbMyRv/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 gpg: key 68818C72E52529D4: public key "MongoDB 4.0 Release Signing Key <email@example.com>" imported gpg: Total number processed: 1 gpg: imported: 1
Then add the repository and install the MongoDB database server along with a few of its dependencies:
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list apt update && apt install -y mongodb-org curl graphicsmagick
With this step, MongoDB is now installed and ready to use. We can check the version using the following command:
mongod -version version v4.0.6
But in order to start it as a service, a systemd unit file is required. Create a file in /etc/systemd/system/ using your preferred text editor – we’ll be using ‘nano’. We can create it with the following command:
Now add these contents to the file:
[Unit] Description=High-performance, schema-free document-oriented database server After=network.target [Service] User=mongodb ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf [Install] WantedBy=multi-user.target
When finished, save and exit the file. Then reload the units using systemctl:
Now we can check if MongoDB is up and running. That can be done using this command:
systemctl status mongodb
The output should look like this:
mongodb.service - High-performance, schema-free document-oriented database Loaded: loaded (/etc/systemd/system/mongodb.service; disabled; vendor preset: enabled) Active: active (running) since Fri 2019-03-15 03:42:11 CDT; 59min ago Main PID: 30802 (mongod) Tasks: 27 (limit: 2320) CGroup: /system.slice/mongodb.service 30802 /usr/bin/mongod --quiet --config /etc/mongod.conf
Next, start the MongoDB server and enable it to automatically start after a reboot.
systemctl start mongodb systemctl enable mongodb
Step 3: Install Node.js
Rocket.Chat requires Node.js. It can be easily installed from the official Ubuntu repositories:
apt -y install node.js
Once installed, check the installed version:
node --version v8.10.0
Next, install the ‘npm’ package manager (along with some other dependencies required for building npm packages from source):
apt install npm build-essential
According to Rocket.Chat’s official documentation it is recommended to have version 8.11.3 of Node.js. The version can be easily changed using a tool named ‘n’:
npm install -g inherits n && n 8.11.3
install : node-v8.11.3 mkdir : /usr/local/n/versions/node/8.11.3 fetch : https://nodejs.org/dist/v8.11.3/node-v8.11.3-linux-x64.tar.gz installed : v8.11.3
You can verify that the desired version of Node.js is installed:
node --version v8.11.3
Step 4: Install Rocket.Chat
It is not recommended to run Rocket.Chat as user root, so the next step will be to create a new system user.
useradd -m -U -r -d /opt/rocketchat rocketchat
Switch the user to the newly created one:
su - rocketchat
Then download the latest stable release of Rocket.Chat in a directory on your server. Make sure to change to that directory first. Here’s the command for downloading the latest version of Rocket.Chat:
curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz
Once it is downloaded, unpack the Rocket.Chat archive:
tar zxvf rocket.chat.tgz
The contents of the application will be stored in a new directory named ‘bundle’. We will rename the directory to ‘rocketchat’:
mv bundle rocketchat
Change the current working directory and use the npm package manager to install all dependencies listed in the packages.json file provided by the application:
cd rocketchat/programs/server npm install
In order to start Rocket.Chat, we have to set the environment variables (as shown below):
cd /opt/rocketchat/rocketchat export ROOT_URL=http://yourdomain.com:3000/ export MONGO_URL=mongodb://localhost:27017/rocketchat export PORT=3000
Don’t forget to replace ‘yourdomain.com‘ with your actual domain name.
And finally, start Rocket.Chat using the following command:
Once Rocket.Chat is successfully started, you will get text output that looks similar to the following:
+-----------------------------------------------------------------------+ | SERVER RUNNING | +-----------------------------------------------------------------------+ | | | Rocket.Chat Version: 0.74.3 | | NodeJS Version: 8.11.3 - x64 | | Platform: linux | | Process Port: 3000 | | Site URL: http://yourdomain.com:3000/ | | ReplicaSet OpLog: Disabled | | Commit Hash: 202a465f1c | | Commit Branch: HEAD | | | +-----------------------------------------------------------------------+
You can also configure Rocket.Chat to run as a service. Create a unit file like in Step 2 using your preferred text editor.
Then add the following contents to the file:
Description=RocketChat Server After=network.target remote-fs.target nss-lookup.target mongod.target [Service] ExecStart=/usr/local/bin/node /opt/rocketchat/rocketchat/main.js Restart=always RestartSec=10 StandardOutput=syslog StandardError=syslog SyslogIdentifier=nodejs-example #User= #Group= Environment=NODE_ENV=production PORT=3000 ROOT_URL=http://yourdomain.com MONGO_URL=mongodb://localhost:27017/rocketchat [Install] WantedBy=multi-user.target
Save and exit the file, then reload the units:
Once this is done, you can start the Rocket.Chat service and enable it to start upon a reboot:
systemctl enable rocketchat systemctl start rocketchat
Now you will be able to access Rocket.Chat and complete the installation at http://yourdomain.com:3000 . The installation wizard will guide you through setting up your first administrative user, configuring your organization, registering your server to receive free push notifications, and more.
Fore more information on how to use and configure Rocket.Chat. Please check their official documentation.