Set up your own Slack-like chat system on Linux

(Image credit: / Syda Productions)

Zulip is a truly next-generation chat system. It marries the asynchronous benefits of something traditional like email, with the synchronous benefits of instant messaging. 

Thanks to its unique threading model, Zulip manages to sidestep the message overload now associated with both worlds.

About this article

This article first appeared in Linux Format Magazine, Issue #270, published in December 2020.

Originally a private beta, Zulip was acquired by Dropbox in 2014 and became an open source project. Since then it’s soared in popularity and has a strong developer community. If you look at the GitHub metrics you’ll notice that a huge number of contributions come from people outside of the core team. 

Zulip’s 3.0 release back in July saw over 100 people contribute from all over the world. It also brought support for Ubuntu 20.04, so we fired up our server to see just how easy it is to install and if it could restore our faith in chat. We’re pleased to say it’s super easy and we strongly recommend adding it to your server, too.

If you were following our Smart Home Office feature back in LXF268, then we think that the combination of Nextcloud, Zulip and Jitsi Meet is a winning one. And yes, if you’re container crazy then you can run them all in Docker, too. 

screenshot of Zulip

Mailgun’s free offering enables you to send email to pre-authorised addresses, and is easy to connect with Zulip. (Image credit: Zulip)

Even if you don’t care for home working and just want to be able to host your own chat service, Zulip is the best way to do that today – we’re more than happy to put the weight of Linux Format behind Tim’s work. So read on, follow our delightfully easy six-step guide, and enjoy chat nirvana!

Introducing Zulip

Before you begin you might want to familiarise yourself with Zulip by setting up a free account on Zulip’s homepage. The free plan gives you a not-inconsiderable 10,000 message history and 5GB of storage, as well as a nice URL of the form for easy access to your organisation’s communications. 

The two key bits of terminology to grasp are streams and topics. Streams are a broader hierarchy and can be thought of as separate chatrooms. 

Different members of your team can be members of different streams, and streams can be made private so that only certain people can see them. Within a stream every message has its own topic and conversations will appear threaded thusly, rather like email subject lines.

However, unlike email subject lines you can’t be lazy and have a blank thread. This tiny bit of extra effort is what enables everything to be so nicely organised, so that you can enjoy hassle-free open source messaging whether in real time or asynchronously, perhaps catching up on messages from your colleagues in other time zones.