Welcome to the Meetrix Zulip developer guide for Google Cloud Platform! Zulip is an open-source team chat where every message belongs to a channel and a topic, so conversations stay threaded and easy to catch up on. With the Meetrix pre-configured GCP image, you can run it inside your own GCP project in minutes, without per-seat SaaS pricing.

This guide walks you through finding the product on GCP Marketplace, configuring the deployment, pointing DNS, creating your first organization, and managing the server. If you are still weighing your options, our Rocket.Chat vs Mattermost comparison and Mattermost vs Slack breakdown cover the other popular self-hosted choices. For pricing, features, and the AWS option side by side, see the Zulip store page.

Prerequisites

Before you begin, make sure you have the following:

  • Basic Google Cloud Platform knowledge.
  • An active Google account with a GCP project and billing enabled.
  • A domain name you can manage DNS records for.
  • SMTP credentials (host, port, username and password) so Zulip can send sign-up and invitation emails.

Launch Zulip from GCP Marketplace

Step 1: Find the Product

  1. Log in to your Google account.
  2. Go directly to the product page: Zulip Team Chat on GCP Marketplace
  3. You can also browse all Meetrix products at the Meetrix Solutions Page.
  4. You will see the following product listing page. Click Launch.
Zulip Team Chat product listing on GCP Marketplace by Meetrix Pte Ltd, showing the 5-day trial badge and the Launch button

Step 2: Accept the Agreement

  1. Select your GCP project from the project selector at the top.
  2. Tick the terms and agreements checkbox.
  3. Click AGREE.
GCP Marketplace agreements screen with the project selector, the terms checkbox ticked, and the AGREE button

Free Trial

This product includes a 5-day free trial with up to USD 50.00 in licence fee credits. To activate it, tick I accept the solution trial Terms and Conditions at the bottom of the deployment form before you click Deploy.

Checkbox to accept the Zulip solution trial Terms and Conditions on GCP

Trial note

Infrastructure charges (VM, disk) still apply during the trial. Only the Meetrix licence fee is credited. You can cancel the trial at any time by deleting the deployment.

Configure Your Zulip Deployment on GCP

You will see the deployment configuration form. Fill in the fields across the following sections:

New Zulip Team Chat deployment form on GCP showing the deployment name zulip-1, an existing deployment service account, the zone us-central1-a, and the product trial terms

General

  • Deployment name: A unique name for this deployment.
  • Deployment Service Account: Use an existing account with the required roles, or create a new one.
  • Zone: Select the GCP zone closest to your users.
  • Machine type: Zulip needs at least 2 GB of memory (see the Zulip server requirements). e2-medium (2 shared vCPU, 4 GB memory) is a good baseline for a small team. Go larger as your user count and message history grow.

Networking

  • Network / Subnetwork: Leave as default unless you have a custom VPC.
  • External IP: Leave as Ephemeral so the chat server is reachable from the internet.
  • Allow SSH (TCP port 22): Enabled by default. Restrict the source IP range if you want to limit SSH access to specific IPs.
Zulip GCP networking settings with the default network and subnetwork, an Ephemeral external IP, and SSH allowed from 0.0.0.0/0

Application Settings

  • Domain name: The domain for your chat server (e.g. zulip.yourdomain.com). Point your DNS A record to the instance IP before or shortly after deploying.
  • Admin email: Used for SSL certificate registration via Let's Encrypt.

Outgoing Email (SMTP)

  • SMTP host: Your SMTP server (for example, smtp.gmail.com).
  • SMTP port: Leave as 587 for STARTTLS unless your provider says otherwise.
  • SMTP username: Usually the full sending email address.
  • SMTP password: For Gmail, use an app password rather than your account password.

The SMTP host is marked optional, but Zulip emails a confirmation link before anyone can finish creating an account, including the first administrator. Without working SMTP, nobody can sign up. If you would rather send mail through a server you also control, our Mailcow on GCP developer guide sets one up in the same project.

Zulip GCP Application Settings with the domain name and admin email fields, the Outgoing Email SMTP host, port 587, username and password fields, the trial terms checkbox, and the Deploy button

Click Deploy and wait a few minutes for the deployment to complete.

Point DNS to Your Zulip Server

Step 1: Get the External IP

  1. Once deployment is complete, click the VM instance resource name in the deployment details.
  2. Copy the External IP from the Network interfaces section.
Network interfaces section of the GCP VM instance showing the ephemeral external IP address

Step 2: Create a DNS A Record

  1. Go to your DNS provider.
  2. Add an A record pointing your Zulip domain (e.g. zulip.yourdomain.com) to the copied external IP.
  3. Wait for DNS propagation before proceeding (typically a few minutes to 1 hour).

DNS must propagate first

The image issues SSL via Let's Encrypt, which verifies domain ownership over HTTP. Make sure your DNS A record points to the server IP and has propagated before the certificate request runs.

Access Zulip

Once DNS has propagated, visit your domain. A fresh Zulip server has no organization yet, so the first page you see is "No organization found". This is expected.

Zulip No organization found page on a freshly deployed server

Clicking "New organization" will not help yet either. Zulip requires a secure, single-use link before anyone can create an organization on the server.

Zulip Organization creation link required page at the /new/ URL

502 Bad Gateway Error?

If you see a "502 Bad Gateway" error, Zulip is still starting up. Wait about 5 minutes and refresh the page.

Step 1: SSH into the Server

  1. Go to the VM instance page in the GCP console.
  2. Click SSH to open a browser-based terminal and authorize access.
GCP VM instance details page with the SSH button at the top

Step 2: Generate an Organization Creation Link

Run Zulip's management command to generate the link:

sudo -u zulip /home/zulip/deployments/current/manage.py generate_realm_creation_link
GCP SSH-in-browser terminal showing generate_realm_creation_link output with a secure single-use link to register a new Zulip organization

Step 3: Create Your Organization

Open the link in your browser. Enter the Organization name, choose the Organization type and language, enter your email, and click "Create organization". Zulip sends a confirmation email to finish creating your admin account, which is why the SMTP settings need to be correct.

Create a new Zulip organization form with organization name, type, language, URL and email fields

The link works once. If you need another organization or the link expires, run the command again. If your team already uses a central identity provider, Zulip also supports SAML and OpenID Connect login, so you can put it behind the same SSO as your other tools with Authentik.

Generate an SSL Certificate for Zulip Manually

The image automatically tries to issue SSL for the domain name you provided during deployment. If that fails, for example because DNS had not propagated yet, SSH into the server as shown above and run Zulip's certbot setup script, replacing the admin email and domain with your own:

sudo /home/zulip/deployments/current/scripts/setup/setup-certbot --email=<admin-email> --agree-tos <your-domain>

Check Zulip Server Logs

SSH into the server, check that Zulip's services are running, then read the server and error logs:

sudo supervisorctl status

sudo tail -n 100 /var/log/zulip/server.log

sudo tail -n 100 /var/log/zulip/errors.log

Manage Your Zulip Deployment on GCP

Shut Down the VM

To stop the VM without deleting it, go to Compute Engine → VM Instances in the GCP console, select your instance, and click Stop. You can restart it later by clicking Start/Resume.

Delete the Deployment

To fully remove the deployment and stop all billing:

  1. Go to Solution deployments in the GCP console.
  2. Find your Zulip deployment.
  3. Click Delete to remove all associated resources.

Upgrades

When there is an upgrade, we update the product with a newer version. You can check the product version in GCP Marketplace. If a newer version is available, back up your server data, delete the current deployment, and launch the product again using the newer version.

Troubleshoot Zulip on GCP

Insufficient Capacity Error

If you see an error stating there is not sufficient capacity for the selected machine type while deploying, try a different zone or try again later.

Emails Not Arriving

If new users never receive their confirmation or invitation emails, check the SMTP host, port, username and password you entered during deployment, then look for SMTP errors in /var/log/zulip/errors.log.

Storage Full Error

Uploaded files and message history grow steadily on an active Zulip server. If the application becomes unresponsive, SSH into the server and run:

df -h

If the root volume is between 90-100%, resize the boot disk from the Compute Engine console, then reboot the instance.

Conclusion

You now have a self-hosted Zulip server running in your own GCP project, with SSL, your own domain, and your first organization. From here, invite your team, set up channels, and connect the integrations you need. For another self-hosted tool in the same project, our Zammad on GCP developer guide sets up a help desk, and the roundup of self-hosted Microsoft Teams alternatives compares the wider chat field.

For questions about Zulip itself rather than the GCP deployment, the Zulip server documentation, the Zulip GitHub repository, and zulip.com are the best starting points.

Technical Support

If you run into any issues, our support team is here to help. Reach out to us at support@meetrix.io and we will respond within 12 hours.

Frequently Asked Questions

What is Zulip?

Zulip is an open-source team chat application. Its conversations are organized into channels and topics, so each discussion stays in its own thread and people can catch up on what matters to them without scrolling through one long stream of messages.

What are the prerequisites for deploying Zulip on GCP?

You need basic Google Cloud knowledge, a GCP project with billing enabled, a domain name you can manage DNS records for, and SMTP credentials so Zulip can send sign-up and invitation emails.

Which machine type should I choose for Zulip?

Zulip needs at least 2 GB of memory. e2-medium (2 shared vCPU, 4 GB memory) is a comfortable baseline for a small team. Move up to e2-standard-2 or larger as your user count and message history grow.

Is there a free trial?

Yes. The Meetrix Zulip listing includes a 5-day free trial with up to USD 50.00 in licence fee credits. Infrastructure charges for the VM and disk still apply during the trial.

Why does my Zulip URL say "No organization found"?

A fresh Zulip server has no organization yet, and it will not let anyone create one without a secure link. SSH into the VM, run the generate_realm_creation_link command, and open the link it prints to create your first organization.

Why do I need to provide SMTP settings?

Zulip sends email for account confirmation, invitations, and password resets. Without working SMTP settings, new users cannot finish signing up. If you use Gmail, create an app password for the SMTP password field instead of using your normal account password.

How do I get technical support?

Reach out to Meetrix Support at support@meetrix.io for help with the Zulip GCP deployment.

Deploy Zulip on GCP in Minutes

Launch a production-ready, self-hosted Zulip team chat on Google Cloud with a pre-configured Meetrix image.

Get Started on GCP Marketplace