You have a self-hosted Jitsi Meet server and it works fine in the browser. Then someone asks the obvious question: can people dial in from a phone? Or can the room call out to a landline for the one board member who refuses to use a laptop. That is what a SIP gateway gets you, and on Jitsi the piece that does it is Jigasi.

On a plain Ubuntu 24.04 Jitsi box the install itself is short. The part that trips people is the config: the brewery room, the XMPP control user, and getting a SIP account that actually reaches the phone network. This guide follows the current Jigasi package and the standard jitsi-meet layout, not the old build-from-source steps you still find in 2019 forum posts. Where a value depends on your own domain or provider, I have called it out so you are not copy-pasting blind.

What is Jigasi, the Jitsi SIP gateway?

Jigasi is short for Jitsi Gateway to SIP. It is a server-side application that lets regular SIP clients and phone callers join a Jitsi Meet conference. Think of it as a translator that sits between two worlds: WebRTC on the Jitsi side, SIP on the telephony side. When a phone caller connects, Jigasi joins the meeting room as a normal participant and relays audio both ways. Everyone in the browser hears the caller, and the caller hears the room.

That single component is the whole reason a Jitsi SIP gateway exists. Without it, Jitsi is browser-only. With it, you get real telephony: dial-in numbers, dial-out invites, and (as a bonus) meeting transcription, because Jigasi can also route audio to a speech-to-text engine.

Dial-in vs dial-out

People say "SIP gateway" and mean two different things. Worth splitting them, because the setup effort is not the same.

  • Dial-in. A phone user calls a number and lands in a specific Jitsi room, usually after punching in a PIN. This needs a real phone number (a DID) from a provider, and a bit of routing logic to map the number or PIN to a room. More moving parts.
  • Dial-out. From inside a Jitsi meeting you hit the phone icon and type a SIP address or number, and Jigasi calls out to it. This is the simpler one to stand up first, and it is what the classic "invite a SIP participant" button does.

My advice: get dial-out working end to end before you touch dial-in. It proves your Jigasi install, your brewery config, and your SIP account are all correct, without also debugging PSTN number routing at the same time. Dial-in is dial-out plus an inbound number mapping, so do the hard-to-debug part last.

Prerequisites

Before adding the SIP gateway, you need:

  • A working Jitsi Meet install on Ubuntu 24.04, with Prosody, Jicofo, and the videobridge already running behind a valid domain and SSL. If you are starting from zero, follow our Jitsi Meet on AWS setup guide first.
  • Root or sudo access to that server.
  • A SIP account (username, password, and SIP server address) from a provider such as Twilio, Telnyx, Voximplant, or your own FreeSWITCH/Asterisk trunk.
  • Your Jitsi domain handy. In the examples below I use meet.example.com. Replace it with yours everywhere.

Install Jigasi on Ubuntu 24.04

If Jitsi Meet came from the official Jitsi apt repository, Jigasi is in the same repo. So there is nothing new to add to your sources on Ubuntu 24.04. Update and install:

sudo apt update
sudo apt install jigasi

During install, debconf will stop and ask you two things: the SIP account username (in the form user@sip-provider.com) and its password. Enter the credentials from your SIP provider. This is the account Jigasi uses to place and receive calls. The installer writes them into the config for you, so you rarely need to hand-edit the SIP account afterward.

Treat the config values as a reference

The property names and file paths below match the current Jigasi package and the standard jitsi-meet layout, but exact keys can shift between Jigasi releases. Before you change anything, open the file on your own server and match the keys that are already there, and cross-check against the official Jigasi documentation. Do not blindly overwrite a working file.

No SIP account yet?

You can still complete the install with placeholder details and fill them in later. Jigasi will start but any call attempt fails until the SIP account is real and registered. Do not skip the provider step and expect the phone to ring.

Configure the brewery room in Prosody

Jicofo discovers available Jigasi instances through a shared MUC (multi-user chat) room called the brewery. On a standard jitsi-meet install the internal MUC component already exists, so usually you only need to confirm it. Open your Prosody virtual host config:

sudo nano /etc/prosody/conf.d/meet.example.com.cfg.lua

Check that you have an internal MUC component like this. If it is missing, add it, and make sure both focus and jigasi are listed as admins:

Component "internal.auth.meet.example.com" "muc"
    storage = "memory"
    modules_enabled = { "ping"; }
    admins = {
        "focus@auth.meet.example.com",
        "jigasi@auth.meet.example.com"
    }
    muc_room_locking = false
    muc_room_default_public_jids = true

Restart Prosody after any change:

sudo prosodyctl restart

Register the Jigasi XMPP user

Jigasi logs into Prosody as its own user to join the brewery and the meeting rooms. The apt install usually registers this jigasi user for you, so this step is mostly a check and a fix if it did not. To create it manually (pick a strong password, this is not the SIP password):

sudo prosodyctl register jigasi auth.meet.example.com YOUR_STRONG_PASSWORD

Now tell Jigasi to use it. Open its main config file:

sudo nano /etc/jitsi/jigasi/sip-communicator.properties

Set the XMPP control account so it matches the user you just registered. The password here is Base64-encoded, not plain text. Generate it with echo -n 'YOUR_STRONG_PASSWORD' | base64 and paste the result:

org.jitsi.jigasi.xmpp.acc.USER_ID=jigasi@auth.meet.example.com
org.jitsi.jigasi.xmpp.acc.PASS=BASE64_ENCODED_PASSWORD
org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false
org.jitsi.jigasi.xmpp.acc.SERVER_ADDRESS=127.0.0.1
org.jitsi.jigasi.xmpp.acc.VColibri.BOSH_URL_PATTERN=https://meet.example.com/http-bind?room={roomName}

The same file holds the SIP account block that the installer wrote from your debconf answers. If you skipped it or need to change providers, the SIP password there is Base64 too. Do not paste a raw password into either field, Jigasi will fail to authenticate and the logs will not make it obvious why.

Point Jicofo at the Jigasi brewery

Jicofo needs to know the brewery room name so it can find Jigasi and show the dial button. Good news: the jigasi package usually sets this for you during install. So check before you edit anything.

On current Jitsi, Jicofo is configured through the HOCON file at /etc/jitsi/jicofo/jicofo.conf, not the old sip-communicator.properties. Open it:

sudo nano /etc/jitsi/jicofo/jicofo.conf

Confirm the jigasi brewery is set, using the same internal MUC domain from your Prosody config. If the block is missing, add it, nesting it inside the existing top-level jicofo block rather than starting a second one:

jicofo {
  jigasi {
    brewery-jid = "JigasiBrewery@internal.auth.meet.example.com"
  }
}

On the old sip-communicator.properties

Older guides tell you to set org.jitsi.jicofo.jigasi.BREWERY in /etc/jitsi/jicofo/sip-communicator.properties. That path is deprecated, and on a current install the file may not even exist. Use jicofo.conf. Only fall back to the properties file if you are on an old Jicofo build that still reads it, and never set the brewery in both at once.

Restart Jicofo so it picks up the change:

sudo systemctl restart jicofo

Start Jigasi and reload Jitsi

The package installs Jigasi as a systemd service, so there is no ./jigasi.sh script to babysit like the old build-from-source days. Restart Jigasi and Jicofo:

sudo systemctl restart jigasi
sudo systemctl restart jicofo
sudo systemctl status jigasi

Once Jigasi is up it registers with Prosody and joins the brewery room. Reload your Jitsi Meet URL in the browser and open a meeting. You should now see a telephone icon in the toolbar (usually under the invite or more-actions menu). Click it, enter a SIP address or number, and Jigasi places the call. That is dial-out working.

Choosing a SIP provider

Jigasi is only half the picture. It speaks SIP, but something has to carry that SIP call onto the actual phone network (or to another SIP endpoint). Here is how the common options compare for a Jitsi setup.

Provider Type Best for
Twilio Managed SIP trunk + numbers Fast dial-in/dial-out with real phone numbers and no telco hardware. Pay per minute. The path of least resistance for PSTN.
Telnyx Managed SIP trunk + numbers Similar to Twilio, often cheaper per minute, good global number coverage. A solid Twilio alternative.
Voximplant Programmable voice platform Teams that want scripting and call logic around the SIP leg, not just a raw trunk.
FreeSWITCH / Asterisk Self-hosted SIP server You already run your own PBX, want full control, and are comfortable owning the SIP stack yourself. More work, no per-minute vendor bill.

My honest take: if you just want dial-in numbers working this week, use Twilio or Telnyx and move on. Self-hosting FreeSWITCH is the right call when you already operate a PBX or you have a hard requirement to keep voice on your own infrastructure. Otherwise you are signing up to run a whole extra service to save a few cents a minute.

Transcription, the other Jigasi mode

Worth knowing even if you came here for phones. Jigasi is not only a SIP gateway. It can also join a meeting purely to transcribe it, feeding the audio to a speech-to-text backend and dropping captions into the chat. The audio plumbing is the same, which is why one component does both jobs.

You do not need transcription to run dial-in or dial-out, and enabling it is a separate config path from the SIP account. If live captions matter to you, plan it as its own task rather than something that comes for free with the phone gateway. For teams handling sensitive calls, also look at our writeup on Jitsi Meet end-to-end encryption, because a SIP or transcription leg changes what "encrypted meeting" actually means once a call leaves the browser.

Troubleshooting the SIP gateway

Where this usually goes wrong. The install almost never breaks. The config does. Start with the logs, they are the source of truth:

sudo journalctl -u jigasi -f
  • No telephone icon in the toolbar. Jicofo cannot see Jigasi. Check that jicofo.jigasi.brewery-jid in jicofo.conf matches the room Jigasi joins, confirm the jigasi XMPP user is registered, then restart jicofo and jigasi in that order. The button appears only when a Jigasi instance is present in the brewery room.
  • Jigasi fails to authenticate to XMPP. Almost always a Base64 mistake. The PASS value must be the Base64 of the exact password you gave prosodyctl register. Re-encode with echo -n (the -n matters, a trailing newline breaks it) and try again.
  • The call connects then drops instantly. Usually the SIP side. Confirm your SIP account is registered with the provider and that outbound calling is enabled on the trunk. Test the same credentials in a plain softphone to isolate whether it is Jigasi or the provider.
  • Audio one way or no audio. Firewall or NAT on the media ports. If your Jitsi already runs a TURN server, make sure Jigasi's media can traverse it too, and that the SIP provider's RTP range is not blocked.

One more common gotcha: adding a second top-level jicofo block in jicofo.conf instead of nesting jigasi inside the existing one. HOCON will not merge them the way you expect, and your brewery setting quietly does nothing. Keep one jicofo block and put jigasi under it.

Where this fits in a bigger Jitsi setup

Adding SIP is one piece. If you are building out a full self-hosted stack, recording is usually the next request after telephony, and that is a separate component (Jibri) with its own setup, covered in our guide on setting up Jibri for Jitsi Meet recording on Ubuntu. And if you are still deciding whether to self-host at all, our overview of what Jitsi is and what it does lays out the tradeoffs before you commit a server to it.

None of this is hard once you have done it. But standing up Jitsi, wiring Jigasi, terminating SSL, and keeping Prosody, Jicofo, and the bridge in sync is a real afternoon of work, and every one of those pieces has a way to fail quietly. If you would rather skip the wiring, the Meetrix Jitsi Meet AMI ships with the core stack pre-configured so you can add the SIP gateway on a known-good base instead of debugging a fresh install at the same time.

Frequently Asked Questions

What is Jigasi in Jitsi Meet?

Jigasi (Jitsi Gateway to SIP) is a server-side app that bridges regular SIP and phone callers into a Jitsi Meet conference. It joins the room as a participant on behalf of the caller, so a phone user hears and is heard by everyone in the browser.

Do I need Jigasi for dial-in and dial-out?

Yes for both. Jigasi is the component that speaks SIP on one side and Jitsi's WebRTC on the other. Dial-in (a phone calls into a room) and dial-out (a room invites a phone) both route through Jigasi plus a SIP provider or trunk that actually reaches the phone network.

Which SIP provider works with Jigasi?

Any standard SIP provider. Twilio and Telnyx are the usual managed choices for PSTN numbers, Voximplant works too, and FreeSWITCH or Asterisk are the common self-hosted trunks. Jigasi just needs a SIP account (username, password, server) it can register with.

Why does the dial button not appear in Jitsi Meet?

The telephone icon only shows once Jigasi has registered to Prosody and joined the brewery room that Jicofo watches. If it is missing, check that the jigasi XMPP user is registered, the brewery JID in Jicofo matches, and jigasi is running. Restart jicofo after editing its config.

Can Jigasi transcribe meetings instead of dialing?

Yes. The same Jigasi component doubles as a transcription gateway. Instead of a SIP call it feeds audio to a speech-to-text backend and posts captions into the chat. It is a separate config path from the SIP account, so you can run one, the other, or both.

Does Jigasi need to run on the same server as Jitsi Meet?

Not necessarily, but for a single-box deployment it is simplest to install it alongside jitsi-meet on the same Ubuntu host. At scale you can run Jigasi on its own instance and point it at the Prosody and SIP endpoints over the network.

Deploy Jitsi Meet on AWS in Minutes

Launch a production-ready, self-hosted Jitsi Meet server with a pre-configured Meetrix AMI, then add your Jigasi SIP gateway on top.

Get Jitsi Meet on AWS Marketplace