Production Installation

Make sure you want to install a Zulip production server. If you’d instead like to test or develop a new feature, we recommend the Zulip development server instead. If you just want to play around with Zulip and see what it looks like, you can create a test organization at https://zulipchat.com.

You’ll need an Ubuntu or Debian system that satisfies the installation requirements.

Step 1: Download the latest release

Download and unpack the latest built server tarball with the following commands:

cd $(mktemp -d)
wget https://www.zulip.org/dist/releases/zulip-server-latest.tar.gz
tar -xf zulip-server-latest.tar.gz

If you’d like to verify the download, we publish the sha256sums of our release tarballs.

Step 2: Install Zulip

Warning

You are reading a development version of the Zulip documentation. These instructions may not correspond to the latest Zulip Server release. See documentation for the latest release.

To set up Zulip with the most common configuration, you can run the installer as follows:

sudo -i  # If not already root
./zulip-server-*/scripts/setup/install --certbot \
    --email=YOUR_EMAIL --hostname=YOUR_HOSTNAME

This takes a few minutes to run, as it installs Zulip’s dependencies. For more on what the installer does, see details below.

If the script gives an error, consult Troubleshooting below.

Installer options

  • --email=you@example.com: The email address of the person or team who should get support and error emails from this Zulip server. This becomes ZULIP_ADMINISTRATOR (docs) in the Zulip settings.
  • --hostname=zulip.example.com: The user-accessible domain name for this Zulip server, i.e., what users will type in their web browser. This becomes EXTERNAL_HOST (docs) in the Zulip settings.
  • --self-signed-cert: With this option, the Zulip installer generates a self-signed SSL certificate for the server. This isn’t suitable for production use, but may be convenient for testing.
  • --certbot: With this option, the Zulip installer automatically obtains an SSL certificate for the server using Certbot. If you’d prefer to acquire an SSL certificate yourself in any other way, it’s easy to provide it to Zulip.

Step 3: Create a Zulip organization, and log in

On success, the install script prints a link. Open the link in a browser. Follow the prompts to set up your organization, and your own user account as an administrator. Then, log in!

The link is a secure one-time-use link. If you need another later, you can generate a new one by running manage.py generate_realm_creation_link on the server. See also our doc on running multiple organizations on the same server if that’s what you’re planning to do.

Step 4: Configure and use

To really see Zulip in action, you’ll need to get the people you work together with using it with you.

Learning more:

Details: What the installer does

The install script does several things:

  • Creates the zulip user, which the various Zulip servers will run as.
  • Creates /home/zulip/deployments/, which the Zulip code for this deployment (and future deployments when you upgrade) goes into. At the very end of the install process, the script moves the Zulip code tree it’s running from (which you unpacked from a tarball above) to a directory there, and makes /home/zulip/deployments/current as a symbolic link to it.
  • Installs Zulip’s various dependencies.
  • Configures the various third-party services Zulip uses, including Postgres, RabbitMQ, Memcached and Redis.
  • Initializes Zulip’s database.

If you’d like to deploy Zulip with these services on different machines, check out our deployment options documentation.

Troubleshooting

Install script. The Zulip install script is designed to be idempotent. This means that if it fails, then once you’ve corrected the cause of the failure, you can just rerun the script.

The install script automatically logs a transcript to /var/log/zulip/install.log. In case of failure, you might find the log handy for resolving the issue. Please include a copy of this log file in any bug reports.

The zulip user’s password. By default, the zulip user doesn’t have a password, and is intended to be accessed by su zulip from the root user (or via SSH keys or a password, if you want to set those up, but that’s up to you as the system administrator). Most people who are prompted for a password when running su zulip turn out to already have switched to the zulip user earlier in their session, and can just skip that step.

After the install script. If you get an error after scripts/setup/install completes, check the bottom of /var/log/zulip/errors.log for a traceback, and consult the troubleshooting section for advice on how to debug.

Community. If the tips above don’t help, please visit #production help in the Zulip development community server for realtime help or email zulip-help@googlegroups.com with the full traceback, and we’ll try to help you out! Please provide details like the full traceback from the bottom of /var/log/zulip/errors.log in your report.