
This article discusses how to integrate Jitsi Meet with Moodle for eLearning video conferencing.
Below is a complete, start-to-finish how-to guide for integrating a self-hosted Jitsi Meet server with Moodle.
This includes installation, configuration, recommended security options, and full Moodle plugin setup.
🔧 How to Integrate Jitsi Meet with Moodle for eLearning Video Conferencing
Integrating Jitsi Meet with Moodle allows you to provide live video conferencing directly inside your LMS—fully under your control, with no reliance on external SaaS providers. This guide will walk you through installing Jitsi Meet on your own VPS and connecting it to Moodle using the official Jitsi plugin.
✅ Prerequisites
Server Requirements
- Self-hosted Jitsi Meet
- Fully qualified domain name (FQDN)
e.g.,meet.yourdomain.com - DNS A record pointing the FQDN → your VPS IP
- SSL configured and installed on hostname
Software Requirements
- Moodle Installation: Moodle 3.9+ (works with Moodle 4.x as well)
- Administrator access to Moodle
- Root/SSH access to your VPS
Secure Jitsi with JWT Authentication
By default, anyone can create a room. For Moodle integration, JWT authentication is the most secure—Moodle will generate JWT tokens and users cannot join unless authenticated.
-
Enable Prosody Modules
sudo nano /etc/prosody/conf.avail/meet.example.com.cfg.lua
Find the
VirtualHostsection and edit:Add internal auth domain
VirtualHost "auth.meet.example.com" authentication = "internal_plain"Enable token authentication on main host
Inside the main VirtualHost:
modules_enabled = { "bosh"; "pubsub"; "ping"; "speakerstats"; "turncredentials"; "conference_duration"; "muc_lobby_rooms"; "token_verification"; }Add token settings:
app_id = "moodle" app_secret = "change_me_secret_key_2025" allow_empty_token = false
Save and exit.
-
Register Prosody User
sudo prosodyctl register jitsi_user auth.meet.example.com strongpassword123
-
Configure Jicofo
Edit configuration:
sudo nano /etc/jitsi/jicofo/jicofo.conf
Add:
jicofo { authentication { enabled = true type = XMPP login-url = "auth.meet.example.com" } } -
Restart Services
sudo systemctl restart prosody sudo systemctl restart jicofo sudo systemctl restart jitsi-videobridge2
Install the Moodle Jitsi Plugin
The official plugin:
🔗 https://moodle.org/plugins/mod_jitsi
You can install via GUI or command line.
-
Install via Moodle Admin UI
- Login to Moodle as admin
- Navigate: Site administration → Plugins → Install plugins
- Upload the ZIP file from the plugin page
- Click Install plugin
Moodle will check dependencies, then install.
-
Configure Moodle to Use Your Jitsi Server
Navigate to: Site administration → Plugins → Activity modules → Jitsi
Configure the following:1. Jitsi server URL
https://meet.example.com
2. Use JWT Authentication
Enable:
- ✔ Use JWT authentication
- ✔ Send user info
- ✔ Send avatar information
3. Enter JWT Credentials
Using the same values as in Prosody:
App ID: moodle App Secret: change_me_secret_key_2025
4. Enable Secure Domain
Set:
Secure Domain: Yes
5. Security Options
Recommended:
- ✔ Only teachers can create rooms
- ✔ Students can join without password
- ✔ Enable lobby mode
- ✔ Enable end-to-end encryption (optional; limits features)
- ✔ Allow screen sharing
-
Test the Integration
-
Add a New Jitsi Activity
- Go to a course
- Click Add an activity or resource
- Select Jitsi
- Configure:
- Meeting name
- Start time
- Duration
- Participant permissions
-
Validate Jitsi Opens Inside Moodle
When clicking the activity:
- Moodle generates JWT
- Browser opens an embedded Jitsi meeting
- Users join automatically using their Moodle name
-
Check Authentication
Try:
- Access as teacher → should open correctly
- Access as student → should join room if allowed
- Try opening room URL directly → should NOT work without JWT
This confirms Jitsi is secured.
-
Optional Add-Ons
-
📌 Enable Recording (Jibri)
If you want cloud recording:
- Deploy a second server (Jibri)
- Install Google Chrome + FFmpeg
- Integrate with Prosody/Jitsi
- Add credentials
Recording is resource-heavy; use a separate dedicated server.
-
📌 Add TURN Server for NAT Users
Install coturn:
sudo apt install coturn -y
Configure at
/etc/turnserver.conf:realm=meet.example.com use-auth-secret static-auth-secret=turnSecretKey cert=/etc/letsencrypt/live/meet.example.com/fullchain.pem pkey=/etc/letsencrypt/live/meet.example.com/privkey.pem
Increase meeting reliability dramatically.
-
📌 Custom Branding
Replace logos/backgrounds:
/usr/share/jitsi-meet/images/ /usr/share/jitsi-meet/css/
Troubleshooting
-
🔧 Video/Audio Not Connecting
Enable or install TURN server.
-
🔧 JWT Authentication Fails
Check:
allow_empty_token = false- Matching
app_idandapp_secret - Prosody logs:
journalctl -u prosody
-
🔧 Moodle Says “Unable to Create Meeting”
Make sure teacher role has mod/jitsi:addinstance capability enabled.
-
🔧 Jitsi Does Not Load in Moodle
Enable:
- iframe embedding in Moodle
- Whitelist your Jitsi domain
Site admin → Security → HTTP Security → Allowed Iframes
Add:
https://meet.example.com
🎉 Integration Complete!
You now have:
✅ Your own self-hosted Jitsi Meet server
✅ Secured with JWT
✅ Fully integrated into Moodle
✅ Automatic login for teachers/students
✅ Optional recording, lobby, and E2EE
Conclusion
You now know how to integrate Jitsi Meet with Moodle for eLearning video conferencing.









