How to install the Zulip chat server on Ubuntu 18.04

If your business needs an in-house chat server, Zulip might be what you’re looking for. Jack Wallen shows you how to install this open source collaboration platform.

Two Professional IT Programers Discussing Blockchain Data Network Architecture Design and Development Shown on Desktop Computer Display. Working Data Center Technical Department with Server Racks

Getty Images/iStockphoto

Your business needs to empower it’s staff for easy communication. You could opt for the likes of Slack or Microsoft Teams, both of which are powerful and wide-spread solutions. But what if you’d prefer to keep your communication/collaboration services in-house? You certainly can’t use the de facto standards without connecting to a third party.

When you require a certain level of privacy and control over your business communications, you might consider deploying an in-house chat server. One such solution for that is the open source, cross-platform chat and collaborative platform, Zulip. Zulip features threaded conversations, can serve up thousands of concurrent chat sessions, offers plenty of third-party plugins (including Travis CI, Github, Heroku, Zendesk, JIRA, Sentry, and much more), and is a chat server that’s on the rise.

I’m going to walk you through the process of installing Zulip on Ubuntu Server 18.04. I’ll be demonstrating with a LAN IP address, but you can use this tool with a domain name for external communication as well. I will also be installing Zulip with SSL support, but using a self-signed certificate, since this is for testing purposes.

SEE: Hiring kit: Network administrator (TechRepublic Premium)

What you’ll need

How to configure the hosts file

The first thing you’ll want to take care of is configuring your hosts file. You must map the IP address of your hosting server to a domain name. For my testing instance, I’ll be mapping IP address to zulip.lan. You’ll want to make sure to use your hosting server IP address as well as your domain. 

To take care of this configuration, open a terminal window on your server and  issue the command:

sudo nano /etc/hosts

In that file, add the following at the bottom: zulip.lan

Remember to use the details for your setup, not mine.

Save and close the file.

How to download and unpack the installer

Next we need to download and unpack the Zulip installer file. Go back to the terminal window and change into the /tmp directory with the command:

cd /tmp

Now you can download the installer file with the command:


Once the file has downloaded, unpack it with the command:

tar -xvf zulip-server-latest.tar.gz

How to install OpenSSL

Before you run the installer command, you’ll need to install OpenSSL on your server. For that, issue the command:

sudo apt-get install openssl -y

Once the OpenSSL installation completes, you’re ready to run the Zulip installer.

How to install Zulip

There are two ways to install Zulip:

  1. With a self-signed certificate

  2. With a Let’s Encrypt certificate

If you’re using an FQDN for your Zulip server, you’ll definitely want to install with a Let’s Encrypt certificate. I’ll be demonstrating the installation with a self-signed certificate–because I’ll be using Zulip for LAN-only testing. I’ll show you the commands for both options.

For installing Zulip with a self-signed certificate, issue the command:

sudo -s ./zulip-server-*/scripts/setup/install --self-signed-cert --email=EMAILADDRESS --hostname=zulip.lan

Where EMAILADDRESS if you admin email address. Make sure to change the hostname to match what you’ve mapped in /etc/hosts.

To install with a Let’s Encrypt certificate, you’ll issue the command:

sudo -s ./zulip-server-*/scripts/setup/install --certbot --email=EMAILADDRESS --hostname=FQDN

Where EMAILADDRESS is your admin email address and FQDN is your fully qualified domain name.

The installation will take some time to complete–between 5-15 minutes, depending on horsepower of your server and speed of your internet connection. When the installation completes, you’ll be presented with a link to follow, which will take you to your Zulip installation. In the resulting browser window, type an email address and click Create Organization (Figure A).

Figure A

The first step in finalizing the Zulip chat server installation.

” data-credit rel=”noopener noreferrer nofollow”>zulipb.jpgzulipb.jpg

The first step in finalizing the Zulip chat server installation.

In the next window, you’ll be asked to create an admin account which will be used to manage Zulip (Figure B).

Figure B

Creating an admin account for Zulip.

” data-credit rel=”noopener noreferrer nofollow”>zulipc.jpgzulipc.jpg

Creating an admin account for Zulip.

Once you’ve created the admin account, you’ll then be prompted to log in to Zulip, where you can begin tweaking the platform to perfectly fit your company needs.

How to configure email for Zulip

You’ll need to also configure an SMTP server, so Zulip can send out notifications. To do this, go back to the terminal window and issue the command:

sudo nano /etc/zulip/

In that file look for the following lines:


Uncomment out those lines by removing the # character and then fill them out as needed for your SMTP server. For instance, if you’re using the Google SMTP servers, those lines would look like:


Where GMAILADDRESS is the address you use to log into your Gmail account.

Save and close that file.

Next, you need to configure the password for your SMTP server. To set this, open the necessary file for editing with the command:

sudo nano /etc/zulip/zulip-secrets.conf

In that file, add the following line at the bottom:

email_password = PASSWORD

Where PASSWORD is the password for your SMTP server. If you’re using the Gmail SMTP passwords, you will have to create an app password for this as you cannot use your Gmail account password.

Save and close the file.

Finally, restart the Zulip services with the command:

su zulip -c '/home/zulip/deployments/current/scripts/restart-server'

And that’s all there is to installing the Zulip chat server/collaboration platform. If you’re looking for a reliable, cost-effective replacement for Slack or Microsoft Teams, this might well be your best in-house option.

Also see