Roll your own Slack alternative

An image of a man in a suit selecting one of four communications icons.
(Image credit: Image Credit: Pixabay)

Having an effective communication strategy is vital for every business, especially in the post-pandemic hybrid work environment.

As IT teams scurried to draw up a list of collaboration tools to mobilize the remote workforce, Slack emerged as the favorite medium for communication due to its ease of use and cross-platform availability.

But Slack isn’t the only game in town. Rocket.Chat is a viable alternative that is chock full of features. While Slack is a Software-as-a-Service (SaaS) app, you can host Rocket.Chat on your own IT infrastructure, without much effort. 

(Image credit: Rocket.Chat)

With Rocket.Chat you get virtually all the useful features of its peers including threaded conversations, the ability to edit and delete messages, exchange direct messages, create discussion groups, and more. Best of all, you can also use the open source communications tool to easily host video conferences as well.

Installation

Rocket.Chat offers multiple avenues for installation. You can host it on Platform-as-a-Service (PaaS) platforms like AWS, Google Computer Engine, Digital Ocean, and others. You can install it inside a Docker container, or on a bare-metal server.

However, before you deploy Rocket.Chat, you’ll need to work out the hardware requirements of the server that’s going to host it. The hardware requirements depend on several factors such as the total number of users, and the number of concurrently active users. 

According to the official estimates, a fairly average multi-core 1.7Ghz processor with 4GB of RAM should work well to host up to a thousand users of which up to 300 are currently active at any given time.

(Image credit: Rocket.Chat)

Another consideration is disk space. Exchanging text messages doesn’t take much space. But if you want to use services such as file sharing, you’ll have to make sure the server is equipped with storage that’s large enough to accommodate the shared files.

Interestingly, small businesses with around fifty users in all of which no more than 25 are active at any moment, can even be serviced by a Raspberry Pi 4.

When it comes to the actual installation, while you can manually install each and every component, it’s a lot more convenient to deploy Rocket.Chat using a snap package. 

Snap is a universal packaging format that works across Ubuntu, Debian, Fedora, openSUSE, and other Linux distros and enables the installation of the Rocket.Chat server in a single command:

$ sudo snap install rocketchat-server

That’s all there’s to it. The command will fetch, install, and activate the Rocket.Chat server.

(Image credit: Rocket.Chat)

Configure the server

Then browse to http://localhost:3000 to continue setting up Rocket.Chat. Substitute localhost with the IP address of the Rocket.Chat server, if you are accessing it from another computer on the network.

First, you’ll have to create an account for the administrator. This is fairly straightforward and installs specifying user details about the administrator. You’ll also have to specify whether this instance of Rocket.Chat is a private or a public one. 

Also, by default, the server’s policy is to secure users accounts by automatically enabling two-factor authentication for new users, but you get the option of disabling this feature during the initial setup process.

Finally, you’re asked to select one of the two available options for sending push notifications to Rocket.Chat’s mobile apps. You can either use a pre-configured gateway provided by the developers of Rocket.Chat, or use a self-configured one.  

(Image credit: Rocket.Chat)

Using the pre-configured gateway is fairly simple, while using the self-configured option is a fairly involved process

After registering, you will be logged in to your new communications server automatically. By default there will be one channel (#general).

Before you can use the service though, you’ll have to connect your Rocket.Chat server with the server’s cloud infrastructure. This basically involves creating a free account on cloud.rocket.chat and connecting it to your local instance by copy-pasting a unique token key.

In addition to local authentication Rocket.Chat supports several different ways to authenticate. It can hook into a LDAP server or use credentials via supported OAuth services like GitHub, LinkedIn, Meteor, Facebook, Twitter and more. Most authentication providers require a clientID and a secret.

To help you get started, Rocket.Chat helps import your data from another service like Slack and Hipchat

Rocket.Chat also includes a functionality known as SlackBridge that can automatically display messages received in a Slack channel or private group into Rocket.Chat, in real-time. 

Setting up SlackBridge is a two-pronged process that first requires setting up a custom bot in Slack, before enabling and integrating it into your Rocket.Chat server.

(Image credit: Rocket.Chat)

Usage and administration

In the left sidebar, there is a list of channels. You can switch to a channel by clicking on it. A channel is essentially a separate chat room made for a specific topic with different sets of people.

To create a new channel, click on the Create new icon at the top of the side bar adjacent to your username. This unrolls a drop-down menu, which lists options to create a new channel, team, and more. Channels may be private and require an invite, or public for anyone in the organization to join. 

You can exchange messages by typing them in the chat bar at the bottom. Along with the text, Rocket.Chat enables you to add various types of attachments including files, video and audio, and emojis.

All messages have a menu that can be accessed by hovering over them and clicking on the three-dots menu that appears over it. If you sent the message, or have admin privileges, you can edit and delete sent messages. You can also star a message to save it for later, or, with the proper permissions, pin it to the channel to save it for everyone. 

(Image credit: Rocket.Chat)

You can also reply to a message in the group chat, use it to start a new discussion with multiple users, or reply to it in a direct message.  Direct messages will appear on the left sidebar, under the list of channels.

On the top of every channel you get controls to search messages, send files in the channel, and more. The three-dots menu will list various options pertaining to a particular channel. Use it to alter the default notification preferences for a channel, view all @ mentions, export messages from the channel, and more.

If you click on your name at the top-left, you’ll get options to change your availability status, as well as your account settings. If you have admin rights, you’ll also see the option to  change server administration settings.

(Image credit: Rocket.Chat)

Conclusion

Rocket.Chat has desktop apps for Windows, macOS and Linux, as well as mobile apps for iOS and Android

Rocket.Chat is fairly intuitive to deploy, configure, and use. The server is also well documented and we encourage you to explore its administration settings to mold the server as per your needs and requirements. 

Rocket.Chat can also hook into video conferencing solutions such as Jitsi Meet and BigBlueButton. The feature is currently in beta, and might not work for all users on all platforms, across all devices.

In addition to its stock features, Rocket.Chat has a marketplace, which lists both free and paid add-ons that can further extend the functionality of your communications server.

Considering its low footprint and ease of setup, we’d encourage everyone to deploy Rocket.Chat inside the safe confines of a virtual machine and explore its advantages firsthand, before rolling it out as your business’ primary means of communication.

Mayank Sharma

With almost two decades of writing and reporting on Linux, Mayank Sharma would like everyone to think he’s TechRadar Pro’s expert on the topic. Of course, he’s just as interested in other computing topics, particularly cybersecurity, cloud, containers, and coding.