All four platforms can start Jitsi calls from inside the app, so your team or students never leave the chat or the course. The setup is the same pattern every time: install the plugin, give it your Jitsi server’s address, and, if you protect your server with JWT, give it the same app ID and secret. The part people get wrong is the server they point it at.
Do not point integrations at meet.jit.si
Every plugin below ships with https://meet.jit.si as its default or example, because it works instantly for a demo. It is the wrong choice for real use:
- Embedded calls stop after 5 minutes. meet.jit.si is not meant to run inside another site, and the Moodle plugin’s own documentation warns about this limit.
- Meetings end after 95 minutes since October 9, 2026. See the meet.jit.si 95-minute limit.
- Starting a room needs a sign-in on meet.jit.si, which breaks one-click calls from a chat channel.
- You cannot control who joins. There is no way to restrict rooms to your users.
Use your own Jitsi server (Docker install guide), or 8x8 JaaS if you do not want to run one. Mattermost, Rocket.Chat and Moodle can all generate JaaS or JWT tokens.
At a glance
| Platform | What to install | Where to configure | JWT support |
|---|---|---|---|
| Mattermost | Jitsi plugin (community supported) | System Console > Plugins > Jitsi | App ID and App Secret |
| Rocket.Chat | Jitsi app from the Marketplace | Administration > Apps > Jitsi > Settings | Application ID and Secret, or JaaS key |
| Nextcloud | Jitsi integration app (nextcloud/jitsi) |
Settings > Jitsi | JWT secret |
| Moodle | mod_jitsi activity plugin |
Site administration > Plugins > Jitsi | Token based mode, JaaS or GCP |
Prepare your Jitsi server for JWT
JWT is optional, but it is what makes an integration safe: the chat or learning platform signs a short-lived token for each call, and your Jitsi server only lets in people with a valid token. On docker-jitsi-meet, set these in .env and restart the stack:
ENABLE_AUTH=1
AUTH_TYPE=jwt
JWT_APP_ID=my_jitsi_app_id
JWT_APP_SECRET=a-long-random-secretUse the same app ID and secret in the plugin. Our Jitsi JWT authentication guide explains the token format and the Debian package setup, and JWT not working covers the usual errors.
If you added X-Frame-Options or a frame-ancestors Content Security Policy while hardening the Jitsi web server, allow the domain of your chat or learning platform, or embedded meetings will show a blank frame.
Mattermost
The Jitsi plugin adds a video icon to every channel header and a /jitsi slash command. A click posts an invitation in the channel; meetings can open in a floating window inside Mattermost or in a new tab.
- Download the plugin from the releases page.
- In Mattermost, open System Console > Plugins > Plugin Management and upload the file.
- Open System Console > Plugins > Jitsi and set:
- Enable Plugin: true
- Jitsi Server URL:
https://meet.example.com - Embed Jitsi video inside Mattermost: true for the floating window (marked experimental)
- Use JWT Authentication for Jitsi: true, then the App ID, App Secret and Meeting Link Expiry Time (30 minutes by default)
- Jitsi Meeting Names: random words, a UUID, or the team and channel name
- Type
/jitsiin any channel to test.
Users can switch between embedded and new-window meetings with /jitsi settings. The plugin is community supported, not maintained by Mattermost, and the channel header button is not available in the mobile apps.
Rocket.Chat
Rocket.Chat treats Jitsi as a video conference provider. Once the Jitsi app is installed and configured, the call button in any room starts a Jitsi meeting.
- Go to Administration > Apps > Marketplace, find Jitsi and install it.
- Open the app’s Settings tab and set:
- Domain:
meet.example.com(nohttps://) - Use SSL: on
- Title prefix and Title suffix: optional text added to room names
- Use Authentication Token: on if your server uses JWT, then Application ID (iss) and Application Secret matching your Jitsi server
- Limit token to Jitsi Room: on, so each token only opens its own call
- Domain:
- Make Jitsi the default provider under Administration > Workspace > Settings > Video Conference if you have more than one installed.
For JaaS, switch on Use JaaS (8x8) and paste your API key ID and the base64-encoded private key instead of a secret. Rocket.Chat’s desktop app needs a recent Jitsi release for in-app calling.
Nextcloud
The Jitsi integration app creates conference rooms inside Nextcloud, with sharable links, a pre-join system test, and rooms listed in the global search.
- As an admin, open Apps, search for Jitsi and enable the Jitsi integration.
- Go to Settings > Jitsi and enter your server URL and, if you use JWT, the JWT secret.
- Create a conference from the Jitsi entry in the top bar and share its link.
The app’s maintainers recommend a dedicated Jitsi server secured with JWT. If you only need small calls inside Nextcloud and do not run Jitsi anyway, Nextcloud Talk is the built-in alternative.
Moodle
mod_jitsi adds Jitsi as a standard Moodle activity: teachers schedule sessions in a course, and students join in one click without an extra account. It supports Moodle 4.4 to 5.2 and adds attendance-based activity completion, guest links, private one-to-one calls and several recording options.
- Install mod_jitsi from the Moodle plugins directory (Site administration > Plugins > Install plugins), or with Composer.
- Under Site administration > Plugins > Activity modules > Jitsi, choose the server type:
- Self-hosted: your Jitsi server URL, with token based mode and your JWT app ID and secret for proper moderator control
- JaaS (8x8): free up to 25 monthly active users, no server to run
- GCP auto-managed: the plugin creates and manages a Jitsi server in your Google Cloud account
- Add a Jitsi activity to a course and open it as a student to test.
Some of the plugin’s reporting features, such as the attendance report and recording view statistics, need a free registration with the plugin’s developer. Recording to YouTube, Dropbox or Google Cloud Storage is configured separately in the plugin settings.
Common problems
| Symptom | Likely cause |
|---|---|
| Calls drop after 5 minutes | Still pointed at meet.jit.si |
| “You are not allowed to join” or an endless login prompt | JWT app ID or secret differs between the plugin and the Jitsi server, or the server clock is off. See JWT not working |
| Embedded meeting shows a blank frame | X-Frame-Options or frame-ancestors on the Jitsi server blocks your platform’s domain |
| Camera and microphone blocked in the embed | The page or the Jitsi server is not on HTTPS. Browsers only allow devices on secure pages. See camera and microphone not working |
| Works for two people, video stops with a third | UDP 10000 closed on the Jitsi server. See Jitsi ports and firewall rules |
Sources
- Mattermost Jitsi plugin README (community supported, v2.1.0)
- Rocket.Chat documentation: Jitsi app
- Nextcloud Jitsi integration README
- mod_jitsi in the Moodle plugins directory and its README
- docker-jitsi-meet
env.example(ENABLE_AUTH,AUTH_TYPE,JWT_APP_ID,JWT_APP_SECRET)
Need a hand?
We set up Jitsi servers with JWT for Mattermost, Rocket.Chat, Nextcloud and Moodle, and connect them to your existing login. Talk to an engineer or see our Jitsi integration service.