Requirements and scalability

To run a Zulip server, you will need: * A dedicated machine or VM * A supported OS: * Ubuntu 20.04 Focal * Ubuntu 18.04 Bionic * Debian 10 Buster * At least 2GB RAM, and 10GB disk space * If you expect 100+ users: 4GB RAM, and 2 CPUs * A hostname in DNS * Credentials for sending email

For details on each of these requirements, see below.

Server

General

The installer expects Zulip to be the only thing running on the system; it will install system packages with apt (like Nginx, PostgreSQL, and Redis) and configure them for its own use. We strongly recommend using either a fresh machine instance in a cloud provider, a fresh VM, or a dedicated machine. If you decide to disregard our advice and use a server that hosts other services, we can't support you, but we do have some notes on issues you'll encounter.

Operating system

Ubuntu 20.04 Focal, 18.04 Bionic, and Debian 10 Buster are supported for running Zulip in production. 64-bit is recommended. We recommend installing on the newest supported OS release you're comfortable with, to save a bit of future work upgrading the operating system.

If you're using Ubuntu, the Ubuntu universe repository must be enabled, which is usually just:

sudo add-apt-repository universe
sudo apt update

https://help.ubuntu.com/community/Repositories/Ubuntu

Hardware specifications

See our documentation on scalability below for advice on hardware requirements for larger organizations.

Network and security specifications

Credentials needed

SSL certificate

Your Zulip server will need an SSL certificate for the domain name it uses. For most Zulip servers, the recommended (and simplest) way to get this is to just use the --certbot option in the Zulip installer, which will automatically get a certificate for you and keep it renewed.

For test installations, an even simpler alternative is always available: the --self-signed-cert option in the installer.

If you'd rather acquire an SSL certificate another way, see our SSL certificate documentation.

Outgoing email

Once you have met these requirements, see full instructions for installing Zulip in production.

Scalability

This section details some basic guidelines for running a Zulip server for larger organizations (especially >1000 users or 500+ daily active users). Zulip's resource needs depend mainly on 3 parameters: * daily active users (e.g. number of employees if everyone's an employee) * total user accounts (can be much larger) * message volume.

In the following, we discuss a configuration with at most two types of servers: application servers (running Django, Tornado, RabbitMQ, Redis, Memcached, etc.) and database servers. Of the application server services, Django dominates the resource requirements. One can run every service on its own system (as docker-zulip does) but for most use cases, there's little scalability benefit to doing so. See deployment options for details on installing Zulip with a dedicated database server.

Scalability is an area of active development, so if you're unsure whether Zulip is a fit for your organization or need further advice contact Zulip support.

For readers interested in technical details around what features impact Zulip's scalability, this performance and scalability design document may also be of interest.