- Instalación de Jitsi Meet en conetenedor Debian 10
- guias:
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
- Ya con esto podemos ingresar:
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/
- Para descarga de videos: https://jibri.siua.ac.cr/
- Para la administración de videos https://jibri.siua.ac.cr/admin.php
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"/>