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:
Jitsi Meet, a fully-encrypted, 100% open source video conferencing solution.
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:
Select Build App at the Zoom Marketplace. Create a Server to Server OAuth App.
Choose an app name such as “ExampleCorp Zulip”.
In the Information tab:
Add a short description and company name.
Add a name and email for the developer contact information.
In the Scopes tab, add the
meeting:write:meeting:adminandmeeting:write:meeting:masterscopes.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.
Select Build App at the Zoom Marketplace. Create a General App.
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(replacingzulip.example.comby your main Zulip hostname).
In the Scopes tab, add the
meeting:write:meetingscope.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.
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.
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
In
/etc/zulip/zulip-secrets.conf, setvideo_zoom_client_secretto be your app’s “Client Secret”.In
/etc/zulip/settings.py, setVIDEO_ZOOM_CLIENT_IDto your app’s “Client ID”. Some Zoom enterprise customers that don’t usezoom.uswill need to setVIDEO_ZOOM_API_URLfor the Zoom API server andVIDEO_ZOOM_OAUTH_URLfor your instance’s authorization. If you’re using a Zoom Server to Server OAuth app, setVIDEO_ZOOM_SERVER_TO_SERVER_ACCOUNT_IDto be your app’s “Account ID”.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.
Constructor Groups
To use the Constructor Groups video call integration on a self-hosted Zulip installation, you’ll need to have a Constructor Groups account. See documentation to configure the Constructor Groups video call integration here.
Nextcloud Talk
To use the Nextcloud Talk video call integration on a self-hosted Zulip installation, you’ll need to have access to a Nextcloud server (version 22+) with the Talk app enabled. See documentation to configure the Nextcloud Talk video call integration here.
Webex
To use the Webex integration on a self-hosted Zulip installation, you’ll need to register a custom Webex integration.
For users in paid Webex organizations, which have the ability to create public rooms that are visible to every member within that organization, an ad-hoc meeting is created in Webex. Otherwise, for users of free Webex organizations, a personal room meeting is created in Webex.
Create a custom Webex integration
Visit the New Integration page on the Webex developer portal.
Select “No” for “Will this integration use a mobile SDK?”.
Fill in the Integration name, Icon and App Hub Description according to your preferences.
For Redirect URI(s), enter
https://zulip.example.com/calls/webex/completereplacingzulip.example.comwith your Zulip organization’s URL.For Scopes, select
spark:all,meeting:schedules_readandmeeting:schedules_write, and select Add Integration.optional: You can submit the integration to the Webex App Hub by following this documentation.
Configure your Zulip server
In
/etc/zulip/zulip-secrets.conf, setvideo_webex_client_secretto your Webex integration’s “Client Secret”.In
/etc/zulip/settings.py, setVIDEO_WEBEX_CLIENT_IDto your Webex integration’s “Client ID”.Restart the Zulip server with
/home/zulip/deployments/current/scripts/restart-server.
This enables Webex support in your Zulip server. Finally, configure Webex as the video call provider in the Zulip organization where you want to use it.