Zulip, Mattermost, and Rocket.Chat

Close to the Chest

Independent Bots

Like Zulip, Mattermost supports bots for incoming or outgoing webhooks. In Mattermost, though, the bots do not run in the scope of a user account, but as independent users. Unfortunately, the incoming hooks in particular lack flexibility. The formatting of the incoming JSON array is quite rigid and only recognizes the Slack format. Zulip already supports a variety of messages with different formatting and offers the user an option to write customized bots for JSON parsing in Python.

Mattermost adds further functionality with apps that you can install from an app store or upload to its server as plugins (Figure 2). These apps provide additional chat features such as polls or improved integration with external services such as GitHub. Users can write their own plugins and integrate them into the solution.

Figure 2: Mattermost uses slash commands to launch active plugins.

Besides group chats, Mattermost comes with a playbook function, and workflows for teams can be modeled and started here. Mattermost then informs the users involved when they have tasks to complete in the scope of the playbook. Again, users of the free version only get part of the functionality. Playbook steps such as a due date in a task assignment are only available for commercial customers.

The software does not come with an integrated backup script, although the documentation describes precisely which files and directories you need to back up along with the PostgreSQL database dump. Mattermost has a slightly more modern UI and a simpler back end than Zulip, tends to rely more on apps and playbook workflow functions, is somewhat less flexible in terms of bot and webhook design, and does not give users of the free version access to the full feature set.

Rocket.Chat

The Rocket.Chat server can run as a Snap or in a containerized setup. In the lab, I used Docker on a CentOS Streams 9 system and relied on the included Docker Compose file to start the service. Rocket.Chat needs two containers: one with MongoDB for data storage and another for its own server. The server shares its web interface on HTTP port 3000, so you can set up your own SSL-terminating proxy there.

At the start of the install, the self-hosted server creates a system administrator and then prompts you to register with Rocket.Chat. Of course, this is not in your interest for a simple test installation on the local LAN or an isolated network. Unfortunately, the tool does not have a simple button if you want to skip this process or are not interested in online registration. A lengthy search in the documentation revealed a reference to a configuration option in the small print that says to add

OVERWRITE_SETTING_Show_Setup_Wizard=completed

to the Rocker.Chat.Extra.env configuration file. In this example with Docker Compose, though, you need to add the following option to the Compose file:

environment:
...
  OVERWRITE_SETTING_Show_Setup_Wizard: completed

As with other tools, Rocket.Chat can be run in your browser, on your cellphone, or as a desktop app. The web UI is very much modeled on market leader Slack (Figure 3). Rocket.Chat's main focus is on the chat functionality and integrating chat with other applications.

Figure 3: The Rocket.Chat UI is based on the Slack model.

In every second menu, the application makes users of the community edition feel that they would be far better off with a licensed version rather than the free edition. All of the advanced tools (e.g., AD/Security Assertion Markup Language (SAML)/LDAP integration, the app marketplace, device management, the dashboard) are only available to users of the commercial version.

Develop Your Own Applications

That said, users do have the option of extending their setup even without ready-made applications from the Rocket.Chat Marketplace. The manufacturer offers the Apps-Engine CLI toolkit for developing your own Rocket.Chat applications. Armed with this toolkit and TypeScript skills to match, you can write your own plugins and add them to your chat servers. Unfortunately, there is a catch: The Apps-Engine CLI cannot be installed in an environment set up with Docker Compose, which means you need a second, legacy environment on a VM for application development.

This Rocket.Chat setup on an Ubuntu 24.04 VM by the Snap package manager was a smooth experience. Strangely, Snap does not use the typical Linux server directory structure but drops the complete installation, including MongoDB, in directories somewhere under /var/snap, where it also stores the configuration files. The Snap setup also configures the MongoDB server without security measures (e.g., access passwords).

After installing Node.js and the required dependencies, the rc-apps command creates the desired development environments for Rocket.Chat extensions. You can roll out ready-to-use applications on the platform by typing

rc-apps --deploy

and then assign slash commands to match. Applications follow the usual

/myapp parameter1 parameter2 [...]

pattern for launching from within the chat. When it comes to webhook-based bot integration, Rocket.Chat is on a par with Mattermost. You have simple hooks, as well, but only a few options for customizing JSON parsing for the bot payload.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy ADMIN Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus
Subscribe to our ADMIN Newsletters
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs



Support Our Work

ADMIN content is made possible with support from readers like you. Please consider contributing when you've found an article to be beneficial.

Learn More”>
	</a>

<hr>		    
			</div>
		    		</div>

		<div class=