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.

--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.

On success, the install script prints a link. If you’re restoring a
backup or importing your data from HipChat,
Slack, or another Zulip server, you should stop here
and return to the import instructions.

Otherwise, 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.pygenerate_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.

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.

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 suzulip 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 suzulip 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.