Instalación de Jitsi Meet CT Debian 10

Instalaciónde Jitsi Meet en debian 9

Instalación de dependencias

  • Instalamos sudo y dependencias
apt install sudo ssh apt-transport-https gnupg2 curl -y

Definición de nombre de dominio

  • Aseguramos que la máquina tenga el nombre correcto dependiendo del dominio qu se selecciono para la aplicación; por ejemplo en nuestro caso deseamos que sea https://conferencias.siua.ac.cr
  • Por tanto si ejecutamos el siguiente comando debe devolver el nombre de host «conferencias»
sudo hostnamectl
  • Resultado:
   Static hostname: conferencias
         Icon name: computer-container
           Chassis: container
        Machine ID: c5b67cb2fb4c49678a4fd62f7e4a2b20
           Boot ID: 8609819a8f4c4f15b606a833a48ead01
    Virtualization: lxc
  Operating System: Debian GNU/Linux 10 (buster)
            Kernel: Linux 5.4.44-2-pve
      Architecture: x86-64
  • Si no lo podemos modificar con el comando
sudo hostnamectl set-hostname conferencias
  • Además debemos asegurar que en el archivo /etc/hosts tenga tambien el nombre
nano /etc/hosts
  • Debe contener:
10.20.200.74 conferencias.siua.ac.cr.cr conferencias
  • Finalmente verificamos todo con
ping "$(hostname)"

Agregar Repositorio

  • Agregamos el repositporio de jitsi videoBridge, Meet Jicofo Jigasi
curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null

# update all package sources
sudo apt update

Configurar firewall

  • Debemos habilitar los siguientes puerto para el correcto funcionamiento
  • 80 TCP – for SSL certificate verification / renewal with Let’s Encrypt
  • 443 TCP – for general access to Jitsi Meet
  • 4443 TCP – for fallback network video/audio communications (when UDP is blocked for example)
  • 10000 UDP – for general network video/audio communications
  • 22 TCP – if you access you server using SSH (change the port accordingly if it’s not 22)

Instalación

  • Instalamos JITSI MEET
sudo apt install jitsi-meet
  • En la primera ventana nos pide el FQDN el servidor
  • A continuación no dice que si quiere generar un certificado o quiere utilizar uno propio, seleccionamos la primera opción luego lo podemos modificar por uno de letsencrypt

Letsencrypt

  • Para crear un certificado por letsencrypt
/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
  • Resultado
-------------------------------------------------------------------------
This script will:
- Need a working DNS record pointing to this machine(for domain conferencias.siua.ac.cr)
- Download certbot-auto from https://dl.eff.org to /usr/local/sbin
- Install additional dependencies in order to request Let’s Encrypt certificate
- If running with jetty serving web content, will stop Jitsi Videobridge
- Configure and reload nginx or apache2, whichever is used

You need to agree to the ACME server's Subscriber Agreement (https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf) 
by providing an email address for important account notifications
Enter your email and press [ENTER]: interuniversitariadealajuela@gmail.com

Si esta detras de NAT

  • Si la aplicación se encuentra detrás de un NAT, debe aplicar los siguientes comandos
nano /etc/jitsi/videobridge/sip-communicator.properties
  • Y agregar las siguientes lineas
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=<Local.IP.Address>
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=<Public.IP.Address>

Ejemplo:
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=10.20.200.74      
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=186.15.227.78
  • Y comentar la siguiente linea
#org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443
  • Si da error
/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh: line 79: service: command not found
  • Abrimos el archivo y buscamos
nano /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
  • Remplazamos
service nginx reload
X
/etc/init.d/nginx restart

Cantidad de participantes

  • Por defecto el sistema soporta bien menos de 100 participantes si desea aumentar este número, abra el archivo
nano /etc/systemd/system.conf
  • Y modifique estos valores
DefaultLimitNOFILE=65000
DefaultLimitNPROC=800000
DefaultTasksMax=65000
  • Para aplicar recargue el sistema y aplique los cambios
systemctl daemon-reload
systemctl restart jitsi-videobridge2
  • Podemos consultar esos valores con
systemctl show --property DefaultLimitNPROC
systemctl show --property DefaultLimitNOFILE
systemctl show --property DefaultTasksMax
  • Podemos verificar el estado del servicio
systemctl status jitsi-videobridge2
  • Y ejecutar el siguiente comando para ver la cantidad de procesos soportados
cat /proc/`cat /var/run/jitsi-videobridge/jitsi-videobridge.pid`/limits
  • Resultado:
Max processes             65000                65000                processes 
Max open files            65000                65000                files

SIP-Gateway

  • Si tiene una cuenta de SIP, instale jigasi
apt-get -y install jigasi
  • Durante la instalación le pedirá su usuario y contraseña de su cuenta SIP

Instalar Jibri para live stremming y recording CT Ubuntu 16.04

GUIA: https://github.com/jitsi/jibri

  • para hacer live stremmming y grabar su conferencias es necesario instalar Jibri
  • Requisitos el modulo ALSA and Loopback Device deben estar activados
  • Para probarlos ejecute el comando
lsmod | grep snd_aloop
  • Si muestra la salida
snd-aloop module loaded
  • El módulo esta activado
  • Sino haga
apt install linux-image-extra-virtual
  • hacemos que se cargue el modulo en el arranque
echo "snd-aloop" >> /etc/modules
  • cargamos el modulo
modprobe snd-aloop
  • verificamos que el modulo se cargo
lsmod | grep snd_aloop
  • resultado
snd_aloop              24576  0
snd_pcm               106496  1 snd_aloop
snd                    86016  3 snd_aloop,snd_timer,snd_pcm
  • Habilitamos la carga de Ffmpeg with X11 capture support
  • este viene habilitado por defecto en ubuntu 16.04
  • Si utiliza unio anterior debe hacer
sudo add-apt-repository ppa:mc3man/gstffmpeg-keep
sudo apt-get update
sudo apt-get install ffmpeg
  • Debemos habilitar los puertos en firewall
    • SSH (22/44)
    • Web 80 y 443 (TCP)
    • 10000:60000 (TCP/UDP)
    • 5222 y 5347

Google Chrome stable & Chromedriver

  • Dependencias

apt install unzip

  • ahora dentro del servidor debemos instalar la ultima versión de chrome
curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list
apt-get -y update
apt-get -y install google-chrome-stable
  • Add chrome managed policies file and set
mkdir -p /etc/opt/chrome/policies/managed
echo '{ "CommandLineFlagSecurityWarningsEnabled": false }' >>/etc/opt/chrome/policies/managed/managed_policies.json
  • Ahora instalamos el Chromedriver
CHROME_DRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`
wget -N http://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip -P ~/
unzip ~/chromedriver_linux64.zip -d ~/
rm ~/chromedriver_linux64.zip
sudo mv -f ~/chromedriver /usr/local/bin/chromedriver
sudo chown root:root /usr/local/bin/chromedriver
sudo chmod 0755 /usr/local/bin/chromedriver
  • Instalamos otras dependencias
sudo apt-get install default-jre-headless ffmpeg curl alsa-utils icewm xdotool xserver-xorg-input-void xserver-xorg-video-dummy
  • Agregamos el repositorio de Jitsi
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
  • Ceamos un sources.list.d
sudo sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
  • Actualizamos
sudo apt-get update
  • Instalamos JIBRI
sudo apt-get install jibri
  • Al instalarse se crea el usuario «jibri» y el grupo «jibri» por defecto
  • Debemos incluir este usuario a los siguientes grupos
sudo usermod -aG adm,audio,video,plugdev jibri
  • por defecto jibri utiliza el siguiente directorio para el log, verifique que se creó
/var/log/jitsi/jibri
  • Ahora respaldamos el archivo de configuración
cp /etc/jitsi/jibri/config.json /etc/jitsi/jibri/config.json.bak
  • Ahora abrimos el siguiente archivo para configurarlo
nano /etc/jitsi/jibri/config.json
  • Vamos a modificar
-----------------------
-----------------------
"recording_directory":"/tmp/recordings",
X
"recording_directory":"/srv/recordings",

-----------------------
-----------------------



-----------------------
-----------------------
"xmpp_server_hosts": [
   "prod.xmpp.host.net"
],
X
"xmpp_server_hosts": [
    "conferencias.siua.ac.cr"
],
-----------------------
-----------------------


-----------------------
-----------------------
"xmpp_domain": "xmpp.domain",
X
"xmpp_domain": "conferencias.siua.ac.cr",
-----------------------
-----------------------




-----------------------
-----------------------
"control_login": {
  // The domain to use for logging in
  "domain": "auth.xmpp.domain",
  // The credentials for logging in
  "username": "username",
  "password": "password"
},
X
"control_login": {
  // The domain to use for logging in
  "domain": "auth.conferencias.siua.ac.cr",
  // The credentials for logging in
  "username": "ugit",
  "password": "AC2"
},

-----------------------
-----------------------

-----------------------
-----------------------
"control_muc": {
  "domain": "internal.auth.xmpp.domain",
  "room_name": "JibriBrewery",
  "nickname": "jibri-nickname"
},
X
"control_muc": {
  "domain": "internal.auth.conferencias.siua.ac.cr",
  "room_name": "JibriBrewery",
  "nickname": "jibri-nickname"
},

-----------------------
-----------------------


-----------------------
-----------------------
"call_login": {
  "domain": "recorder.xmpp.domain",
  "username": "username",
  "password": "password"
},
X
"call_login": {
  "domain": "recorder.conferencias.siua.ac.cr",
  "username": "ugit",
  "password": "AC2"
},

-----------------------
-----------------------
  • Creamos la carpeta
mkdir /srv/recordings
  • Y le asigamos un dueño
chown jibri:jitsi /srv/recordings/
  • Reiniciamos el servicio
sudo systemctl restart jibri
service jibri restart
service jibri status
  • Habilitamnos que el servicio para arranque el iniciar el sistema operativo
systemctl enable jibri-xorg
systemctl enable jibri-icewm
systemctl enable jibri
  • para poder descargar los videos instalamos php7.0 y apache2
apt install apache2 php libapache2-mod-php php-mcrypt php-mysql
  • Habilitamos UTF-8
nano /etc/apache2/conf-available/charset.conf
#Descomentamos
AddDefaultCharset UTF-8
  • Instalamos módulos
a2enmod ssl
a2enmod headers
service apache2 restart
  • ahora seguimos la guia para crear un dominio con letsencrypt y proxy- reverso y creamos los hvost
nano /etc/apache2/sites-available/jibri.siua.ac.cr.conf
  • Contenido
<VirtualHost *:80>

    #************************************************************************
    #******************* DATOS DEL SITIO WEB ********************************
    #************************************************************************
    ServerName jibri.siua.ac.cr
    ServerAlias www.jibri.siua.ac.cr
    ErrorLog /var/log/apache2/jibri_80.siua.ac.cr-error.log
    CustomLog /var/log/apache2/jibri_80.siua.ac.cr-access.log common

    #************************************************************************
    #********************** DATOS DEL WEBMASTER *****************************
    #************************************************************************
    ServerAdmin interuniversitariadealajuela@gmail.com
    Header add Author "Unidad de Gestion e Innovacion Tecnologica"

    #************************************************************************
    #********************* DATOS DEL REDIRECIONAMIENTO **********************
    #************************************************************************
    RedirectMatch permanent ^/(.*) https://jibri.siua.ac.cr/$1


    #************************************************************************
    #************************* DATOS DEL SITIO WEB **************************
    #************************************************************************
    DocumentRoot /var/www/html/

</VirtualHost>
  • Luego el ssl
nano /etc/apache2/sites-available/jibri.siua.ac.cr-le-ssl.conf
  • Contenido
<IfModule mod_ssl.c>

   #************************************************************************
   #HTTPS://www.jibri.siua.ac.cr
   #************************************************************************
   <VirtualHost *:443>
        ServerName www.jibri.siua.ac.cr
        RedirectMatch permanent ^/(.*) https://jibri.siua.ac.cr/$1
        #************************************************************************
        #*************************** DATOS DEL CERTIFICADO **********************
        #************************************************************************
        SSLEngine on
        SSLCertificateFile /etc/apache2/certificados/jibri.siua.ac.cr/fullchain.pem
        SSLCertificateKeyFile /etc/apache2/certificados/jibri.siua.ac.cr/privkey.pem
   </VirtualHost>

   #************************************************************************
   #HTTPS://jibri.siua.ac.cr
   #************************************************************************
   <VirtualHost *:443>

        #************************************************************************
        #******************* DATOS DEL SITIO WEB ********************************
        #************************************************************************
        ServerName jibri.siua.ac.cr
        ErrorLog /var/log/apache2/jibri_443.siua.ac.cr-error.log
        CustomLog /var/log/apache2/jibri_443.siua.ac.cr-access.log common

        #************************************************************************
        #********************** DATOS DEL WEBMASTER *****************************
        #************************************************************************
        ServerAdmin interuniversitariadealajuela@gmail.com
        Header add Author "Unidad de Gestion e Innovacion Tecnologica"


        #************************************************************************
        #************************** DATOS DEL CERTIFICADO ***********************
        #************************************************************************
        SSLEngine on
        SSLCertificateFile /etc/apache2/certificados/jibri.siua.ac.cr/fullchain.pem
        SSLCertificateKeyFile /etc/apache2/certificados/jibri.siua.ac.cr/privkey.pem

        #************************************************************************
        #************************** DATOS DEL SITIO WEB *************************
        #************************************************************************
        DocumentRoot /var/www/html/conferencias/conferencias

	<Directory "/var/www/html/conferencias">
	  Options Indexes SymLinksIfOwnerMatch FollowSymLinks 
        </Directory>
  </VirtualHost>
</IfModule>
  • Creamos la carpeta
mkdir /var/www/html/conferencias
  • Luego creamos un enlace simbolico a /srv/recordings dentro de conferencias
ln -s /srv/recordings/ /var/www/html/conferencias/conferencias
  • cambiamos el usuario del enlace
chown -R jibri:www-data conferencias
  • Finalmente conamos el proyecto y lo pegamos dentro de /var/www/html/conferencias/conferencias
cd /var/www/html/conferencias/conferencias
git clone https://git.siua.ac.cr/siua/jibri.siua.ac.cr.git
  • Luego hacemos que los archivos de jibri.siua.ac.cr esten directamente dentro de
cp -R * /var/www/html/conferencias/conferencias
cd ..
rm -R jibri.siua.ac.cr/

Servidor Jitsi-meet

  • Ahora vamos a configurar jitsi-meet para soportar jibri
  • Abrimos el archivo
nano /etc/prosody/prosody.cfg.lua
nano /etc/prosody/conf.d/conferencias.siua.ac.cr.cfg.lua
  • Agregamos el siguiente codigo al final (cambiar el dominio)
-- internal muc component, meant to enable pools of jibri and jigasi clients
Component "internal.auth.conferencias.siua.ac.cr" "muc"
    modules_enabled = {
      "ping";
    }
    storage = "null"
    muc_room_cache_size = 1000

VirtualHost "recorder.conferencias.siua.ac.cr"
  modules_enabled = {
    "ping";
  }
  authentication = "internal_plain"
  • recagargamos
/etc/init.d/prosody reload
  • Ahora cremos las cuentas que jibri utilizará
prosodyctl register ugit auth.conferencias.siua.ac.cr AC2
prosodyctl register ugit recorder.conferencias.siua.ac.cr AC2
  • La primera cuenta es la que Jibri usará para iniciar sesión en el MUC de control (donde Jibri enviará su estado y esperará comandos). La segunda cuenta es la que Jibri usará como cliente en selenio cuando se una a la llamada para que pueda ser tratada de manera especial por la interfaz de usuario web de Jitsi Meet.
  • Ahora editamos
nano /etc/jitsi/jicofo/sip-communicator.properties
  • Agregamos
org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.conferencias.siua.ac.cr
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90

  • Reiniciamos
/etc/init.d/jicofo restart
  • Ahora modificamos el archivo
nano /etc/jitsi/meet/conferencias.siua.ac.cr-config.js
  • Descomentamos y modificamos
// fileRecordingsEnabled: false,
X
fileRecordingsEnabled: true,


// liveStreamingEnabled: false,
X
liveStreamingEnabled: true,

//enableNoisyMicDetection: true,
X
enableNoisyMicDetection: false,
  • Agregamos
hiddenDomain: 'recorder.conferencias.siua.ac.cr',
  • Reiniciamos servicios
/etc/init.d/jicofo restart
/etc/init.d/jitsi-videobridge2 restart
/etc/init.d/prosody restart

Personalización

  • Para personalizar ingrese a /usr/share/jitsi-meet
cd /usr/share/jitsi-meet
  • Titulo pagina
nano /usr/share/jitsi-meet/interface_config.js
  • Cambiamos
-------------------------------------------
DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster',
X
DEFAULT_REMOTE_DISPLAY_NAME: 'Nuevo Miembro',
-------------------------------------------
DEFAULT_LOCAL_DISPLAY_NAME: 'me',
X
DEFAULT_LOCAL_DISPLAY_NAME: 'Yo',
-------------------------------------------
JITSI_WATERMARK_LINK: 'https://jitsi.org',
X
JITSI_WATERMARK_LINK: '/?p=3233',
-------------------------------------------
APP_NAME: 'Jitsi Meet',
X
APP_NAME: 'Conferencias SIUA',
-------------------------------------------
NATIVE_APP_NAME: 'Jitsi Meet',
X
NATIVE_APP_NAME: 'Conferencias SIUA',
-------------------------------------------
PROVIDER_NAME: 'Jitsi',
X
PROVIDER_NAME: 'SIUA',

-------------------------------------------
LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live',
X
LIVE_STREAMING_HELP_LINK: 'https://ugit.siua.ac.cr',
-------------------------------------------
SUPPORT_URL: 'https://community.jitsi.org/',
X
SUPPORT_URL: 'https://ugit.siua.ac.cr',
-------------------------------------------
  • para modificar lso texto
nano /usr/share/jitsi-meet/lang/main-es.json
  • Modificamos
"title": "Videoconferencias seguras, con gran variedad de funcionalidades y completamente gratuitas"
X
"title": "Bienvenido, Conferencias SIUA"

-----------------------------------------------------
"appDescription": "Adelante, video chat con todo el equipo. De hecho, invita a todos los que conozcas. {{app}} es una solución de videoconferencia de código abierto de 100%, totalmente encriptada, que puede usar todo el día, todos los días, de forma gratuita, sin necesidad de contar con ninguna cuenta.",
X
"appDescription": "La Sede Interuniversitaria de Alajuela (SIUA) le da la bienvenida. El sistema '{{app}}'  es una solución de videoconferencias disponible para la comunidad universitaria de la SIUA. Para crear o unirse a una conferencia, simplemente digite el nombre de la conferencia, si esta existe, se unirá o en caso contrario se creará. Se le recomienda establecer una contraseña para la conferencia y compartirla con sus usuarios, de otra forma cualquier persona se podrá unir. Para descargar la conferencia ingrese a https://jibri.siua.ac.cr",


-----------------------------------------------------
"enterRoomTitle": "Comenzar una reunión",
X
"enterRoomTitle": "Crear o unirse a una conferencia",

-----------------------------------------------------
"setDisplayNameLabel": "Establecer nombre a mostrar",
X
"setDisplayNameLabel": "Digite su nombre",
-----------------------------------------------------
"setEmailInput": "Introducir e-mail",
X
"setEmailInput": "Digite su e-mail",
-----------------------------------------------------
"setEmailLabel": "Establecer su gravatar",
X
"setEmailLabel": "Digite su e-mail",
  • modifiicar la imagen
  • Y remplazar la /usr/share/jitsi-meet/images/watermark.png
  • Para modificar los meta data abra
nano /usr/share/jitsi-meet/title.html
  • Modifique
<title>Jitsi Meet</title>
<meta property="og:title" content="Jitsi Meet"/>
<meta property="og:image" content="images/jitsilogo.png?v=1"/>
<meta property="og:description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
<meta description="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
<meta itemprop="name" content="Jitsi Meet"/>
<meta itemprop="description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
<meta itemprop="image" content="images/jitsilogo.png?v=1"/>
<link rel="icon" type="image/png" href="images/favicon.ico?v=1"/>
X
<title>Conferencias SIUA</title>
<meta property="og:title" content="Conferencias SIUA"/>
<meta property="og:image" content="images/jitsilogo.png?v=1"/>
<meta property="og:description" content="Sistema de video conferencias SIUA"/>
<meta description="Sistema de video conferencias SIUA"/>
<meta itemprop="name" content="Conferencias SIUA"/>
<meta itemprop="description" content="Sistema de video conferencias SIUA"/>
<meta itemprop="image" content="images/jitsilogo.png?v=1"/>
<link rel="icon" type="image/png" href="images/favicon.ico?v=1"/>