Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
tuto:linux_divers:jitsi [24/04/2020 16:05] dani |
tuto:linux_divers:jitsi [28/05/2020 11:22] (Version actuelle) dani [Install Jitsi on CentOS 7] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Install Jitsi on CentOS 7 ====== | ====== Install Jitsi on CentOS 7 ====== | ||
- | This page give needed steps to install and configure Jitsi on a CentOS server. If like me, you're not a big Docker fan, and you're happier with EL based systems | + | This page gives the needed steps to install and configure Jitsi on a CentOS server. If like me, you're not a big Docker fan, and you're happier with EL based systems, it might be useful to you. In this guide, you'll learn : |
* How to build latest versions of all components | * How to build latest versions of all components | ||
* Get a working install with prosody, jicofo, meet, videobridge | * Get a working install with prosody, jicofo, meet, videobridge | ||
Ligne 8: | Ligne 8: | ||
<note tip>We deploy all this with ansible, see [[https:// | <note tip>We deploy all this with ansible, see [[https:// | ||
- | This page are just some notes to help you setting this up if you don't want to play with ansible. | + | This page are just some notes to help you setting this up if you don't want to play with ansible. |
</ | </ | ||
Jitsi is composed of several components, and also relies on 3rd party ones. Here is a quick overview of which are using for what : | Jitsi is composed of several components, and also relies on 3rd party ones. Here is a quick overview of which are using for what : | ||
- | * An XMPP server is needed to route messages between all those components. We will use prosody for this | + | * An XMPP server is needed to route messages between all the components. We will use prosody for this |
* Videobridge is the SFU((Selective Forwarding Unit)). It will receive all the video and audio streams, and handle relay to the other participants | * Videobridge is the SFU((Selective Forwarding Unit)). It will receive all the video and audio streams, and handle relay to the other participants | ||
* Jicofo is the component which will handle stream negociation and room management | * Jicofo is the component which will handle stream negociation and room management | ||
Ligne 20: | Ligne 20: | ||
* ConferenceMapper API is a small daemon needed for inbound calls to work. It'll associate a PIN to each Jitsi room and is needed so that a phone call can be routed to the correct Jitsi room | * ConferenceMapper API is a small daemon needed for inbound calls to work. It'll associate a PIN to each Jitsi room and is needed so that a phone call can be routed to the correct Jitsi room | ||
- | In this example, will use visio.fws.fr as jitsi domain name. You'll need to adapt this | + | In this example, |
<note tip>This how to assume you already have a valid SSL cert in / | <note tip>This how to assume you already have a valid SSL cert in / | ||
Ligne 56: | Ligne 56: | ||
</ | </ | ||
- | Now, lets configure it | + | Now, lets configure it. Edit / |
- | <code bash> | + | <file prosody.cfg.lua |
- | cat << | + | |
plugin_paths = { "/ | plugin_paths = { "/ | ||
Ligne 122: | Ligne 121: | ||
Include " | Include " | ||
+ | </ | ||
- | _EOF | + | Now edit **/ |
- | + | ||
- | cat << | + | |
+ | <file jitsi.cfg.lua lua> | ||
muc_mapper_domain_base = " | muc_mapper_domain_base = " | ||
admins = { " | admins = { " | ||
Ligne 196: | Ligne 195: | ||
muc_component = " | muc_component = " | ||
- | _EOF | + | </file> |
- | </code> | + | |
Now we can start and enable the daemon | Now we can start and enable the daemon | ||
Ligne 624: | Ligne 622: | ||
net.java.sip.communicator.impl.protocol.jabber.acc=acc | net.java.sip.communicator.impl.protocol.jabber.acc=acc | ||
net.java.sip.communicator.impl.protocol.jabber.acc.ACCOUNT_UID=Jabber: | net.java.sip.communicator.impl.protocol.jabber.acc.ACCOUNT_UID=Jabber: | ||
- | net.java.sip.communicator.impl.protocol.jabber.acc.USER_ID=jigasi@auth.conf.fws.fr | + | net.java.sip.communicator.impl.protocol.jabber.acc.USER_ID=jigasi@auth.visio.fws.fr |
net.java.sip.communicator.impl.protocol.jabber.acc.IS_SERVER_OVERRIDDEN=true | net.java.sip.communicator.impl.protocol.jabber.acc.IS_SERVER_OVERRIDDEN=true | ||
net.java.sip.communicator.impl.protocol.jabber.acc.SERVER_ADDRESS=jitsi.fws.fr | net.java.sip.communicator.impl.protocol.jabber.acc.SERVER_ADDRESS=jitsi.fws.fr | ||
Ligne 691: | Ligne 689: | ||
yum install python3 | yum install python3 | ||
</ | </ | ||
- | </code> | + | < |
mkdir -p / | mkdir -p / | ||
chown jitsi:jitsi / | chown jitsi:jitsi / | ||
Ligne 760: | Ligne 758: | ||
* You might want to change the Outbound CID to advertize the 0510101010 number | * You might want to change the Outbound CID to advertize the 0510101010 number | ||
* You might change the context to **outbound-allroutes** if you don't want conference user to be able to call internal numbers. The default context is **from-internal** | * You might change the context to **outbound-allroutes** if you don't want conference user to be able to call internal numbers. The default context is **from-internal** | ||
- | * Restrict codecs to alaw and ulaw (I had sound issues with opus and g722, so better to restrict this to known working codecs). For this, type **all* in the **Disallowed Codecs** field, and **alaw& | + | * Restrict codecs to alaw and ulaw (I had sound issues with opus and g722, so better to restrict this to known working codecs). For this, type **all** in the **Disallowed Codecs** field, and **alaw& |
* You should also disable the **Direct Media** option | * You should also disable the **Direct Media** option | ||
Ligne 786: | Ligne 784: | ||
exten => jitsi, | exten => jitsi, | ||
</ | </ | ||
+ | |||
+ | ==== Create an AGI script to lookup roomname from their PIN ==== | ||
We have to create an AGI script so that asterisk can query the confmapper daemon to get the name of a room from the PIN. For this, create the script **/ | We have to create an AGI script so that asterisk can query the confmapper daemon to get the name of a room from the PIN. For this, create the script **/ | ||
Ligne 820: | Ligne 820: | ||
</ | </ | ||
+ | ==== Create a Custom Destination pointing on your custom IVR ==== | ||
OK, now we need to way to route calls to our new custom IVR. For this, we'll create a **Custom Destination** in FreePBX. Just set the target to **jitsi-ivr, | OK, now we need to way to route calls to our new custom IVR. For this, we'll create a **Custom Destination** in FreePBX. Just set the target to **jitsi-ivr, | ||
{{ : | {{ : | ||
- | This **Custom Destination** make the IVR available in all the FreePBX routing logic. We can assign it an internal number to test it with a new **Misc Application** : | + | This **Custom Destination** make the IVR available in all the FreePBX routing logic. |
+ | |||
+ | ==== Assign an internal number to the IVR to test ==== | ||
+ | We can assign it an internal number to test it with a new **Misc Application** : | ||
{{ : | {{ : |