Organizations that already run Openfire or ejabberd for chat often ask the same question: can Jitsi Meet use our XMPP server instead of installing another one? It is a reasonable question. Jitsi is an XMPP application, and so are they.

We started guides for both back in 2019, and marked them "yet to be completed" at the time. This page replaces them with what we would tell a customer asking today.

The short answer

Setup Works? Our view
Standard Jitsi Meet with its own ProsodyYesThe supported way. Recommended.
Openfire with the Openfire Meetings or Pade pluginYes, within the plugin's featuresReasonable if you are committed to Openfire and accept lagging Jitsi features
Standard Jitsi components pointed at Openfire or ejabberd instead of ProsodyPartially, basic calls at bestNot supported; features break
Your chat server and a separate Jitsi Meet side by sideYesThe best of both. Recommended.

Openfire vs ejabberd for this job

Neither one runs Jitsi Meet's Prosody modules, so on the narrow question of hosting Jitsi they are equally unsuitable. What separates them is everything around that. Openfire has the plugin route below, an admin console and a Java plugin ecosystem, which is why it is the only one of the two with a real path to video meetings. ejabberd is the stronger general-purpose server at scale, with clustering and its own SIP and MQTT support, but nothing equivalent to ofmeet. When the goal is video, that asymmetry settles it.

Why Jitsi is tied to Prosody

XMPP gives Jitsi its foundation: participants join a multi-user chat room, and Jicofo uses XMPP messages to set up media. In principle, any XMPP server offers that. In practice, Jitsi Meet goes far beyond the standard.

The jitsi-meet repository ships dozens of Prosody plugin files, written in Lua against Prosody's module API. They implement token authentication, lobby, breakout rooms, polls, speaker statistics, moderation controls, visitor mode for very large meetings and more. None of that exists in Openfire, which is written in Java, or ejabberd, which is written in Erlang.

So a Jitsi deployment on another XMPP server isn't Jitsi Meet with a different backend. It is a stripped-down Jitsi Meet with most of the features that make it useful removed, and every upgrade can break it further.

This comes up on the ejabberd side too. An ejabberd discussion on running Jitsi against it lands in the same place: the XMPP parts are standard enough, and the Jitsi-specific module surface is what you would have to reimplement.

What the old guides did

Our 2019 drafts registered Jicofo and the videobridge as external XMPP components on Openfire or ejabberd, trusted the server certificate with org.jitsi.jicofo.ALWAYS_TRUST_MODE_ENABLED in sip-communicator.properties, and set connection details in /etc/jitsi/jicofo/config. Don't follow those steps on a current system:

  • Jicofo now reads /etc/jitsi/jicofo/jicofo.conf, in HOCON format.
  • Videobridges no longer connect as components; they log in as XMPP clients and join a brewery room.
  • The front end expects the Prosody plugins described above.

Openfire video conferencing through plugins

If Openfire is non-negotiable, use a plugin built for it rather than wiring standard Jitsi packages to it by hand. The Ignite Realtime community, which develops Openfire, maintains two:

  • Openfire Meetings (ofmeet) bundles the Jitsi Videobridge, Jicofo and the Jitsi Meet web client inside Openfire, and implements XEP-0483 so XMPP clients can request a meeting and get a URL back.
  • Pade offers a broader web-based unified communications suite, with chat, group chat, telephony and audio and video conferencing.

Both are active projects. Install plugins from the Plugins page of the Openfire admin console, or upload the plugin .jar there. The trade-off to accept up front: a bundled Jitsi inside a plugin moves at the plugin's pace, so newer Jitsi Meet features should be expected to arrive later, if at all. That is an inference from how the plugins are packaged rather than a version-by-version comparison we have run, so check a current plugin release against the features you actually need. If you are setting up Openfire from scratch, installing Openfire on Ubuntu covers the server itself.

For most organizations, the right answer is not to merge the two at all. Run your chat server for chat, and run a standard Jitsi Meet deployment for meetings, with its own Prosody that nobody interacts with directly.

  • Shared sign-in. Put both behind the same identity: LDAP authentication reuses directory passwords, and JWT lets your existing systems start meetings on behalf of signed-in users.
  • Meeting links in chat. A chat bot, slash command or plugin that posts a Jitsi room URL is all most teams need to go from a conversation to a call.
  • Separate failure domains. A problem in the meeting stack doesn't take chat down, and the other way around.

Start from a normal Jitsi Meet install on Ubuntu. The extra Prosody costs almost nothing to run.

If you experiment anyway

If you want to see how far a standard Jitsi goes against another XMPP server, for learning or a lab, the connection is defined in jicofo.conf. These are the values that decide where Jicofo connects:

jicofo {
  xmpp {
    client {
      enabled = true
      hostname = "xmpp.example.com"
      port = 5222
      domain = "auth.meet.example.com"
      xmpp-domain = "meet.example.com"
      username = "focus"
      password = "YOUR_FOCUS_PASSWORD"
      conference-muc-jid = "conference.meet.example.com"
    }
  }
  bridge {
    brewery-jid = "JvbBrewery@internal.auth.meet.example.com"
  }
}

What xmpp-domain means in jicofo.conf

The difference between domain and xmpp-domain trips up nearly everyone: domain is where the focus user logs in, while xmpp-domain is the domain of the conferences themselves. Fixing Jicofo configuration errors goes through each value, and what XMPP is and how it works explains the addresses involved. Expect basic calls at best, and expect them to break on the next Jitsi upgrade.

Frequently Asked Questions

Can Jitsi Meet use ejabberd instead of Prosody?

Not in any supported way. Jitsi Meet depends on dozens of Prosody-specific modules for features like token authentication, lobby and breakout rooms. Component connections to another XMPP server can get a basic call working, but features break and there is no maintained ejabberd integration we know of.

Can Openfire host Jitsi Meet video conferences?

Yes, through plugins. The Openfire Meetings (ofmeet) plugin bundles the Jitsi Videobridge, Jicofo and the Jitsi Meet web client inside Openfire, and the Pade plugin builds a wider web communications suite on similar pieces. Expect their Jitsi versions and features to trail upstream Jitsi Meet.

What is xmpp-domain in jicofo.conf?

It is the main XMPP domain of the conferences, the domain users join, such as meet.example.com. The separate domain setting is the authentication domain Jicofo logs in to, usually auth.meet.example.com. Mixing them up is one of the most common Jicofo configuration errors.

How do I combine an existing Openfire chat server with Jitsi Meet?

Run them side by side. Keep Openfire for chat and presence, run a standard Jitsi Meet install with its own Prosody for meetings, and link the two through meeting URLs and shared authentication such as JWT or LDAP. Users don't need to know two XMPP servers exist.