Files
zulip/docs/production/video-calls.md
2025-06-05 17:33:13 -07:00

6.4 KiB

Video call providers

Zulip makes it convenient to start a call with the click of a button, using the call provider of your choice. The call providers supported by Zulip are:

By default, Zulip uses the cloud version of Jitsi Meet as its call provider. This page documents the configurations required to support other video call integration options on a self-hosted Zulip server.

:::{note} You can disable the video and voice call buttons for your organization by setting the call provider to "None". :::

Jitsi

You can configure Zulip to use a self-hosted instance of Jitsi Meet by providing the URL of your self-hosted Jitsi Meet server in organization settings. No server configuration changes are required.

Zoom

To use a Zoom integration on a self-hosted installation, you'll need to register a custom Zoom application for your Zulip server. Zulip supports two types of custom Zoom apps:

  • Server to Server OAuth app: Easiest to set up, but requires users to be part of the Zoom organization that created the application in order to create calls.

  • General OAuth app: Recommended for settings where the limitations of the Server to Server OAuth app are problematic (e.g., this is used by Zulip Cloud).

Server to Server OAuth app

This Zoom application type, introduced in Zulip 10.0, is easiest to set up, and is ideal for most installations that self-host Zulip. To create Zoom meeting links in Zulip messages using this integration, users will will need to be members of your Zoom organization and use the same email address in Zulip that they have registered with Zoom.

You can set up this integration as follows:

  1. Select Build App at the Zoom Marketplace. Create a Server to Server OAuth App.

  2. Choose an app name such as "ExampleCorp Zulip".

  3. In the Information tab:

    • Add a short description and company name.
    • Add a name and email for the developer contact information.
  4. In the Scopes tab, add the meeting:write:meeting:admin and meeting:write:meeting:master scopes.

  5. In the Activation tab, activate your app. You can now configure your Zulip server to use the app.

General OAuth app

This Zoom application type is more flexible than the server-to-server integration. However, current Zoom policy requires all General OAuth apps to go through the full Zoom Marketplace review process, even for unlisted apps that will only be used by a single customer. As a result, you have to do quite a bit of publishing overhead work in order to create this type of Zoom application for your Zulip server.

  1. Select Build App at the Zoom Marketplace. Create a General App.

  2. In the Basic Information tab:

    • Choose an app name such as "ExampleCorp Zulip".
    • Select User-managed app.
    • In the OAuth Information section, set the OAuth Redirect URL to https://zulip.example.com/calls/zoom/complete (replacing zulip.example.com by your main Zulip hostname).
  3. In the Scopes tab, add the meeting:write:meeting scope.

  4. Switch to the Production tab and complete the information needed for the Zoom App Marketplace Review Process in the App Listing and Technical Design tabs.

  5. Submit your app for review. Select the Publish the app by myself option on the App Submission page so that the app will be unlisted.

  6. Once your app has been approved by the Zoom app review team, then you can proceed to configure your Zulip server to use the app.

Configure your Zulip server

  1. In /etc/zulip/zulip-secrets.conf, set video_zoom_client_secret to be your app's "Client Secret".

  2. In /etc/zulip/settings.py, set VIDEO_ZOOM_CLIENT_ID to your app's "Client ID". If your using a Zoom Server to Server OAuth app, set VIDEO_ZOOM_SERVER_TO_SERVER_ACCOUNT_ID to be your app's "Account ID".

  3. Restart the Zulip server with /home/zulip/deployments/current/scripts/restart-server.

This enables Zoom support in your Zulip server. Finally, configure Zoom as the video call provider in the Zulip organizations where you want to use it.

BigBlueButton

To use the BigBlueButton video call integration on a self-hosted Zulip installation, you'll need to have a BigBlueButton server (version 2.4+) and configure it:

  1. Get the Shared Secret using the bbb-conf --secret command on your BigBlueButton Server. See also the BigBlueButton documentation.

  2. Get the URL to your BigBlueButton API. The URL has the form of https://bigbluebutton.example.com/bigbluebutton/ and can also be found using the bbb-conf --secret command.

You can then configure your Zulip server to use that BigBlueButton Server as follows:

  1. In /etc/zulip/zulip-secrets.conf, set big_blue_button_secret to be your BigBlueButton Server's shared secret.

  2. In /etc/zulip/settings.py, set BIG_BLUE_BUTTON_URL to your to be your BigBlueButton Server's API URL.

  3. Restart the Zulip server with /home/zulip/deployments/current/scripts/restart-server.

This enables BigBlueButton support in your Zulip server. Finally, configure BigBlueButton as the video call provider in the Zulip organizations where you want to use it.