Jump toSuggest an edit

Deploying a Zulip server

Reviewed on 29 April 2024 • Published on 21 October 2021
  • Zulip
  • Ubuntu
  • Slack

Zulip is an open-source communications platform similar to Mattermost, Slack, or Rocket.Chat, but providing unique features by combining the immediacy of real-time chat with an email threading model.

It aims to make communications in larger groups easier by focusing on important messages and letting you ignore less important messages. The application provides apps for every major computing platform and is available as a web application or by using native clients for Desktop (Windows, macOS, and Linux) and mobile devices (Android and iOS), powered by Electron and React Native. The software is very lightweight and an Instance with 2 GB RAM and 10 GB of disk can handle a small community. For larger communities, 4 GB RAM and 50 GB of disk are recommended.

More than 90 integrations are available for Zulip, including GitHub, Jira, Zendesk, and more. Zulip’s powerful API allows you to create your own integration as well.

Before you start

To complete the actions presented below, you must have:

  • A Scaleway account logged into the console
  • Owner status or IAM permissions allowing you to perform actions in the intended Organization
  • An SSH key
  • An Instance running on Ubuntu 20.04
  • An FQDN (Fully Qualified Domain Name) pointing to your Instance’s IP address
  • Enabled the email ports

Installing Zulip

  1. Connect to your Instance using SSH:

    ssh root@<your_instance_ip>
  2. Update the apt package manager and upgrade the software already installed on the Instance to the latest version, available in Ubuntu’s repositories:

    apt update && apt upgrade -y
  3. Download and unpack the latest stable build of Zulip:

    cd $(mktemp -d)
    tar -xf zulip-server-latest.tar.gz
  4. Run the automated Zulip installer:

    ./zulip-server-*/scripts/setup/install --certbot --email=YOUR_EMAIL --hostname=YOUR_HOSTNAME

    The following flags are available when running the installer:

    • --certbot: With this option the installer will automatically a Let’s Encrypt issued TLS certificate for your domain name using the certbot tool.
    • --self-signed-cert: When setting this option, the Zulip installer generates a self-signed SSL certificate for the Instance. While this is not suitable for production use, it might be handy for some testing purposes.
    • --email=YOUR_EMAIL: The email address of the Zulip administrator. The automatic installer will automatically create a first administrator user with this email address.
    • --hostname=YOUR_HOSTNAME: A valid domain or subdomain for your Zulip server (e.g. Make sure that it points to the IP address of your Instance, as it is required for the hostname validation done by certbot.

    Depending on the performance of your Instance, the installation of the Zulip server may take some time.

    The automatic installer executes the following actions on your system:

    • It creates the zulip user, which the various Zulip servers will run as.
    • It creates the directory /home/zulip/deployments/, which will contain all the code of this and any future Zulip deployment. The latest deployment is reachable via a symbolic link at /home/zulip/deployments/current.
    • It installs Zulip’s various dependencies.
    • It configures automatically the various third-party services Zulip uses (these include Postgres, RabbitMQ, Memcached, and Redis).
    • It initializes Zulip’s database.
  5. At the end of the installation a unique link displays. Copy this link and open it in a browser to complete the setup of your Zulip instance:

    Visit the following secure single-use link to register your
    new Zulip organization:

    The link is a secure one-time-use link. If you have lost it or if you need another one later, you can generate a new one by running /home/zulip/deployments/current/ generate_realm_creation_link in the Zulip main directory.

  6. Open your web browser and point it to your Zulip activation link. Enter your email address to create a new organization. Confirm by clicking Create Organization:

  7. Complete the registration by providing your organization’s name and additional information, such as a secure password. Once completed, you see Zulip’s main screen:

Configuring outgoing emails

Your Zulip is now running, however, it cannot send any email notifications in its current state. To send emails we configure a transactional email provider using SMTP which will take care of the delivery of all notifications Zulip sends out. In this tutorial, we use the free-tier offer from SendInBlue, but you are free to use any transactional email provider. Be aware that using the SMTP credentials of an inbound email provider (like Google Mail) may flag your emails as spam and have an impact on the delivery reliability of the notifications.

  1. Open the Zulip configuration file in a text editor:
    nano /etc/zulip/
  2. Edit the SMTP settings as provided by your transactional email provider. In this example we use SendInBlue:
    • The SMTP hostname: EMAIL_HOST = ''
    • The SMTP username: EMAIL_HOST_USER = ''
    • Activate TLS for outgoing mails: EMAIL_USE_TLS = True
    • Set the SMTP port: EMAIL_PORT = 587

Save the file by pressing CTRL+O and leave nano by pressing CTRL+X. 3. Open Zulip’s secrets file /etc/zulip/zulip-secrets.conf in a text editor like nano and add the email password at the end of the file, as shown in the following example:

email_password = s7b_rSpa-gesY&#C

Save the file and exit the text editor. 4. Test if everything works by running the following command (replace your@email.address with your valid email address):

su zulip -c '/home/zulip/deployments/current/ send_test_email your@email.address'

Zulip sends two emails. One from your recipient’s email address and one using a secret token for bouncing mails. A message like the following displays once the emails are sent:

If you run into any trouble, read:
The most common error is not setting `ADD_TOKENS_TO_NOREPLY_ADDRESS=False` when
using an email provider that doesn't support that feature.
Sending 2 test emails from:
* your@email.address
Successfully sent 2 emails to your@email.address!

You can also verify if the emails have been sent and delivered to the recipient from your SendInBlue dashboard:

Configuring Zulip

Your Zulip instance is now ready for basic use. However, there are many additional features you can configure for your organization. To do so, click the menu button and then on Manage Organization:

Zulip provides features such as user groups (e.g. highlight all team members of the marketing team by using their @marketing group), allows you to manage your organization security settings, add custom emojis, manage your users, and a lot more.


Zulip provides a self-hosted and open-source alternative to commercial solutions like Slack. You have set up your instance with the Zulip application, configured a transactional email provider to send outgoing emails, and you can now invite your friends and colleagues to your new communications platform. For more information about Zulip, refer to the official documentation.

Docs APIScaleway consoleDedibox consoleScaleway LearningScaleway.comPricingBlogCarreer
© 2023-2024 – Scaleway