Instalación de Servidor Jitsi-meet

De JitsiWiki ARIU
Revisión del 13:24 3 jul 2023 de Mzigaran (discusión | contribs.)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Instalación de Servidor web

Jitsi nos da la posibilidad de utilizar nginx o apache2

apt install apt-transport-https

instalacion de nginx

apt install nginx

instalacion de apache2

apt install apache2

Instalacion de jitsi-meet

Por defecto, Jitsi Meet no viene disponible en los repositorios de Debian 9, para ello deberemos de añadir el repositorio oficial:

wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -

Añadimos el repositorio:

sh -c "echo 'deb https://download.jitsi.org stable/'> /etc/apt/sources.list.d/jitsi.list"

Actualizamos los repositorios e instalamos el paquete necesario:

apt update
apt install jitsi-meet

Durante la instalación, tendremos que añadir nuestro hostname:


Pantalla N°1

En la siguiente pantalla podemos elegir, entre usar un certificado genérico o usar nuestros propios certificados, en el caso de usar los genéricos mas adelante se puede usar un script que viene con la aplicacion para generar certificados Let's Encrypt


Pantalla N°2

Accediendo a Jitsi Ahora tenemos Jitsi instalando. Así que si abrimos el navegador y escribimos https://jitsi.midominio.com deberemos de poder acceder y ver lo siguiente:


Pantalla N°3

pd: Jitsi tiene una aplicación para celulares, para poder usar la misma hay agregar una cadena de certificados en el servidor web, si dejamos la configuración del servidor web que genera jitsi por defecto la aplicación del celular no va a funcionar.


Parámetros a configurar:

- Editamos el archivo /usr/share/jitsi-meet/interface_config.js

DEFAULT_REMOTE_DISPLAY_NAME: 'Usuario Anónimo',

DEFAULT_LOCAL_DISPLAY_NAME: 'Yo',

SHOW_JITSI_WATERMARK: true,

JITSI_WATERMARK_LINK: 'http://www.riu.edu.ar',

APP_NAME: 'Video Conferencia RIU',

NATIVE_APP_NAME: 'Vídeo Conferencia RIU',

- Los siguientes parámetros no son necesarios modificar, pero mejoran el rendimiento de la aplicación, cuando hay mas de 15 usuarios conectados:

DISABLE_FOCUS_INDICATOR: true,

DISABLE_DOMINANT_SPEAKER_INDICATOR: true,

Editamos el archivo /usr/share/jitsi-meet/css/all.css

En este archivo podemos cambiar la marca de agua, buscamos watermark.png y lo reemplazamos por nuestro logo.

Editamos el archivo /etc/jitsi/meet/jitsi.midominio.edu.ar-config.js

Este parámetro obliga a los usuarios que ingresen a una sala a identificarse

requireDisplayName: true,

En este parámetro se selecciona el idioma por defecto

defaultLanguage: 'es',

Habilitar IPv6

useIPv6: true,

Enviar mensaje a los usuarios:

noticeMessage: 'El servicio va a entrar en mantenimiento el Lunes 27 de Abril de 2020',

En este archivo también se puede modificar parámetros para mejorar el rendimiento:

disableAudioLevels: true,

constraints: {

    video: {\\
        aspectRatio: 16 / 9,\\
        height: {\\
            ideal: 240,\\
            max: 480,\\
            min: 180\\
        }\\
    }\\
},\\

Dominio Seguro

Jitsi por defecto permite que cualquier persona cree una sala para una video conferencia, para evitar esto, es posible permitir solo usuarios autenticados para crear nuevas salas de conferencias. Cada vez que se va a crear una nueva sala, Jitsi Meet solicitará el nombre de usuario y la contraseña. Una vez creada la sala, otros podrán unirse desde un dominio anónimo. Esto es lo que debe configurarse:

Habilitar la autenticación en nuestro dominio principal:

VirtualHost "jitsi.riu.edu.ar"
    authentication = "internal_plain"

Agregue un nuevo VirtualHost con un método de inicio de sesión anónimo para los invitados:

VirtualHost "guest.jitsi.riu.edu.ar"
    authentication = "anonymous"
    c2s_require_encryption = false

(Tenga en cuenta que guest.jitsi.midominio.com es interno de jitsi, y no necesita (y no debe) crear un registro DNS para él, ni generar un certificado SSL / TLS, ni realizar ninguna configuración de servidor web. )

Editar el archivo /etc/jitsi/meet/jitsi.riu.edu.ar-config.js

var config = {
    hosts: {
   domain: 'jitsi.riu.edu.ar',
            anonymousdomain: 'guest.jitsi.riu.edu.ar',
            ...
        },
        ...
}

Al ejecutar Jicofo, especifique su dominio principal en una propiedad de configuración adicional. Jicofo aceptará solicitudes de asignación de conferencias solo del dominio autenticado.

Agregar una nueva linea en el archivo /etc/jitsi/jicofo/sip-communicator.properties:

org.jitsi.jicofo.auth.URL=XMPP:jitsi.riu.edu.ar

Crear los usuarios que van a poder crear salas de video conferencia

prosodyctl register <username> jitsi.riu.edu.ar <password>

Reinicio los servicios

systemctl restart prosody
systemctl restart jicofo

Balanceo de carga

Una instalación por defecto soporta hasta 3 vídeo conferencias simultaneas con 60 participantes, en caso que se deseen hacer mas VC simultaneas hay que agregar un videobridge mas. Por cada videobridge que le agrego a una instancia de jitsi le permito hacer 3 VC simultaneas mas.

Servidor con jitsi-meet

Para poder realizar esto se necesita otro servidor con Debian9 y en este se va a instalar el videobridge extra.

hay que habilitar las estadísticas de PubSub en el videobridge del jitsi para esto editamos el archivo /etc/jitsi/videobridge/sip-communicator.properties y agregamos las siguientes lineas:

org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=pubsub
org.jitsi.videobridge.PUBSUB_SERVICE=jitsi.riu.edu.ar
org.jitsi.videobridge.PUBSUB_NODE=sharedStatsNode

Editamos el archivo /etc/jitsi/videobridge/config y modificamos el siguiente parametro:

JVB_HOSTNAME=jitsi.riu.edu.ar

Luego editamos el archivo /etc/prosody/conf.d/jitsi.riu.edu.ar.cfg.lua y agrego las siguientes lineass dentro de VirtualHost “jitsi.midominio.com”

admins = {
   "jitsi-videobridge.jitsi.riu.edu.ar",
                "videobridge2.jitsi.riu.edu.ar",
        }

Component "jitsi-videobridge.jitsi.riu.edu.ar"
    component_secret = "lVNL#Ne@"

Component "videobridge2.jitsi.riu.edu.ar"
    component_secret = "6a0l6ale"    #Esta contraseña la sacamos de /etc/jitsi/videobridge/config del segundo debian9

Habilitamos para que el servicio prosody atienda en una IP.

component_ports = { 5347 }
component_interface = "xxx.xxx.xxx.xxx"

Nuevo servidor con jitsi-videobridge

En el nuevo servidor debian9 instalamos el paque jitsi-videobridge. para ello deberemos de añadir el repositorio oficial:

wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -

Añadimos el repositorio:

sh -c "echo 'deb https://download.jitsi.org stable/'> /etc/apt/sources.list.d/jitsi.list"

Actualizamos los repositorios e instalamos el paquete necesario:

apt update
apt install jitsi-videobridge

Editamos el archivo /etc/jitsi/videobridge/config y modificamos los siguientes parametros:

JVB_HOSTNAME=jitsi.midominio.com
JVB_HOST=jitsi.midominio.com
JVB_OPTS="--apis=rest,xmpp --subdomain=videobridge2"

Luego editamos el archivo /etc/jitsi/videobridge/sip-communicator.properties y agregamos las siguientes lineas:

org.jitsi.videobridge.AUTHORIZED_SOURCE_REGEXP=focus@auth.jitsi.riu.edu.ar/.*
org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=pubsub
org.jitsi.videobridge.PUBSUB_SERVICE=jitsi.riu.edu.ar
org.jitsi.videobridge.PUBSUB_NODE=sharedStatsNode

Habilitar Live Streaming and Record

SERVIDOR JIBRI

Instalamos la ultima version del paquete linux-image

apt install linux-image-4.9.0-12-amd64

Habilitamos los modulos ALSA loopback y nos aseguramos que carguen en el inicio:

echo "snd-aloop">> /etc/modules
modprobe snd-aloop

Chequeamos que estén funcionando:

lsmod | grep snd_aloop

Jibri requiere una instalación ffmpeg relativamente moderna con captura x11 compilada. Agregamos los repositorios de multimedia deb http://www.deb-multimedia.org stretch main contrib non-free Para poder instalar desde estos repositorios hay que instalar la firma

wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb
dpkg -i deb-multimedia-keyring_2016.8.1_all.deb

Ahora actualziamos e instalamos el paquete ffmpeg

apt update
apt install ffmpeg

Google Chrome stable & Chromedriver

Se debe usar la última versión estable de Google Chrome.

apt install curl
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 update
apt install google-chrome-stable

Agregue el archivo de políticas administradas de Chrome y establezca CommandLineFlagSecurityWarningsEnabled en falso. Ocultará advertencias en Chrome. Puedes configurarlo así:

mkdir -p /etc/opt/chrome/policies/managed
echo '{ "CommandLineFlagSecurityWarningsEnabled": false }'>>/etc/opt/chrome/policies/managed/managed_policies.json

Chromedriver también es necesario y puede instalarse así:

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

Herramientas varias necesarias

Instalación de paquetes necesarios:

apt install default-jre-headless ffmpeg curl alsa-utils icewm xdotool xserver-xorg-input-void xserver-xorg-video-dummy

Instalación y configuración de Jibri

apt install jibri

Archivo de Configuración

Editar el archivos config.json (ubicado por defecto en /etc/jitsi/jibri/config.json)

{
    "recording_directory":"/tmp/recordings",
    "finalize_recording_script_path": "/path/to/finalize_recording.sh",
    "xmpp_environments": [
   {
            "name": "prod environment",
            "xmpp_server_hosts": [
                "jitsi.riu.edu.ar"
            ],
            "xmpp_domain": "jitsi.riu.edu.ar",
            "control_login": {
                "domain": "auth.jitsi.riu.edu.ar",
                "username": "jibri",
                "password": "123456"
            },
            "control_muc": {
                "domain": "internal.auth.jitsi.riu.edu.ar",
                "room_name": "JibriBrewery",
                "nickname": "jibri-nickname"
            },
            "call_login": {
                "domain": "recorder.jitsi.riu.edu.ar",
                "username": "recorder",
                "password": "123456"
            },
            "room_jid_domain_string_to_strip_from_start": "conference.",
            "usage_timeout": "0"
        }
    ]
}

SERVIDOR JITSI

Modificar jicofo

Editar el archivo /etc/jitsi/jicofo/sip-communicator.properties y agregar las siguientes lineas:

org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.jitsi.riu.edu.ar
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90

Editamos el archivo /etc/prosody/conf.d/jitsi.midominio.com.cfg.lua y agregamos lo siguiente:

VirtualHost "recorder.jitsi.riu.edu.ar"
    modules_enabled = {
   "ping";
    }
    authentication = "internal_plain"

Creo las dos cuentas que va a utilizar jibri, las contraseñas que voy a utilizar son las mismas que puse en el archivo /etc/jitsi/jibri/config.json

prosodyctl register jibri auth.jitsi.riu.edu.ar 123456
prosodyctl register recorder recorder.jitsi.riu.edu.ar 123456

Modificamos JITSI-MEET

editamos el archivo /etc/jitsi/meet/jitsi.midominio.com.config.js

fileRecordingsEnabled: true,

liveStreamingEnabled: true,

hiddenDomain: 'recorder.jitsi.riu.edu.ar',

Autenticación LDAP

Jitsi por defecto permite que cualquier persona cree una sala para una video conferencia, para evitar esto, es posible permitir solo usuarios autenticados para crear nuevas salas de conferencias. Cada vez que se va a crear una nueva sala, Jitsi Meet solicitará el nombre de usuario y la contraseña. Una vez creada la sala, otros podrán unirse desde un dominio anónimo.

Primero instalamos los módulos necesarios:

apt install prosody-modules lua-ldap

Creamos el archivo /etc/prosody/conf.avail/ldap.cfg.lua y dentro del mismo ponemos lo siguiente:

-- https://modules.prosody.im/mod_lib_ldap.html
-- https://modules.prosody.im/mod_auth_ldap2.html
authentication = 'ldap2'

ldap = {
    hostname = 'ldap.riu.edu.ar',
    bind_dn = 'cn=admin,dc=riu,dc=edu,dc=ar',
    bind_password = 'Contraseña',
    use_tls = true,
    user = {
   usernamefield = 'uid',
        basedn = 'dc=riu,dc=edu,dc=ar',
        filter = '(objectClass=*)',
    -- admin?
        namefield = 'cn',
    },
}

Creo un link de la configuración al directorio config

ln -sf /etc/prosody/conf.avail/ldap.cfg.lua /etc/prosody/conf.d/

Habilitar la autenticación en nuestro dominio principal:

VirtualHost "jitsi.riu.edu.ar"
    authentication = "ldap2"

Agregue un nuevo VirtualHost con un método de inicio de sesión anónimo para los invitados:

VirtualHost "guest.jitsi.riu.edu.ar"
    authentication = "anonymous"
    c2s_require_encryption = false

(Tenga en cuenta que guest.jitsi.midominio.com es interno de jitsi, y no necesita (y no debe) crear un registro DNS para él, ni generar un certificado SSL / TLS, ni realizar ninguna configuración de servidor web. )

Editar el archivo /etc/jitsi/meet/jitsi.midominio.com-config.js

var config = {
    hosts: {
   domain: 'jitsi.riu.edu.ar',
            anonymousdomain: 'guest.jitsi.riu.edu.ar',
            ...
        },
        ...
}

Al ejecutar Jicofo, especifique su dominio principal en una propiedad de configuración adicional. Jicofo aceptará solicitudes de asignación de conferencias solo del dominio autenticado.

Agregar una nueva linea en el archivo /etc/jitsi/jicofo/sip-communicator.properties:

org.jitsi.jicofo.auth.URL=XMPP:jitsi.riu.edu.ar