Please note: This post is more of a “draft” that may not be on my level of post quality.
Zulip is a powerful open source group chat able to handle multi channel communications. It runs on python.
An Ubuntu Server with at least
2GB of RAM (
2GB RAM is currently the recommended amount for a small site).
My example server for this tutorial has the following address:
Preparing your server for Zulip
The current Zulip installation deployment uses one full server! The deployment doesn’t care about other services on the server.
Make sure your server is at the latest version before continuing with the To update all packages on Ubuntu run:
Confirm with (depending on the system locale) with
Step 1 - Downloading Zulip
Please login as root user. On most Ubuntu systems, you would use
to switch to the root user.
Next up we make sure that we are in the root user’s home directory
pwd prints the current working directoy.
For the latest Zulip version the download and extraction commands are:
rm -rf /root/zulip && mkdir /root/zulip
tar -xf zulip-server-latest.tar.gz --directory=/root/zulip --strip-components=1
You need to have
wgetinstalled on the server. On most servers these tools are already installed.
Now that we have Zulip downloaded, we can continue to the next step.
Step 2 - Install Zulip
With the following command, we start the Zulip installation.
!! WARNING !! This will install Zulip to your server and if other applications are also running on this server it can completely mess them up, as mentioned earlier!
The command may take some to complete. The command installs Zulip’s dependencies and Zulip itself on the server.
Step 3 - Checking the Zulip installation
Navigate to the bottom of the file and check that it reports the success of the installation. The command for opening the installation log file in a “paginator” is:
Step 4 - Configuring the Zulip instance
For Zulip to function you need to set some mandatory settings.
Zulip’s config file is located at
The following list contains the mandatory settings.
EXTERNAL_HOSTshould be your external address.
ZULIP_ADMINISTRATORthe email of the administrator that will be also shown as the contact email address.
EMAIL_*the email server settings, please look at the comments in the file for more information about the variables.
DEFAULT_FROM_EMAILthe default sender email address used for the outgoing email traffic.
NOREPLY_EMAIL_ADDRESSthe address for noreply in the outgoing email traffic.
ALLOWED_HOSTSthe fully qualified DNS name of the server you installed Zulip on or just set it to
The config file contains a comment above all the variables. Go ahead and configure the mandatory values to your needs.
Step 5 - Preparing the Zulip instance for usage
Now that you have Zulip configured, we can now initialize the database.
su zulip -c /home/zulip/deployments/current/scripts/setup/initialize-database
After the database initialization has successfully completed, we should now you should verify that your Zulip email settings are correct:
./manage.py send_test_email YOUR_EMAIL_ADDRESS
Replace the placeholders with your own values.
The command above will send a test email to the specified email address, please make sure the email successfully arrives. If it’s not in the inbox make sure to also check your SPAM folder.
We need a Zulip organistation for your users.
For that we need to switch to the
zulip user, switch into the current Zulip installation and create a link for realm generation with the command:
Go to the link the last command outputs and you will be prompted with a form for an account and realm creation. A realm is like an organization.
Step 6 - Using your Zulip instance
Now just navigate to your Zulip instance and if you need to login go ahead.
You now have a working Zulip instance!
If you want to read more about configuration and the integration possibilities you can go to the official documentation of Zulip. See Zulip Official Documentation.
Tips and Tricks
Use the below command to restart your Zulip instance, after making changes to the config:
su zulip -c /home/zulip/deployments/current/scripts/restart-server
A good guide for troubleshooting can be found on the official documentation of Zulip here.