Resources
- Memoria Ram: 32768 / 32GB
- Swap: 2048 / 2GB
Network
DNS
Options
Firewall
Actualización del servidor
apt update
apt upgrade
Configuración de rutas estáticas
- Para el funcionamiento correcto de la redes el servidor debe almacenar las siguientes rutas estáticas
- Abrimos el servidor
nano /etc/systemd/network/eth0.network
- Contenido:
[Match]
Name = eth0
[Network]
Description = Interface eth0 autoconfigured by PVE
Address = 10.20.200.74/24
DHCP = no
IPv6AcceptRA = false
- Agregamos
[Route]
Gateway=10.20.200.1
Destination=10.20.200.0/24
[Route]
Gateway=10.20.200.1
Destination=10.30.240.0/24
- para mantener esta configuración debemos crear el siguiente archivo para que proxmox no rescriba la información
touch .pve-ignore.eth0.network
ls -la
- Reiniciamos el servidor para comprobar
- Ejecutamos
netstat -rn
- Resultado:
0.0.0.0 181.193.87.1 0.0.0.0 UG 0 0 0 net1
10.20.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.20.200.0 10.20.200.1 255.255.255.0 UG 0 0 0 eth0
10.30.240.0 10.20.200.1 255.255.255.0 UG 0 0 0 eth0
181.193.87.0 0.0.0.0 255.255.255.240 U 0 0 0 net1
Aplicamos la guía de seguridad V2
Instalación de jitsi
- Instalación de Jitsi Meet en contenedor Ubuntu 20.04
- guias:
Instalación de dependencias
- Instalamos sudo y dependencias
apt install ssh gnupg2 nginx-full sudo curl wget apt-transport-https software-properties-common -y
- Instalamos jaja
sudo apt install default-jre -y
- Verificamos
java -version
# Resultado
openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
- Jitsi requiere dependencias de Ubuntu universe, así que:
sudo apt-add-repository universe
sudo apt update
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: b354c482f7cc342776f020ee5ea440c3
Boot ID: 6d42e953f2cc4c288096830005ffbdb8
Virtualization: lxc
Operating System: Ubuntu 20.04.3 LTS
Kernel: Linux 5.4.78-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 Repositorios
- Prosody
echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list
wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -
- 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
- El instalador verificará si el servidor tiene nginx o apache instalado en ese orden
- Instalamos JITSI MEET
sudo apt install jitsi-meet -y
- 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 detrás de NAT (no aplica)
- 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
- ARCHIVO QUEDA ASÍ:
org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true
#org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443
org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc
org.jitsi.videobridge.xmpp.user.shard.HOSTNAME=localhost
org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.conferencias.siua.ac.cr
org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=PASSSSSSSSSSSS
org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.conferencias.siua.ac.cr
org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=94173669-4daf-4ba5-a7a1-4f77f517d89f
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=10.20.200.74
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=186.15.227.78
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=65000
DefaultTasksMax=65000
- ARCHIVO QUEDANDO ASÍ:
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See systemd-system.conf(5) for details.
[Manager]
#LogLevel=info
#LogTarget=journal-or-kmsg
#LogColor=yes
#LogLocation=no
#DumpCore=yes
#ShowStatus=yes
#CrashChangeVT=no
#CrashShell=no
#CrashReboot=no
#CtrlAltDelBurstAction=reboot-force
#CPUAffinity=1 2
#JoinControllers=cpu,cpuacct net_cls,net_prio
#RuntimeWatchdogSec=0
#ShutdownWatchdogSec=10min
#CapabilityBoundingSet=
#SystemCallArchitectures=
#TimerSlackNSec=
#DefaultTimerAccuracySec=1min
#DefaultStandardOutput=journal
#DefaultStandardError=inherit
#DefaultTimeoutStartSec=90s
#DefaultTimeoutStopSec=90s
#DefaultRestartSec=100ms
#DefaultStartLimitIntervalSec=10s
#DefaultStartLimitBurst=5
#DefaultEnvironment=
#DefaultCPUAccounting=no
#DefaultIOAccounting=no
#DefaultIPAccounting=no
#DefaultBlockIOAccounting=no
#DefaultMemoryAccounting=no
#DefaultTasksAccounting=yes
#DefaultTasksMax=
#DefaultLimitCPU=
#DefaultLimitFSIZE=
#DefaultLimitDATA=
#DefaultLimitSTACK=
#DefaultLimitCORE=
#DefaultLimitRSS=
#DefaultLimitNOFILE=
#DefaultLimitAS=
#DefaultLimitNPROC=
#DefaultLimitMEMLOCK=
#DefaultLimitLOCKS=
#DefaultLimitSIGPENDING=
#DefaultLimitMSGQUEUE=
#DefaultLimitNICE=
#DefaultLimitRTPRIO=
#DefaultLimitRTTIME=
#IPAddressAllow=
#IPAddressDeny=
DefaultLimitNOFILE=65000
DefaultLimitNPROC=65000
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:
Desinstalar ( Si da error)
sudo apt purge jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-turnserver jitsi-meet-web jicofo jitsi-videobridge2
Log de error
/var/log/jitsi/jvb.log
/var/log/jitsi/jicofo.log
/var/log/prosody/prosody.log
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
Habilitar Speaker Stats
- Abrimos
nano /etc/prosody/conf.avail/conferencias.siua.ac.cr.cfg.lua
- Verificamos que tenga
Instalar Jibri para live stremming y recording MV Ubuntu 18.04
GUIA: https://github.com/jitsi/jibri
Máquina virtual
- NOTA: Debe se máquina virtual xq contenedor no sirve por que no se pueden activar los módulos del kernel
login: ugit
#Cambiar password root
sudo su
su root
passwd root
New: CA3
#Actualizar
apt update
apt upgrade
Firewall
- Debemos habilitar los puertos en firewall
- SSH (22/44)
- Web 80 y 443 (TCP)
- 10000:60000 (TCP/UDP)
- 5222 y 5347
Dependencias
apt install unzip gnupg2 -y
Instalación
- 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 -y
- 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/bionic-prop
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ffmpeg -y
Google Chrome stable & Chromedriver
- 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 update && apt install google-chrome-stable -y
- Para ocultar el Warning que nos sacará Chrome que grabará la sesión: “Chrome is being controlled by automated test software” lo indicaremos mediante una preferencia:
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
mv -f ~/chromedriver /usr/local/bin/chromedriver
chown root:root /usr/local/bin/chromedriver
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 xserver-xorg-video-dummy ruby-hocon
Instalamos java 8
- Instalamos java 8 (Jibri solo funciona con java 8)
sudo apt-get install openjdk-8-jre -y
sudo apt-get install openjdk-8-jdk -y
- Verificamos
java -version
# Resultado (Nos da otra que es la 11)
openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
- Le indicamos al sistema que versión de java vamos a usar java 8
update-alternatives --config java
- En este caso seleccionamos la 2 java 8
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
- Creamos la variable JAVA_HOME con ‘nano ~/.bashrc’, la añadimos al final del fichero, y tras grabar el fichero saldremos de sesión y volveremos a cargar para confirmar que la variable se carga (con un simple ‘echo $JAVA_HOME’).
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
- Volvemos a verficar
java -version
# Resultado
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-0ubuntu1~18.04-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
- Ahora copiamos el archivo
cp /opt/jitsi/jibri/launch.sh /opt/jitsi/jibri/launch.sh.bak
- Abrimos y remplazamos la palabra «java» por la ruta completa
nano /opt/jitsi/jibri/launch.sh
- Remplazamos
#!/bin/bash
exec java -Djava.util.logging.config.file=/etc/jitsi/jibri/logging.properties -Dconfig.file="/etc/jitsi/jibri/jibri.conf" -jar /opt/jitsi/jibri/jibri.jar --config "/etc/jitsi/jibri/config.json"
X
#!/bin/bash
exec /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -Djava.util.logging.config.file=/etc/jitsi/jibri/logging.properties -Dconfig.file="/etc/jitsi/jibri/jibri.conf" -jar /opt/jitsi/jibri/jibri.jar --config "/etc/jitsi/jibri/config.json"
Instalación de jibri
- Agregamos el repositorio de Jitsi
curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
- Ceamos un sources.list.d
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
- 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ó
ls /var/log/jitsi/jibri
- Ahora respaldamos el archivo de configuración
cp /etc/jitsi/jibri/jibri.conf /etc/jitsi/jibri/jibri.conf.bak
- Ahora abrimos el siguiente archivo para configurarlo
nano /etc/jitsi/jibri/jibri.conf
- Eliminamos todo y agregamos
jibri {
id = ""
single-use-mode = false
recording {
recordings-directory = "/srv/recordings"
finalize-script = "/srv/recordings/finalize_recording.sh"
}
streaming {
rtmp-allow-list = [
".*"
]
}
chrome {
flags = [
// "--ignore-certificate-errors",
"--use-fake-ui-for-media-stream",
"--start-maximized",
"--kiosk",
"--enabled",
"--disable-infobars",
"--autoplay-policy=no-user-gesture-required"
]
}
ffmpeg {
resolution = "1920x1080"
audio-source = "alsa"
audio-device = "plug:bsnoop"
}
api {
http {
external-api-port = 2222
internal-api-port = 3333
}
xmpp {
environments = [{
name = "eb-environment"
xmpp-server-hosts = ["conferencias.siua.ac.cr"]
xmpp-domain = "conferencias.siua.ac.cr"
control-muc {
domain = "internal.auth.conferencias.siua.ac.cr"
room-name = "JibriBrewery"
nickname = "jibri-nickname"
}
control-login {
domain = "auth.conferencias.siua.ac.cr"
username = "jibri"
password = "AC2"
}
call-login {
domain = "recorder.conferencias.siua.ac.cr"
username = "recorder"
password = "AC2"
}
strip-from-room-domain = "conference."
usage-timeout = 0
trust-all-xmpp-certs = true
}]
}
}
stats {
enable-stats-d = true
}
call-status-checks {
no-media-timeout = 30 seconds
all-muted-timeout = 10 minutes
default-call-empty-timeout = 30 seconds
}
}
- Creamos la carpeta
mkdir /srv/recordings
- Creamos el archivo que se va ejecutar después de terminar una grabación
nano /srv/recordings/finalize_recording.sh
- Le agregamos el siguiente contenido, esto por que jibri crea carpetas con nombres aleatorios, entonces para queden con el nombre de la conferencias, modificamos el nombre de la carpeta al finalizar la grabación
#!/bin/bash
#Recibimos el directorio donde se almaceno el video
nombreDirectorioAnterior=$1
#Ingresamos al directorio pasado como parametro
cd $nombreDirectorioAnterior
#Listamos los archivos que tengan extensión .mp4 y se lo asignamos a la variable
nombreVideo=$(ls *.mp4)
#Cortamos la extesión del archivo
nombreCarpeta=$(echo "$nombreVideo" | cut -f 1 -d '.')
#Nos devolvemos un nivel en los directorio
cd ..
#Renombramos la carpeta
mv $nombreDirectorioAnterior "/srv/recordings/siuaCONFE_"$nombreCarpeta
exit 0
- Y le asignamos un dueño
chown jibri:jitsi /srv/recordings/
- Le damos permisos
chmod 777 -R /srv/recordings/finalize_recording.sh
- Agreamos el usuario www-data al grupo jibri para que se puedan eliminar conferencias desde la web (hay que revisar)
usermod -a -G www-data jibri
usermod -a -G jibri www-data
setfacl -d -m u:jibri:rwx,u:www-data:rwx /srv/recordings/
chmod -R 775 /var/www/html/conferencias/conferencias
- Reiniciamos el servicio
service jibri restart
service jibri status
- Habilitamos 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
# Instalamos php
apt install apache2 php libapache2-mod-php php-mysql
#Para instalar php-mcrypt
sudo apt-get install gcc make autoconf libc-dev pkg-config
sudo apt-get install php7.2-dev libmcrypt-dev
# Abrimos
sudo nano /etc/php/7.2/apache2/php.ini
# Buscamos las extensiones y agregamos
extension=mcrypt.so
#Reiniciamos apache2
sudo service apache2 restart
- Habilitamos UTF-8
nano /etc/apache2/conf-available/charset.conf
#Descomentamos
AddDefaultCharset UTF-8
- Como las conferencias pueden pesar bastante es necesario modificar el archivo php.ini para que de soporte a la descarga de archivos grandes, abrimos el archivo
nano /etc/php/7.2/apache2/php.ini
- Modificamos los siguientes valores
max_execution_time = 30
X
max_execution_time = 300000
memory_limit = 128M
X
memory_limit = 1024M
- Instalamos módulos
a2enmod ssl
a2enmod headers
service apache2 restart
- Ahora creamos las carpetas para almacenar los certificados
mkdir -p /etc/apache2/certificados/jibri.siua.ac.cr
Proxy
- Ahora ingresamos a proxy y le pasamos la llave ssh al servidor jibri, según guía /?p=6396
- Ahora pasamos del proxy los certificados
scp -P 44 -r /etc/letsencrypt/live/jibri.siua.ac.cr/fullchain.pem root@10.20.200.75:/etc/apache2/certificados/jibri.siua.ac.cr/fullchain.pem
scp -P 44 -r /etc/letsencrypt/live/jibri.siua.ac.cr/privkey.pem root@10.20.200.75:/etc/apache2/certificados/jibri.siua.ac.cr/privkey.pem
JIBRI
- 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/conferencias">
Options Indexes SymLinksIfOwnerMatch FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
</IfModule>
- Activamos los sitios
a2ensite jibri.siua.ac.cr.conf
a2ensite jibri.siua.ac.cr-le-ssl.conf
service apache2 reload
- 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
- Ingresamos al directorio
cd /var/www/html/conferencias/
- cambiamos el usuario del enlace
chown -R jibri:www-data conferencias
- Finalmente clonamos 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
cd jibri.siua.ac.cr
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/conf.d/conferencias.siua.ac.cr.cfg.lua
- Agregamos el siguiente codigo al final (cambiar el dominio)
Component "internal.auth.conferencias.siua.ac.cr" "muc"
modules_enabled = {
"ping";
}
storage = "internal"
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 jibri auth.conferencias.siua.ac.cr AC2
prosodyctl register recorder 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.
- Podemos ver los usuarios creados para auth y recorder en
cd /var/lib/prosody/auth%2econferencias%2esiua%2eac%2ecr/accounts/
cd /var/lib/prosody/recorder%2econferencias%2esiua%2eac%2ecr/
- Añadimos estas 2 linas al final de /etc/jitsi/jicofo/sip-communicator.properties para localizar los controladores Jibri:
nano /etc/jitsi/jicofo/sip-communicator.properties
- Agregamos al final
org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.conferencias.siua.ac.cr
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90
org.jitsi.jicofo.HEALTH_CHECK_INTERVAL=-1
- Reiniciamos
/etc/init.d/jicofo restart
- Ahora modificamos el archivo para habilitar las grabaciones
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
- Actualizamos certificados
sudo update-ca-certificates -f
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_LOCAL_DISPLAY_NAME: 'me',
X
DEFAULT_LOCAL_DISPLAY_NAME: 'Yo',
-------------------------------------------
DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster',
X
DEFAULT_REMOTE_DISPLAY_NAME: 'Nuevo Miembro',
-------------------------------------------
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',
-------------------------------------------
- ARCHIVO QUEDANDO ASÍ
/* eslint-disable no-unused-vars, no-var, max-len */
/* eslint sort-keys: ["error", "asc", {"caseSensitive": false}] */
var interfaceConfig = {
APP_NAME: 'Conferencias SIUA',
AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(255,255,255,0.4)',
AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(255,255,255,0.2)',
/**
* A UX mode where the last screen share participant is automatically
* pinned. Valid values are the string "remote-only" so remote participants
* get pinned but not local, otherwise any truthy value for all participants,
* and any falsy value to disable the feature.
*
* Note: this mode is experimental and subject to breakage.
*/
AUTO_PIN_LATEST_SCREEN_SHARE: 'remote-only',
BRAND_WATERMARK_LINK: '',
CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it
/**
* Whether the connection indicator icon should hide itself based on
* connection strength. If true, the connection indicator will remain
* displayed while the participant has a weak connection and will hide
* itself after the CONNECTION_INDICATOR_HIDE_TIMEOUT when the connection is
* strong.
*
* @type {boolean}
*/
CONNECTION_INDICATOR_AUTO_HIDE_ENABLED: true,
/**
* How long the connection indicator should remain displayed before hiding.
* Used in conjunction with CONNECTION_INDICATOR_AUTOHIDE_ENABLED.
*
* @type {number}
*/
CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT: 5000,
/**
* If true, hides the connection indicators completely.
*
* @type {boolean}
*/
CONNECTION_INDICATOR_DISABLED: false,
DEFAULT_BACKGROUND: '#474747',
DEFAULT_LOCAL_DISPLAY_NAME: 'Yo',
DEFAULT_LOGO_URL: 'images/watermark.png',
DEFAULT_REMOTE_DISPLAY_NAME: 'Nuevo miembro',
DISABLE_DOMINANT_SPEAKER_INDICATOR: false,
DISABLE_FOCUS_INDICATOR: false,
/**
* If true, notifications regarding joining/leaving are no longer displayed.
*/
DISABLE_JOIN_LEAVE_NOTIFICATIONS: false,
/**
* If true, presence status: busy, calling, connected etc. is not displayed.
*/
DISABLE_PRESENCE_STATUS: false,
/**
* Whether the ringing sound in the call/ring overlay is disabled. If
* {@code undefined}, defaults to {@code false}.
*
* @type {boolean}
*/
DISABLE_RINGING: false,
/**
* Whether the speech to text transcription subtitles panel is disabled.
* If {@code undefined}, defaults to {@code false}.
*
* @type {boolean}
*/
DISABLE_TRANSCRIPTION_SUBTITLES: false,
/**
* Whether or not the blurred video background for large video should be
* displayed on browsers that can support it.
*/
DISABLE_VIDEO_BACKGROUND: false,
DISPLAY_WELCOME_PAGE_CONTENT: true,
DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: false,
ENABLE_DIAL_OUT: true,
ENABLE_FEEDBACK_ANIMATION: false, // Enables feedback star animation.
FILM_STRIP_MAX_HEIGHT: 120,
/**
* Whether to only show the filmstrip (and hide the toolbar).
*/
filmStripOnly: false,
GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true,
/**
* Hide the invite prompt in the header when alone in the meeting.
*/
HIDE_INVITE_MORE_HEADER: false,
INITIAL_TOOLBAR_TIMEOUT: 20000,
JITSI_WATERMARK_LINK: '/?p=3233',
LANG_DETECTION: true, // Allow i18n to detect the system language
LIVE_STREAMING_HELP_LINK: 'https://ugit.siua.ac.cr', // Documentation reference for the live streaming feature.
LOCAL_THUMBNAIL_RATIO: 16 / 9, // 16:9
/**
* Maximum coefficient of the ratio of the large video to the visible area
* after the large video is scaled to fit the window.
*
* @type {number}
*/
MAXIMUM_ZOOMING_COEFFICIENT: 1.3,
/**
* Whether the mobile app Jitsi Meet is to be promoted to participants
* attempting to join a conference in a mobile Web browser. If
* {@code undefined}, defaults to {@code true}.
*
* @type {boolean}
*/
MOBILE_APP_PROMO: true,
NATIVE_APP_NAME: 'Conferencias SIUA',
// Names of browsers which should show a warning stating the current browser
// has a suboptimal experience. Browsers which are not listed as optimal or
// unsupported are considered suboptimal. Valid values are:
// chrome, chromium, edge, electron, firefox, nwjs, opera, safari
OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'nwjs', 'electron', 'safari' ],
POLICY_LOGO: null,
PROVIDER_NAME: 'SIUA',
/**
* If true, will display recent list
*
* @type {boolean}
*/
RECENT_LIST_ENABLED: true,
REMOTE_THUMBNAIL_RATIO: 1, // 1:1
SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar' ],
SHOW_BRAND_WATERMARK: false,
/**
* Decides whether the chrome extension banner should be rendered on the landing page and during the meeting.
* If this is set to false, the banner will not be rendered at all. If set to true, the check for extension(s)
* being already installed is done before rendering.
*/
SHOW_CHROME_EXTENSION_BANNER: false,
SHOW_DEEP_LINKING_IMAGE: false,
SHOW_JITSI_WATERMARK: true,
SHOW_POWERED_BY: false,
SHOW_PROMOTIONAL_CLOSE_PAGE: false,
SHOW_WATERMARK_FOR_GUESTS: true, // if watermark is disabled by default, it can be shown only for guests
/*
* If indicated some of the error dialogs may point to the support URL for
* help.
*/
SUPPORT_URL: 'https://ugit.siua.ac.cr',
TOOLBAR_ALWAYS_VISIBLE: false,
/**
* The name of the toolbar buttons to display in the toolbar, including the
* "More actions" menu. If present, the button will display. Exceptions are
* "livestreaming" and "recording" which also require being a moderator and
* some values in config.js to be enabled. Also, the "profile" button will
* not display for users with a JWT.
* Notes:
* - it's impossible to choose which buttons go in the "More actions" menu
* - it's impossible to control the placement of buttons
* - 'desktop' controls the "Share your screen" button
*/
TOOLBAR_BUTTONS: [
'microphone', 'camera', 'closedcaptions', 'desktop', 'fullscreen',
'fodeviceselection', 'hangup', 'profile', 'chat', 'recording',
'livestreaming', 'etherpad', 'sharedvideo', 'settings', 'raisehand',
'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts',
'tileview', 'videobackgroundblur', 'download', 'help', 'mute-everyone', 'security'
],
TOOLBAR_TIMEOUT: 4000,
// Browsers, in addition to those which do not fully support WebRTC, that
// are not supported and should show the unsupported browser page.
UNSUPPORTED_BROWSERS: [],
/**
* Whether to show thumbnails in filmstrip as a column instead of as a row.
*/
VERTICAL_FILMSTRIP: true,
// Determines how the video would fit the screen. 'both' would fit the whole
// screen, 'height' would fit the original video height to the height of the
// screen, 'width' would fit the original video width to the width of the
// screen respecting ratio.
VIDEO_LAYOUT_FIT: 'both',
/**
* If true, hides the video quality label indicating the resolution status
* of the current large video.
*
* @type {boolean}
*/
VIDEO_QUALITY_LABEL_DISABLED: false,
/**
* When enabled, the kick participant button will not be presented for users without a JWT
*/
// HIDE_KICK_BUTTON_FOR_GUESTS: false,
/**
* How many columns the tile view can expand to. The respected range is
* between 1 and 5.
*/
// TILE_VIEW_MAX_COLUMNS: 5,
/**
* Specify custom URL for downloading android mobile app.
*/
// MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=org.jitsi.meet',
/**
* Specify URL for downloading ios mobile app.
*/
// MOBILE_DOWNLOAD_LINK_IOS: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905',
/**
* Specify Firebase dynamic link properties for the mobile apps.
*/
// MOBILE_DYNAMIC_LINK: {
// APN: 'org.jitsi.meet',
// APP_CODE: 'w2atb',
// CUSTOM_DOMAIN: undefined,
// IBI: 'com.atlassian.JitsiMeet.ios',
// ISI: '1165103905'
// },
/**
* Specify mobile app scheme for opening the app from the mobile browser.
*/
// APP_SCHEME: 'org.jitsi.meet',
/**
* Specify the Android app package name.
*/
// ANDROID_APP_PACKAGE: 'org.jitsi.meet',
/**
* Override the behavior of some notifications to remain displayed until
* explicitly dismissed through a user action. The value is how long, in
* milliseconds, those notifications should remain displayed.
*/
// ENFORCE_NOTIFICATION_AUTO_DISMISS_TIMEOUT: 15000,
// List of undocumented settings
/**
INDICATOR_FONT_SIZES
PHONE_NUMBER_REGEX
*/
// Allow all above example options to include a trailing comma and
// prevent fear when commenting out the last value.
// eslint-disable-next-line sort-keys
makeJsonParserHappy: 'even if last key had a trailing comma'
// No configuration value should follow this line.
};
/* eslint-enable no-unused-vars, no-var, max-len */
- 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",
- ARCHIVO QUEDANDO ASÍ:
{
"addPeople": {
"add": "Invitar",
"addContacts": "Invitar a sus contactos",
"copyInvite": "Copiar la invitación a la reunión",
"copyLink": "Copiar el link de la reunión",
"copyStream": "Copiar el link de la transmisión en vivo",
"countryNotSupported": "Aun no contamos con soporte a este destino.",
"countryReminder": "¿Llamando fuera de los Estados Unidos? ¡Por favor, asegúrese de empezar con el código de país!",
"defaultEmail": "Dirección de correo por defecto",
"disabled": "No puede invitar a otras personas.",
"failedToAdd": "Error al agregar participantes",
"footerText": "La marcación está desactivada.",
"googleEmail": "Correo electrónico de Google",
"inviteMoreHeader": "Usted se encuentra solo en la reunión",
"inviteMoreMailSubject": "Unirse a la reunion {{appName}}",
"inviteMorePrompt": "Invitar a más personas",
"linkCopied": "Link copiado al portapapeles",
"loading": "Buscando por contacto y número telefónico",
"loadingNumber": "Validando el número telefónico",
"loadingPeople": "Buscando contactos a invitar",
"noResults": "No se encontraron coincidencias",
"noValidNumbers": "Por favor ingrese un número de teléfono",
"outlookEmail": "Correo de Outlook",
"searchNumbers": "Agregar números telefónicos",
"searchPeople": "Búscar personas",
"searchPeopleAndNumbers": "Buscar personas o añadir sus números de teléfono",
"shareInvite": "Compartir la invitación a la reunión",
"shareLink": "Compartir el link de la reunion",
"shareStream": "Compartie el link de la transmición en vivo",
"telephone": "Teléfono: {{number}}",
"title": "Invitar a otras personas a esta reunión",
"yahooEmail": "Correo de Yahoo"
},
"audioDevices": {
"bluetooth": "Bluetooth",
"headphones": "Auriculares",
"phone": "Teléfono",
"speaker": "Altavoz",
"none": "No hay dispositivos de audio disponibles"
},
"audioOnly": {
"audioOnly": "Bajo consumo de Ancho de Banda"
},
"calendarSync": {
"addMeetingURL": "Agregar un vínculo a la reunión",
"confirmAddLink": "¿Quiere añadir un enlace de Jitsi a este evento?",
"error": {
"appConfiguration": "La integración del calendario no está configurada correctamente",
"generic": "Se ha producido un error. Compruebe la configuración del calendario o pruebe cargarlo nuevamente.",
"notSignedIn": "Se ha producido un error de autenticación para ver los eventos del calendario. Compruebe la configuración del calendario e intente iniciar sesión de nuevo"
},
"join": "Unirse",
"joinTooltip": "Unirse a la reunión",
"nextMeeting": "próxima reunión",
"noEvents": "No hay eventos próximos programados.",
"ongoingMeeting": "reunión en curso",
"permissionButton": "Abrir ajustes",
"permissionMessage": "Los permisos al calendario son necesarios para ver sus reuniones en la aplicación.",
"refresh": "Actualizar calendario",
"today": "Hoy"
},
"chat": {
"error": "Error: su mensaje no se envío. Motivo: {{error}}",
"fieldPlaceHolder": "Escriba su mensaje aquí",
"messagebox": "Escriba un mensaje",
"messageTo": "Mensaje privado para {{recipient}}",
"noMessagesMessage": "No hay mensajes en la reunión. ¡Inicie una conversación!",
"nickname": {
"popover": "Seleccione un apodo",
"title": "Introduzca un apodo para usar el chat"
},
"privateNotice": "Mensaje privado para {{recipient}}",
"title": "Chat",
"you": "usted"
},
"chromeExtensionBanner": {
"installExtensionText": "Instalar la extensión para Google Calendar y la integración con Office 365",
"buttonText": "Instalar extensión de Chrome",
"dontShowAgain": "No mostrar nuevamente"
},
"connectingOverlay": {
"joiningRoom": "Conectándose a su reunión…"
},
"connection": {
"ATTACHED": "Adjunto",
"AUTHENTICATING": "Autenticando",
"AUTHFAIL": "Falló la autenticación",
"CONNECTED": "Conectado",
"CONNECTING": "Conectando",
"CONNFAIL": "Conexión fallida",
"DISCONNECTED": "Desconectado",
"DISCONNECTING": "Desconectando",
"ERROR": "Error",
"RECONNECTING": "Ocurrió un problema en la red. Reconectando...",
"FETCH_SESSION_ID": "Obteniendo session-ID…",
"GET_SESSION_ID_ERROR": "Obtener session-id error: {{code}}",
"GOT_SESSION_ID": "Obteniendo session-ID… Listo",
"LOW_BANDWIDTH": "Video para {{displayName}} ha sido deshabilitado para economizar ancho de banda"
},
"connectionindicator": {
"address": "Dirección:",
"bandwidth": "Ancho de banda estimado:",
"bitrate": "Tasa de transferencia:",
"bridgeCount": "Contador del servidor: ",
"connectedTo": "Conectado a:",
"e2e_rtt": "E2E RTT:",
"framerate": "Fotogramas por segundo:",
"less": "Mostrar menos",
"localaddress": "Dirección local:",
"localaddress_plural": "Direcciones locales:",
"localport": "Puerto local:",
"localport_plural": "Puertos locales:",
"more": "Mostrar más",
"packetloss": "Pérdida de paquetes:",
"quality": {
"good": "Bueno",
"inactive": "Inactivo",
"lost": "Perdido",
"nonoptimal": "No óptimo",
"poor": "Pobre"
},
"remoteaddress": "Dirección remota:",
"remoteaddress_plural": "Direcciones remotas:",
"remoteport": "Puerto remoto:",
"remoteport_plural": "Puertos remotos:",
"resolution": "Resolución:",
"status": "Estado:",
"transport": "Transporte:",
"transport_plural": "Transportes:"
},
"dateUtils": {
"earlier": "Anterior",
"today": "Hoy",
"yesterday": "Ayer"
},
"deepLinking": {
"appNotInstalled": "Necesita la aplicación móvil {{app}} para unirse a esta reunión en su teléfono.",
"description": "¿No pasó nada? Hemos intentado iniciar su reunión en la aplicación de escritorio {{app}}. intente de nuevo o inicie en la aplicación web {{app}}.",
"descriptionWithoutWeb": "¿No pasó nada? Intentamos iniciar su reunión en la aplicación de escritorio {{app}}.",
"downloadApp": "Descargar la app",
"launchWebButton": "Iniciar en web",
"ifDoNotHaveApp": "Si aún no tienes la app:",
"ifHaveApp": "Si ya tienes la app:",
"joinInApp": "Unirse a la reunion usando la app",
"launchWebButton": "Iniciar en la Web",
"openApp": "Continuar a la aplicación",
"title": "Iniciar su reunión en {{app}}…",
"tryAgainButton": "Intentar de nuevo en el escritorio"
},
"defaultLink": "ej. {{url}}",
"defaultNickname": "ej. Juana Rosas",
"deviceError": {
"cameraError": "Error al acceder a su cámara",
"cameraPermission": "Error al obtener permiso de la cámara",
"microphoneError": "Error al acceder a tu micrófono",
"microphonePermission": "Error al obtener permiso del micrófono"
},
"deviceSelection": {
"noPermission": "Permiso no concedido",
"previewUnavailable": "Vista previa no disponible",
"selectADevice": "Seleccionar un dispositivo",
"testAudio": "Reproducir un sonido de prueba"
},
"dialog": {
"accessibilityLabel": {
"liveStreaming": "Transmisión en Vivo"
},
"allow": "Permitir",
"alreadySharedVideoMsg": "Otro participante esta compartiendo un video. Esta conferencia solo permite compartir un video a la vez.",
"alreadySharedVideoTitle": "Solo se permite un video compartido a la vez",
"applicationWindow": "Ventana de aplicación",
"Back": "Anterior",
"cameraConstraintFailedError": "Su cámara no satisface algunos de los requerimientos.",
"cameraNotFoundError": "No se encontró la cámara.",
"cameraNotSendingData": "No podemos acceder a su cámara. Verifique si otra aplicación está usando este dispositivo, seleccione otro dispositivo en el menú de configuración o intente volver a cargar la aplicación.",
"cameraNotSendingDataTitle": "No se puede acceder a la cámara",
"cameraPermissionDeniedError": "No ha otorgado permisos para usar su cámara. Puede unirse a la conferencia, pero no lo podrán ver. Utilice el botón en la barra de dirección para solucionar esto.",
"cameraUnknownError": "No se puede usar su cámara por motivos desconocidos.",
"cameraUnsupportedResolutionError": "Su cámara no soporta la resolución de video.",
"Cancel": "Cancelar",
"close": "Cerrar",
"conferenceDisconnectMsg": "Es posible que desee comprobar la conexión de red. Reconectando en {{seconds}} segundos…",
"conferenceDisconnectTitle": "Ha sido desconectado.",
"conferenceReloadMsg": "Estamos tratando de arreglar esto. Reconectando en {{seconds}} segundos…",
"conferenceReloadTitle": "Desafortunadamente, algo salió mal.",
"confirm": "Confirmar",
"confirmNo": "No",
"confirmYes": "Sí",
"connectError": "¡Oops! Algo salio mal y no fue posible conectarnos a la conferencia.",
"connectErrorWithMsg": "¡Oops! Algo salio mal y no fue posible conectarnos a la conferencia: {{msg}}",
"connecting": "Conectando",
"contactSupport": "Contacte al soporte técnico",
"copy": "Copiar",
"dismiss": "Descartar",
"displayNameRequired": "¡Hola! ¿Cuál es tu nombre?",
"done": "Listo",
"e2eeDescription": "El cifrado Extremo-a-Extremo es actualmente EXPERIMENTAL. Tenga en cuenta que activar el cifrado extremo-a-extremo puede deshabilitar servicios en el servidor como: grabación, transmisión en vivo y participación telefónica. Sin embargo tenga en cuenta que esta reunion solo funcionará con personas que se unan usando un navegador.",
"e2eeWarning": "ATENCION: No todos los participantes de esta reunión soportan cifrado Extremo-a-Extremo. Si usted habilita el cifrado ellos no podrán verlo ni oirlo.",
"enterDisplayName": "Por favor ingresa tu nombre aquí",
"error": "Error",
"externalInstallationMsg": "Necesita instalar nuestra extensión para compartir escritorio.",
"externalInstallationTitle": "Extensión requerida",
"goToStore": "Ir al webstore",
"gracefulShutdown": "Nuestro servicio se encuentra en mantenimiento. Por favor, intente más tarde.",
"IamHost": "Yo soy el anfitrión",
"incorrectRoomLockPassword": "Contraseña incorrecta",
"incorrectPassword": "Nombre de usuario o contraseña incorrecta",
"inlineInstallationMsg": "Necesita instalar nuestra extensión para compartir escritorio.",
"inlineInstallExtension": "Instalar ahora",
"internalError": "¡Oops! Algo salió mal. El siguiente error ocurrió: {{error}}",
"internalErrorTitle": "Error interno",
"kickMessage": "Puede ponerse en contacto con {{participantDisplayName}} para obtener más detalles.",
"kickParticipantButton": "Expulsar",
"kickParticipantDialog": "¿Seguro que quiere expulsar a este participante?",
"kickParticipantTitle": "¿Expulsar a este participante?",
"kickTitle": "¡Ay! {{participantDisplayName}} te expulsó de la reunión",
"liveStreaming": "Emisión en Directo",
"liveStreamingDisabledForGuestTooltip": "Los invitados no pueden iniciar transmisiones en vivo.",
"liveStreamingDisabledTooltip": "Iniciar transmisión en vivo deshabilitado.",
"lockMessage": "No se pudo bloquear la conferencia.",
"lockRoom": "Agregar reunion $t(lockRoomPasswordUppercase)",
"lockTitle": "El bloqueo falló",
"logoutQuestion": "¿Está seguro que desea salir y detener la conferencia?",
"logoutTitle": "Cerrar sesión",
"maxUsersLimitReached": "El límite máximo de participantes ha sido alcanzado. La conferencia está llena. Por favor contacta al organizador o intenta mas tarde.",
"maxUsersLimitReachedTitle": "Se ha alcanzado el límite máximo de participantes",
"micConstraintFailedError": "El micrófono no satisface algunos de los requerimientos.",
"micNotFoundError": "No se encontró el micrófono.",
"micNotSendingData": "Vaya a la configuración de su computadora para activar el micrófono y ajustar su nivel",
"micNotSendingDataTitle": "Su micrófono está silenciado en la configuración de su sistema",
"micPermissionDeniedError": "No ha otorgado permisos para usar su micrófono. Puede unirse a la conferencia, pero no lo podrán escuchar. Utilice el botón en la barra de dirección para solucionar esto.",
"micUnknownError": "No se puede usar el micrófono por motivos desconocidos.",
"muteEveryoneElseDialog": "Una vez silenciados, no podrás quitarles el modo silencio, pero ellos podrán hacerlo en cualquier momento.",
"muteEveryoneElseTitle": "¿Silenciar a todos los participantes excepto a {{whom}}?",
"muteEveryoneDialog": "¿Estás seguro de silenciar a todos los participantes? No podrás quitarles el modo en silencio, pero ellos podrán hacerlo en cualquier momento.",
"muteEveryoneTitle": "¿Silenciar a todos los participantes?",
"muteEveryoneSelf": "A ti mismo",
"muteEveryoneStartMuted": "Todos los participantes comienzan silenciados a partir de ahora",
"muteParticipantBody": "No podrás quitarles el modo en silencio, pero ellos pueden quitárselo en cualquier momento.",
"muteParticipantButton": "Silenciar",
"muteParticipantDialog": "¿Seguro que quiere silenciar a este participante? No podrá revertir esta acción, pero el participante podrá hacerlo en cualquier momento",
"muteParticipantTitle": "¿Silenciar a este participante?",
"Ok": "Aceptar",
"passwordLabel": "$t(lockRoomPasswordUppercase)",
"passwordNotSupported": "No se soporta $t(lockRoomPassword) en la reunión",
"passwordNotSupportedTitle": "$t(lockRoomPasswordUppercase) no es compatible",
"passwordRequired": "$t(lockRoomPasswordUppercase) necesario",
"popupError": "Su navegador está bloqueando las ventanas emergentes de este sitio. Habilite las ventanas emergentes en la configuración de seguridad de su navegador y vuelva a intentarlo.",
"popupErrorTitle": "Ventana emergente bloqueada",
"recording": "Grabando",
"recordingDisabledForGuestTooltip": "Los huéspedes no pueden iniciar grabaciones.",
"recordingDisabledTooltip": "Inicio de grabación desactivado.",
"rejoinNow": "Reunirse ahora",
"remoteControlAllowedMessage": "{{user}} ha aceptado tu solicitud de control remoto!",
"remoteControlDeniedMessage": "{{user}} ha rechazado tu solicitud de control remoto!",
"remoteControlErrorMessage": "Ha ocurrido un error tratando de solicitar permiso de control remoto de {{user}}!",
"remoteControlRequestMessage": "¿Permitirá que {{user}} controle remotamente su escritorio?",
"remoteControlShareScreenWarning": "¡Tenga en cuenta que si presiona \"Permitir\" usted compartirá su pantalla!",
"remoteControlStopMessage": "La sesión de control remoto ha finalizado!",
"remoteControlTitle": "Control de escritorio remoto",
"Remove": "Eliminar",
"removePassword": "Eliminar $t(lockRoomPassword)",
"removeSharedVideoMsg": "¿Está seguro que desea eliminar su vídeo compartido?",
"removeSharedVideoTitle": "Eliminar video compartido",
"reservationError": "Error del sistema de reservación",
"reservationErrorMsg": "Código de error: {{code}}, message: {{msg}}",
"retry": "Reintentar",
"screenSharingAudio": "Compartir audio",
"screenSharingFailedToInstall": "Oops! Su extensión de uso compartido de pantalla no se pudo instalar.",
"screenSharingFailedToInstallTitle": "La extensión para compartir la pantalla no se pudo instalar",
"screenSharingFirefoxPermissionDeniedError": "Algo salió mal mientras tratábamos de compartir la pantalla. Por favor, asegúrese de que nos ha dado permiso para hacerlo. ",
"screenSharingFirefoxPermissionDeniedTitle": "OOPS! ¡ No pudimos empezar a compartir la pantalla!",
"screenSharingPermissionDeniedError": "Oops! Algo salió mal con sus permisos de extensión para compartir pantalla. Por favor, vuelva a cargar e intente de nuevo.",
"sendPrivateMessage": "Acaba de recibir un mensaje privado. ¿Desea responder de forma privada?, ¿Desea responder al grupo?",
"sendPrivateMessageCancel": "Enviar al grupo",
"sendPrivateMessageOk": "Enviar privado",
"sendPrivateMessageTitle": "¿Enviar privado?",
"serviceUnavailable": "Servicio no disponible",
"sessTerminated": "Llamada terminada",
"Share": "Compartir",
"shareVideoLinkError": "Por favor introduzca un enlace correcto de Youtube.",
"shareVideoTitle": "Compartir un vídeo",
"shareYourScreen": "Compartir su pantalla",
"shareYourScreenDisabled": "Pantalla compartida desactivada.",
"shareYourScreenDisabledForGuest": "Los huéspedes no pueden compartir la pantalla.",
"startLiveStreaming": "Iniciar transmisión en vivo",
"startRecording": "Iniciar la grabación",
"startRemoteControlErrorMessage": "¡Se ha producido un error al intentar iniciar la sesión de control remoto!",
"stopLiveStreaming": "Detener transmisión en vivo",
"stopRecording": "Parar grabación",
"stopRecordingWarning": "¿Estás seguro que quieres parar la grabación?",
"stopStreamingWarning": "¿Estas seguro que quieres parar la retransmisión en directo?",
"streamKey": "Tecla de transmisión en directo",
"Submit": "Enviar",
"thankYou": "¡Gracias por usar {{appName}}!",
"token": "token",
"tokenAuthFailed": "Lo siento, usted no tiene permiso para unirse a este llamada.",
"tokenAuthFailedTitle": "Falló la autenticación",
"transcribing": "Transcribiendo",
"unlockRoom": "Eliminar reunión $t(lockRoomPassword)",
"userPassword": "contraseña del usuario",
"WaitForHostMsg": "La conferencia <b> {{room}} </b> aún no ha comenzado. Si usted es el anfitrión, por favor autentíquese. De lo contrario, espere a que llegue el anfitrión.",
"WaitForHostMsgWOk": "La conferencia <b> {{room}} </b> aún no ha comenzado. Si usted es el anfitrión, presione Ok para autenticar. De lo contrario, espere a que llegue el anfitrión.",
"WaitingForHost": "Esperando al anfitrión …",
"Yes": "Sí",
"yourEntireScreen": "Su pantalla completa",
"muteEveryoneDialog": "Silenciar a todos"
},
"dialOut": {
"statusMessage": "está {{status}}"
},
"documentSharing": {
"title": "Compartir documento"
},
"e2ee": {
"labelToolTip": "La comunicación de Audio y Video en esta reunión está cifrada Extremo-a-Extremo"
},
"feedback": {
"average": "Promedio",
"bad": "Malo",
"detailsLabel": "Nos puede decir más al respecto.",
"good": "Bueno",
"rateExperience": "Valore la experiencia de su reunión.",
"veryBad": "Muy Mal",
"veryGood": "Muy Bien"
},
"incomingCall": {
"answer": "Contestar",
"audioCallTitle": "Llamada entrante",
"decline": "Descartar",
"productLabel": "de Jitsi Meet",
"videoCallTitle": "Llamada de vídeo"
},
"info": {
"accessibilityLabel": "Mostrar Información",
"addPassword": "Agregar $t(lockRoomPassword)",
"cancelPassword": "Cancelar $t(lockRoomPassword)",
"conferenceURL": "Enlace:",
"country": "País",
"dialANumber": "Para unirse a la reunión, marque uno de estos números e introduzca el PIN",
"dialInConferenceID": "PIN:",
"dialInNotSupported": "Lo sentimos, actualmente no se admite la marcación.",
"dialInNumber": "Marcar:",
"dialInSummaryError": "Se ha producido un error al capturar la información de marcación. Vuelva a intentarlo más tarde",
"dialInTollFree": "Número gratuito",
"genericError": "Ups, algo salió mal.",
"inviteLiveStream": "Marcado de un solo toque: {{number}},,{{conferenceID}}#",
"invitePhone": "Para unirse por teléfono, presione: {{number}},,{{conferenceID}}#\n",
"invitePhoneAlternatives": "¿Busca un número de marcación diferente?\nConsulte los números de marcación de la reunión: {{url}}\n\n\nSi está marcando a través del teléfono de otra reunión, únase sin conectarse al audio: {{silentUrl}}",
"inviteURLFirstPartGeneral": "Le han invitado a unirse a una reunión",
"inviteURLFirstPartPersonal": "{{name}} te esta invitando a una sesión.\n",
"inviteURLSecondPart": "\nUnirse a la reunión:\n{{url}}\n",
"liveStreamURL": "Transmisión en vivo:",
"moreNumbers": "Más números",
"noNumbers": "Sin números a marcar.",
"noPassword": "Ninguno",
"noRoom": "No se especificó la sala a marcar.",
"numbers": "Números de marcado",
"password": "$t(lockRoomPasswordUppercase):",
"title": "Compartir",
"tooltip": "Compartir el enlace y acceso telefónico para esta reunión",
"label": "Información de la reunión"
},
"inviteDialog": {
"alertText": "Se ha producido un error al invitar a algunos participantes",
"header": "Invitar",
"searchCallOnlyPlaceholder": "Introduzca número de télefono",
"searchPeopleOnlyPlaceholder": "Buscar participantes",
"searchPlaceholder": "Participante o número de teléfono",
"send": "Enviar"
},
"inlineDialogFailure": {
"msg": "Tuvimos un pequeño tropiezo.",
"retry": "Intentar de nuevo",
"support": "Soporte",
"supportMsg": "Si esto sigue ocurriendo, contáctenos para"
},
"keyboardShortcuts": {
"focusLocal": "Enfócate en tu video",
"focusRemote": "Centrarse en el vídeo de otra persona",
"fullScreen": "Ver o salir de pantalla completa",
"keyboardShortcuts": "Atajos de teclado",
"localRecording": "Mostrar u ocultar controles de grabación locales",
"mute": "Activar o silenciar el micrófono",
"pushToTalk": "Presione para hablar",
"raiseHand": "Levantar o bajar la mano",
"showSpeakerStats": "Estadísticas de participantes",
"toggleChat": "Abrir o cerrar panel de chat",
"toggleFilmstrip": "Mostrar/Ocultar miniaturas de video",
"toggleScreensharing": "Cambiar entre cámara y compartir pantalla",
"toggleShortcuts": "Mostrar/ocultar atajos del teclado",
"videoMute": "Activar o desactivar tu cámara",
"videoQuality": "Administrar la calidad de llamadas"
},
"liveStreaming": {
"busy": "Estamos trabajando para liberar recursos de transmisión. Por favor, inténtelo de nuevo en unos minutos.",
"busyTitle": "Todos los streamers están ocupados actualmente",
"changeSignIn": "Cambiar cuentas.",
"choose": "Elija una secuencia en directo",
"chooseCTA": "Elija una opción de streaming. Actualmente está registrado como {{email}}.",
"enterStreamKey": "Ingrese su clave de YouTube live stream aquí.",
"error": "La transmisión en vivo falló. Por favor, inténtelo de nuevo.",
"errorAPI": "Se produjo un error al acceder a las transmisiones de YouTube. Por favor intente iniciando sesión nuevamente.",
"errorLiveStreamNotEnabled": "La transmisión en vivo no está activada en {{email}}. Por favor, active la transmisión en vivo o inicie sesión en una cuenta con transmisión en vivo activada.",
"expandedOff": "La transmisión en vivo se ha detenido",
"expandedOn": "La reunión se está transmitiendo a YouTube.",
"expandedPending": "La transmisión en vivo se está iniciando …",
"failedToStart": "La transmisión en vivo no se puso iniciar",
"getStreamKeyManually": "No pudimos buscar ninguna transmisión en vivo. Trate de obtener su clave de transmisión en vivo de YouTube.",
"invalidStreamKey": "Es posible que la clave de transmisión sea incorrecta",
"off": "Transmisión en vivo detenida",
"offBy": "{{name}} transmisión en directo",
"on": "Emisión en Directo",
"onBy": "{{name}} transmisión en directo iniciada",
"pending": "Iniciando Emisión en Directo…",
"serviceName": "Servicio de streaming en vivo",
"signedInAs": "Actualmente está conectado como:",
"signIn": "Iniciar sesión con Google",
"signInCTA": "Iniciar sesión o ingrese su clave de transmisión en vivo de YouTube.",
"signOut": "Cerrar sesión",
"start": "Iniciar una transmisión en vivo",
"streamIdHelp": "¿Qué es esto?",
"unavailableTitle": "Transmisión en vivo no disponible"
},
"localRecording": {
"clientState": {
"off": "Apagado",
"on": "Encendido",
"unknown": "Desconocido"
},
"dialogTitle": "Controles de grabación local",
"duration": "Duración",
"durationNA": "N/A",
"encoding": "Codificación",
"label": "GLO",
"labelToolTip": "Grabación local activada",
"localRecording": "Grabación local",
"me": "Yo",
"messages": {
"engaged": "Grabación local activada.",
"finished": "Sesión de grabación {{token}} terminada. Por favor, envíe el archivo grabado al moderador.",
"finishedModerator": "Sesión de grabación {{token}} terminado. Se ha guardado la grabación de la pista local. Por favor pida a los demás participantes que presenten sus grabaciones.",
"notModerator": "Usted no es el moderador. No puede iniciar o detener la grabación local."
},
"moderator": "Moderador",
"no": "No",
"participant": "Participante",
"participantStats": "Estadística de participantes",
"sessionToken": "Token de sesión",
"start": "Iniciar grabación",
"stop": "Detener grabación",
"yes": "Sí"
},
"lockRoomPassword": "contraseña",
"lockRoomPasswordUppercase": "Contraseña",
"me": "yo",
"notify": {
"connectedOneMember": "{{name}} se unió a la sesión ",
"connectedThreePlusMembers": "{{name}} and {{count}} otros se unieron a la sesión",
"connectedTwoMembers": "{{first}} and {{second}} se han unido a la sesión",
"disconnected": "desconectado",
"focus": "Enfocar conferencia",
"focusFail": "{{component}} no disponible - reintentar en {{ms}} seg",
"grantedTo": "¡Se otorgaron privilegios de moderador a {{to}}!",
"invitedOneMember": "{{displayName}} ha sido invitado",
"invitedThreePlusMembers": "{{name}} y otros {{count}} fueron invitados",
"invitedTwoMembers": "{{first}} y {{second}} fueron invitados",
"kickParticipant": "{{kicked}} desalojado por {{kicker}}",
"me": "Yo",
"moderator": "¡Se otorgaron privilegios de moderador!",
"muted": "Has iniciado la conversación silenciado.",
"mutedTitle": "¡Estás silenciado!",
"mutedRemotelyTitle": "¡{{Nombre del participante}} te ha silenciado!",
"mutedRemotelyDescription": "Siempre puedes quitar el silencio cuando estés listo para hablar. Silencie cuando termine para mantener el ruido alejado de la reunión.",
"passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) eliminado por otro participante",
"passwordSetRemotely": "$t(lockRoomPasswordUppercase) establecido por otro participante",
"raisedHand": "{{name}} quisiera hablar.",
"somebody": "Alguien",
"startSilentTitle": "¡Te uniste sin salida de audio!",
"startSilentDescription": "Vuelva a unirse a la reunión para habilitar el audio",
"suboptimalBrowserWarning": "Tememos que su experiencia en la reunión no sea tan buena. Estamos buscando formas de mejorar esto, pero hasta entonces intente utilizar uno de los <a href='{{recommendedBrowserPageLink}}' target='_blank'>navegadores totalmente compatibles</a>.",
"suboptimalExperienceTitle": "Advertencia del Explorador",
"unmute": "Dejar de silenciar",
"newDeviceCameraTitle": "Se ha detectado una nueva cámara",
"newDeviceAudioTitle": "Se ha detectado un nuevo dispositivo de audio",
"newDeviceAction": "Usar",
"OldElectronAPPTitle": "Vulnerabilidades de Seguridad!",
"oldElectronClientDescription1": "Aparentemente usted está usuado una versión antigua de Jitsi Meet que tiene problemas de seguridad. Por favor actualice la versión con nuestra ",
"oldElectronClientDescription2": "ultima versión",
"oldElectronClientDescription3": " ahora!"
},
"passwordSetRemotely": "definida por otro participante",
"passwordDigitsOnly": "Hasta {{number]] cifras",
"poweredby": "con tecnología de",
"prejoin": {
"audioAndVideoError": "Error en Audio y video:",
"audioOnlyError": "Error en Audio:",
"audioTrackError": "No se pured crear la pista de Audio.",
"callMe": "Llámame",
"callMeAtNumber": "Llamame a este número:",
"configuringDevices": "Configurando dispositivos...",
"connectedWithAudioQ": "Usted está conectado con Audio?",
"copyAndShare": "Cipie y comparta el link de la reuinión",
"dialInMeeting": "Marcar a la reunión",
"dialInPin": "Marcar a la reunión e ingresarel código PIN:",
"dialing": "Marcando",
"doNotShow": "No mostrar nuevamente",
"errorDialOut": "Could not dial out",
"errorDialOutDisconnected": "Could not dial out. Disconnected",
"errorDialOutFailed": "Could not dial out. Call failed",
"errorDialOutStatus": "Error getting dial out status",
"errorStatusCode": "Error dialing out, status code: {{status}}",
"errorValidation": "Number validation failed",
"iWantToDialIn": "I want to dial in",
"joinAudioByPhone": "Join with phone audio",
"joinMeeting": "Join meeting",
"joinWithoutAudio": "Join without audio",
"initiated": "Call initiated",
"linkCopied": "Link copied to clipboard",
"lookGood": "It sounds like your microphone is working properly",
"or": "or",
"calling": "Calling",
"startWithPhone": "Start with phone audio",
"screenSharingError": "Screen sharing error:",
"videoOnlyError": "Video error:",
"videoTrackError": "Could not create video track.",
"viewAllNumbers": "view all numbers"
},
"presenceStatus": {
"busy": "Ocupado",
"calling": "Llamando…",
"connected": "Conectado",
"connecting": "Conectando…",
"connecting2": "Conectando*…",
"disconnected": "Desconectado",
"expired": "Expirado",
"ignored": "Ignorado",
"initializingCall": "Iniciando llamada…",
"invited": "Invitado",
"rejected": "Rechazado",
"ringing": "Timbrando…"
},
"profile": {
"setDisplayNameLabel": "Digite su nombre",
"setEmailInput": "Digite su e-mail",
"setEmailLabel": "Digite su e-mail",
"title": "Perfil"
},
"raisedHand": "Desea hablar",
"recording": {
"authDropboxText": "Subir a Dropbox",
"availableSpace": "Espacio disponible: {{spaceLeft}} MB (aproximadamente {{duration}} minutos de grabación)",
"beta": "BETA",
"busy": "Estamos trabajando para liberar recursos de grabación. Por favor, inténtelo de nuevo en unos minutos.",
"busyTitle": "Todas las grabadoras están actualmente ocupadas",
"error": "Falla de grabación. Vuelva a intentarlo.",
"expandedOff": "Grabación detenida",
"expandedOn": "La reunión está siendo grabada.",
"expandedPending": "La grabación se está inciando…",
"failedToStart": "No se pudo iniciar la grabación",
"fileSharingdescription": "Compartir la grabación con los participantes de la reunión",
"live": "Directo",
"loggedIn": "Sesión iniciada como {{userName}}",
"off": "Grabación detenida",
"offBy": "{{name}} detuvo la grabación",
"on": "Grabando",
"onBy": "{{name}} comenzó la grabación",
"pending": "Preparando para grabar la reunión…",
"rec": "REC",
"serviceDescription": "El servicio de grabación guardará la grabación",
"serviceName": "Servicio de grabación",
"signIn": "Iniciar sesión",
"signOut": "Cerrar sesión",
"unavailable": "Oops! El {{serviceName}} no está disponible actualmente. Estamos trabajando para resolver la situación. Por favor intente más tarde.",
"unavailableTitle": "Grabación no disponible"
},
"sectionList": {
"pullToRefresh": "Actualizar"
},
"security": {
"about": "Usted puede agregar una contraseña a la reunión. Los participantes necesitaran la contraseña para unirse a la reunión.",
"insecureRoomNameWarning": "El nombre de la sala es inseguro. Participantes no desseados pueden llegar a unirse a la reunión.",
"securityOptions": "Opciones de seguridad"
},
"settings": {
"calendar": {
"about": "La integración del calendario {{appName}} se utiliza para acceder de forma segura a su calendario para que pueda leer los próximos eventos.",
"disconnect": "Desconectar",
"microsoftSignIn": "Iniciar sesión con Microsoft",
"signedIn": "Actualmente accediendo a eventos de calendario para {{email}}. Haga clic en el botón desconectar de abajo para detener el acceso a eventos de calendario.",
"title": "Calendario"
},
"devices": "Dispositivos",
"followMe": "Todos me siguen",
"language": "Idioma",
"loggedIn": "Sesión iniciada como {{name}}",
"microphones": "Micrófono",
"moderator": "Moderador",
"more": "Más",
"name": "Nombre",
"noDevice": "Ninguno",
"selectAudioOutput": "Salida de audio",
"selectCamera": "Cámara",
"selectMic": "Micrófono",
"startAudioMuted": "Todos inician silenciados",
"startVideoMuted": "Todos inician con cámara desactivada",
"title": "Ajustes"
},
"settingsView": {
"advanced": "Avanzado",
"alertOk": "OK",
"alertCancel": "Cancelar",
"alertTitle": "Aviso",
"alertURLText": "La dirección URL del servidor no es válida",
"buildInfoSection": "Información de la compilación",
"conferenceSection": "Conferencia",
"disableCallIntegration": "Deshabilitar la integración nativa de llamadas",
"disableP2P": "Deshabilitar el modo punto a punto",
"displayName": "Nombre a mostrar",
"email": "Email",
"header": "Ajustes",
"email": "Correo electrónico",
"header": "Configuración",
"profileSection": "Perfil",
"serverURL": "URL del servidor",
"showAdvanced": "Mostrar configuración avanzada",
"startWithAudioMuted": "Inicio con audio en silencio",
"startWithVideoMuted": "Iniciar con el vídeo en silencio",
"version": "Versión"
},
"share": {
"dialInfoText": "\n\n=====\n\n¿Solo quieres marcar en tu teléfono?\n\n{{defaultDialInNumber}} Haga clic en este enlace para ver el marcado en los números de teléfono de esta reunión\n{{dialInfoPageUrl}}",
"mainText": "Presione en el siguiente enlace para unirse a la reunión:\n{{roomUrl}}"
},
"speaker": "Participante",
"speakerStats": {
"hours": "{{count}}h",
"minutes": "{{count}}m",
"name": "Nombre",
"seconds": "{{count}}s",
"speakerStats": "Estadísticas de participantes",
"speakerTime": "Tiempo hablado"
},
"startupoverlay": {
"policyText": " ",
"title": "La video llamada se interrumpió porque se detuvo este equipo."
},
"suspendedoverlay": {
"rejoinKeyTitle": "Volver",
"text": "Presione el botón <i>Reunir</i> para reconectarse.",
"title": "La video llamada se interrumpió porque se detuvo este equipo."
},
"toolbar": {
"accessibilityLabel": {
"audioOnly": "Alternar sólo audio",
"audioRoute": "Seleccione el dispositivo de sonido",
"callQuality": "Administrar la calidad del video",
"cc": "Alternar subtítulos",
"chat": "Alternar ventana de chat",
"document": "Alternar documento compartido",
"download": "Descarga nuestras aplicaciones",
"e2ee": "Cifrado Extremo-a-Extremo",
"feedback": "Dejar comentarios",
"fullScreen": "Alternar pantalla completa",
"hangup": "Dejar la llamada",
"help": "Ayuda",
"invite": "Invitar personas",
"kick": "Expulsar participante",
"localRecording": "Alternar controles de grabación locales",
"lockRoom": "Activar o desactivar contraseña de la reunión",
"moreActions": "Menú alternar más acciones",
"moreActionsMenu": "Menú más acciones",
"mute": "Alternar audio mudo",
"pip": "Alternar modo de Picture-in-Picture",
"privateMessage": "Enviar mensaje privado",
"profile": "Editar tu perfil",
"raiseHand": "Levantar / Bajar tu mano",
"recording": "Activar grabación",
"remoteMute": "Silenciar participante",
"security": "Opciones de seguridad",
"Settings": "Alternar configuración",
"sharedvideo": "Alternar compartir un vídeo de YouTube",
"shareRoom": "Invitar a alguien",
"shareYourScreen": "Alternar compartir pantalla",
"shortcuts": "Alternar accesos directos",
"show": "Mostrar en escena",
"speakerStats": "Alternar estadísticas del orador",
"tileView": "Alternar vista de mosaico",
"toggleCamera": "Alternar cámara",
"toggleFilmstrip": "Alternar mosaicos",
"videomute": "Alternar silencio de video",
"videoblur": "Alternar desenfoque de video"
},
"addPeople": "Agregar personas a su llamada",
"audioOnlyOff": "Deshabilitar el modo de ancho de banda bajo",
"audioOnlyOn": "Habilitar el modo de ancho de banda bajo",
"audioRoute": "Seleccione el dispositivo de sonido",
"authenticate": "Autenticar",
"callQuality": "Administrar la calidad del video",
"chat": "Abrir / cerrar sala de charla",
"closeChat": "Cerrar chat",
"documentClose": "Cerrar documento compartido",
"documentOpen": "Abrir documento compartido",
"download": "Descarga nuestras aplicaciones",
"e2ee": "Cifrado Extremo-a-Extremo",
"enterFullScreen": "Ver pantalla completa",
"enterTileView": "Entrar en vista de mosaico",
"exitFullScreen": "Salir de pantalla completa",
"exitTileView": "Salir de vista de mosaico",
"feedback": "Dejar comentarios",
"hangup": "Salir",
"help": "Ayuda",
"invite": "Invitar personas",
"login": "Inicio de sesión",
"logout": "Cerrar sesión",
"lowerYourHand": "Bajar la mano",
"moreActions": "Más acciones",
"moreOptions": "Más opciones",
"mute": "Activar o silenciar el micrófono",
"muteEveryone": "Silenciar a todos",
"noAudioSignalTitle": "¡No hay entrada proveniente de su micrófono!",
"noAudioSignalDesc": "Si no lo silenció a propósito desde la configuración del sistema o el dispositivo, considere cambiar el dispositivo.",
"noAudioSignalDescSuggestion": "Si no lo silenció a propósito desde la configuración del sistema o el dispositivo, considere usar el siguiente dispositivo:",
"noAudioSignalDialInDesc": "Usted puede además llamar usando:",
"noAudioSignalDialInLinkDesc": "Números de llamada",
"noisyAudioInputTitle": "Su micrófono parece estar ruidoso",
"noisyAudioInputDesc": "Parece que su micráfono está haciendo ruido, por favor considere silenciarlo o cambiar de dispositivo.",
"openChat": "Abrir chat",
"pip": "Entra en el modo Picture-in-Picture",
"privateMessage": "Enviar mensaje privado",
"profile": "Editar tu perfil",
"raiseHand": "Levantar / Bajar tu mano",
"raiseYourHand": "Alzar la mano",
"security": "Opciones de seguridad",
"Settings": "Ajustes",
"sharedvideo": "Compartir un vídeo de YouTube",
"shareRoom": "Invitar a alguien",
"shortcuts": "Ver accesos directos",
"speakerStats": "Estadísticas del locutor",
"startScreenSharing": "Comenzar a compartir pantalla",
"startSubtitles": "Iniciar subtítulos",
"stopScreenSharing": "Dejar de compartir pantalla",
"stopSubtitles": "Detener subtítulos",
"stopSharedVideo": "Detener vídeo de YouTube",
"talkWhileMutedPopup": "¿Tratas de hablar? Estás silenciado.",
"tileViewToggle": "Alternar vista de mosaico",
"toggleCamera": "Alternar cámara",
"videomute": "Iniciar / detener cámara",
"startvideoblur": "Desenfocar mi fondo",
"stopvideoblur": "Desactivar desenfoque de fondo"
},
"transcribing": {
"ccButtonTooltip": "Iniciar / Detener subtítulos",
"error": "La Transcripción falló. Por favor, inténtelo nuevamente.",
"expandedLabel": "Transcripción encendida",
"failedToStart": "No es posible iniciar la transcripción",
"labelToolTip": "La reunión se esta transcribiendo",
"off": "Transcripción detenida",
"pending": "Preparando la transcripción de la reunión…",
"start": "Mostrar subtítulos",
"stop": "Dejar de mostrar subtítulos",
"tr": "TR"
},
"userMedia": {
"androidGrantPermissions": "Seleccione <b><i>Permitir</i></b> cuando su navegador pida permisos.",
"chromeGrantPermissions": "Seleccione <b><i>Permitir</i></b> cuando su navegador pida permisos.",
"edgeGrantPermissions": "Seleccione <b><i>Sí</i></b> cuando su navegador pida permisos.",
"electronGrantPermissions": "Por favor, conceda permisos para utilizar su cámara y micrófono",
"firefoxGrantPermissions": "Seleccione <b><i>Compartir Dispositivo Seleccionado</i></b> cuando su navegador pida permisos.",
"iexplorerGrantPermissions": "Seleccione <b><i>OK</i></b> cuando su navegador pida permisos.",
"nwjsGrantPermissions": "Por favor, conceda permisos para utilizar su cámara y micrófono",
"operaGrantPermissions": "Seleccione <b><i>Permitir</i></b> cuando su navegador pida permisos.",
"react-nativeGrantPermissions": "Seleccione <b><i>Permitir</i></b> cuando su navegador pida permisos.",
"safariGrantPermissions": "Seleccione <b><i>OK</i></b> cuando su navegador pida permisos."
},
"videoSIPGW": {
"busy": "Estamos trabajando en liberar recursos. Por favor intente nuevamente en unos minutos.",
"busyTitle": "El servicio de las salas está actualmente ocupado",
"errorAlreadyInvited": "{{displayName}} ya ha sido invitado",
"errorInvite": "La conferencia no se ha establecido aun. Por favor intente más tarde.",
"errorInviteFailed": "Estamos trabajando en resolver la situación. Por favor intente de nuevo más tarde.",
"errorInviteFailedTitle": "Invitar a {{displayName}} falló",
"errorInviteTitle": "Error al invitar a la sala",
"pending": "{{displayName}} ha sido invitado"
},
"videoStatus": {
"audioOnly": "AUD",
"audioOnlyExpanded": "Estás en modo de ancho de banda bajo. En este modo, solo recibirá audio y pantalla compartida.",
"callQuality": "Calidad de video",
"hd": "HD",
"hdTooltip": "Visualizando vídeo en alta definición",
"highDefinition": "Alta definición",
"labelTooiltipNoVideo": "No hay vídeo",
"labelTooltipAudioOnly": "Modo de ancho de banda bajo habilitado",
"ld": "LD",
"ldTooltip": "Visualizando vídeo en baja definición",
"lowDefinition": "Baja definición",
"onlyAudioAvailable": "Solo hay audio disponible",
"onlyAudioSupported": "Solo soportamos audio en este navegador.",
"sd": "SD",
"sdTooltip": "Visualizando vídeo en definición estándar",
"standardDefinition": "Definición estándar"
},
"videothumbnail": {
"domute": "Silenciar",
"domuteOthers": "Silenciar a todos",
"flip": "Voltear",
"kick": "Expulsar",
"moderator": "Moderador",
"mute": "Participante está silenciado",
"muted": "Silenciado",
"remoteControl": "Control remoto",
"show": "Mostrar en escena",
"videomute": "El participante ha detenido la cámara."
},
"welcomepage": {
"accessibilityLabel": {
"join": "Toque para unirse",
"roomname": "Introduzca un nombre de sala"
},
"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",
"audioVideoSwitch": {
"audio": "Voz",
"video": "Video"
},
"calendar": "Calendario",
"connectCalendarButton": "Conecte su calendario",
"connectCalendarText": "Conecte su calendario para ver todas sus reuniones en {{app}}. Plus, add {{provider}}reuniones a tu calendario e iniciarlas con un solo clic.",
"enterRoomTitle": "Crear o unirse a una conferencia",
"getHelp": "Obtener ayuda",
"roomNameAllowedChars": "El nombre de la reunión no debe contener ninguno de estos caracteres: ?, &, :, ', \", %, #.",
"go": "IR",
"goSmall": "IR",
"join": "CREAR / UNIRSE",
"info": "Información",
"privacy": "Privacidad",
"recentList": "Reciente",
"recentListDelete": "Borrar",
"recentListEmpty": "Su lista de recientes está actualmente vacía. Chatea con tu equipo y encontrarás todas tus reuniones aquí.",
"reducedUIText": "¡Bienvenido a {{app}}!",
"roomname": "Introduzca un nombre de sala",
"roomnameHint": "Introduce el nombre o URL de la sala a la que quieres unirte. Puedes crear un nombre nuevo, sólo tienes que hacer llegar este nombre al resto de participantes para que puedan unirse a esta sala.",
"sendFeedback": "Enviar comentarios",
"terms": "Términos",
"title": "Bienvenido, Conferencias SIUA"
},
"lonelyMeetingExperience": {
"button": "Invitar a otros",
"youAreAlone": "Eres el único en la reunión"
},
"helpView": {
"header": "Centro de ayuda"
}
}
- 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"/>
- ARCHIVO QUEDANDO ASÍ
<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"/>
Adicionales
- Verificar los servicios
service prosody status
service jitsi-videobridge2 status
service jicofo status
service jibri status
- Reiniciar servicios
service prosody restart
service jitsi-videobridge2 restart
service jicofo restart
service jibri restart
Errores en prosody
- si el estado de prosody dice
service prosody status
modulemanager: Unable to load module 'storage_memory': /usr/lib/prosody/modules/mod_storage_memory.lua:
- Corrección, modificar memory x internal
Component "internal.auth.conferencias.siua.ac.cr" "muc"
modules_enabled = {
"ping";
}
storage = "memory"
muc_room_cache_size = 1000
VirtualHost "recorder.conferencias.siua.ac.cr"
modules_enabled = {
"ping";
}
authentication = "internal_plain"
X
Component "internal.auth.conferencias.siua.ac.cr" "muc"
modules_enabled = {
"ping";
}
storage = "internal"
muc_room_cache_size = 1000
VirtualHost "recorder.conferencias.siua.ac.cr"
modules_enabled = {
"ping";
}
authentication = "internal_plain"
- Si el error dice
portmanager: Error binding encrypted port for https: No key present in SSL/TLS configuration for https port 5281
- Abirmos el archivo
nano /etc/prosody/conf.d/conferencias.siua.ac.cr.cfg.lua
- Y despues de esta línea
consider_bosh_secure = true;
- Agregamos
bosh_ports = {
{
port = 5280;
path = "http-bind";
},
{
port = 5281;
path = "http-bind";
ssl = {
certificate = "/etc/prosody/certs/conferencias.siua.ac.cr.crt";
key = "/etc/prosody/certs/conferencias.siua.ac.cr.key";
}
}
}
http_ports = { 5280 }
http_interfaces = { "localhost" }
https_ports = { 5281 }
https_interfaces = { "localhost" }
https_ssl = {
certificate = "/etc/prosody/certs/conferencias.siua.ac.cr.crt";
key = "/etc/prosody/certs/conferencias.siua.ac.cr.key";
}
- Aplicamos
service prosody restart
service prosody status
Comprobación de contraseñas
- Usuario jvb
#Verificar en:
grep JVB_SECRET /etc/jitsi/videobridge/config
#RESULTADO
JVB_SECRET=anzz9aLK
#Comparar con:
grep password /var/lib/prosody/auth%2econferencias%2esiua%2eac%2ecr/accounts/jvb.dat
#RESULTADO:
["password"] = "anzz9aLK";
nano /etc/jitsi/videobridge/sip-communicator.properties
org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=anzz9aLK
- Usuario focus
nano /etc/prosody/conf.d/conferencias.siua.ac.cr.cfg.lua
#RESULTADO:
Component "focus.conferencias.siua.ac.cr"
component_secret = "YHZt2RZt"
nano /etc/jitsi/jicofo/config
JICOFO_AUTH_PASSWORD=YHZt2RZt
- Otros
scp -P 44 -r /etc/letsencrypt/live/jibri.siua.ac.cr/fullchain.pem root@10.20.200.75:/etc/apache2/certificados/jibri.siua.ac.cr/fullchain.pem
scp -P 44 -r /etc/letsencrypt/live/jibri.siua.ac.cr/privkey.pem root@10.20.200.75:/etc/apache2/certificados/jibri.siua.ac.cr/privkey.pem
ERRO#
systemctl status prosody.service jitsi-videobridge2.service
Aug 18 15:06:53 conferencias prosody[36633]: portmanager: Error binding encrypted port for https: No certificate present in SSL/TLS configuration for https port 5281
Aug 18 15:06:53 conferencias prosody[36633]: portmanager: Error binding encrypted port for https: No certificate present in SSL/TLS configuration for https port 5281
Aug 18 15:07:15 conferencias prosody[36633]: internal.auth.conferencias.siua.ac.cr:muc: Error restoring room jvbbrewery@internal.auth.conferencias.siua.ac.cr from storage: no data storage active
Aug 18 15:07:19 conferencias prosody[36633]: internal.auth.conferencias.siua.ac.cr:muc: Error restoring room jvbbrewery@internal.auth.conferencias.siua.ac.cr from storage: no data storage active
Aug 18 15:07:23 conferencias prosody[36633]: internal.auth.conferencias.siua.ac.cr:muc: Error restoring room jvbbrewery@internal.auth.conferencias.siua.ac.cr from storage: no data storage active
Aug 18 15:07:24 conferencias prosody[36633]: internal.auth.conferencias.siua.ac.cr:muc: Error restoring room jvbbrewery@internal.auth.conferencias.siua.ac.cr from storage: no data storage active
Aug 18 15:07:29 conferencias prosody[36633]: internal.auth.conferencias.siua.ac.cr:muc: Error restoring room jvbbrewery@internal.auth.conferencias.siua.ac.cr from storage: no data storage active
Aug 18 15:07:34 conferencias prosody[36633]: internal.auth.conferencias.siua.ac.cr:muc: Error restoring room jvbbrewery@internal.auth.conferencias.siua.ac.cr from storage: no data storage active
Aug 18 15:07:39 conferencias prosody[36633]: internal.auth.conferencias.siua.ac.cr:muc: Error restoring room jvbbrewery@internal.auth.conferencias.siua.ac.cr from storage: no data storage active
Aug 18 15:07:44 conferencias prosody[36633]: internal.auth.conferencias.siua.ac.cr:muc: Error restoring room jvbbrewery@internal.auth.conferencias.siua.ac.cr from storage: no data storage active
******************************************
ERROR2:
******************************************
nano /var/log/jitsi/jicofo.log
*Error presentado:
org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Can not invite participant -- no bridge available.
* Si ejecutamos
-----------------------------------------------
grep JVB_SECRET /etc/jitsi/videobridge/config
Da:
JVB_SECRET=anzz9aLK
* Si ejecutamos
-------------------------------------------------
grep 'org.jitsi.videobridge.xmpp.user.shard.PASSWORD' /etc/jitsi/videobridge/sip-communicator.properties
Da:
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=anzz9aLK
* Si ejecutamos
-------------------------------------------------
grep password /var/lib/prosody/auth%2econferencias%2esiua%2eac%2ecr/accounts/jvb.dat
DA:
["password"] = "anzz9aLK";
Component "focus.conferencias.siua.ac.cr"
component_secret = "YHZt2RZt"
Y vemos que los usuarios son focus y jvb
Component "internal.auth.conferencias.siua.ac.cr" "muc"
storage = "memory"
modules_enabled = {
"ping";
}
admins = { "focus@auth.conferencias.siua.ac.cr", "jvb@auth.conferencias.siua.ac.cr" }
muc_room_locking = false
muc_room_default_public_jids = true
dentro de este archivo agregamos
nano /etc/jitsi/jicofo/sip-communicator.properties
*Y modificamos
#org.jitsi.jicofo.BRIDGE_MUC=JvbBrewery@internal.auth.conferencias.siua.ac.cr
X
org.jitsi.jicofo.jibri.BREWERY=jvb@internal.auth.conferencias.siua.ac.cr
Verificamos el archivo
/etc/prosody/conf.d/conferencias.siua.ac.cr.cfg.lua
EN:
*******************************
Se puede forza con
prosodyctl passwd jvb@auth.mydomain.org
*******************************
nano /etc/prosody/conf.d/videoconf-test.mydomain.cfg.lua
Error
jitsi meet CONFERENCE FAILED: conference.videobridgeNotAvailable
https://community.jitsi.org/t/saslerror-using-scram-sha-1-not-authorized-on-debian-buster-system-with-existing-prosody/26775/9
Paso1: Comprobar que
--------------------------------------------------------------
nano /etc/prosody/conf.d/conferencias.siua.ac.cr.cfg.lua
en Component "focus.conferencias.siua.ac.cr"
component_secret = "YHZt2RZt"
--------------------------------------------------------------
Tenga la misma contraseña que
--------------------------------------------------------------
nano /etc/jitsi/jicofo/config
JICOFO_AUTH_PASSWORD=YHZt2RZt
---------------------------
PASO2: comprobar que
---------------------------
nano /etc/jitsi/videobridge/sip-communicator.properties
-----
org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=anzz9aLK
-----
Tegan la misma contaseña que
nano /etc/jitsi/videobridge/config
# sets the shared secret used to authenticate to the XMPP server
JVB_SECRET=anzz9aLK
MODIFICAMOS
nano /etc/jitsi/videobridge/config
JVB_OPTS="--apis=,"
X
JVB_OPTS="--apis=xmpp,rest"
---------------------------
PASO3: comprobar que
---------------------------
nano /etc/jitsi/jicofo/config
# sets the password to use for XMPP user logins
JICOFO_AUTH_PASSWORD=vjnxpdkV
Tenga la misma contraseña que
nano /var/lib/prosody/auth%2econferencias%2esiua%2eac%2ecr/accounts/focus.dat
return {
["password"] = "vjnxpdkV";
};
Y que
nano /var/lib/prosody/auth%2econferencias%2esiua%2eac%2ecr/accounts/jvb.dat
return {
["password"] = "fq0aFMqd";
};
cat /etc/jitsi/videobridge/config | grep JVB_SECRET
JVB_SECRET=MySecretIsHere
than:
prosodyctl passwd jvb@auth.your.domain.com
Enter JVB_SECRET twice here
followed by
prosodyctl restart
/etc/init.d/jicofo restart
/etc/init.d/jitsi-videobridge2 restart
/etc/init.d/prosody restart
- NUEVA VERSION el archivo de idioma se cambia en libs/app.bundle.min.js
- Corregir errores de jibri
- https://community.jitsi.org/t/tutorial-jibri-overview-troubleshooting-tips-tricks-solve-your-jibri-problems-quickly/86054
- Error al grabar con jibri el driver de chrome estaba viejo para actualilzarlo
sudo apt-get install unzip && a=$(uname -m) && rm -r /tmp/chromedriver/ mkdir /tmp/chromedriver/ && wget -O /tmp/chromedriver/LATEST_RELEASE http://chromedriver.storage.googleapis.com/LATEST_RELEASE && if [ $a == i686 ]; then b=32; elif [ $a == x86_64 ]; then b=64; fi && latest=$(cat /tmp/chromedriver/LATEST_RELEASE) && wget -O /tmp/chromedriver/chromedriver.zip 'http://chromedriver.storage.googleapis.com/'$latest'/chromedriver_linux'$b'.zip' && sudo unzip /tmp/chromedriver/chromedriver.zip chromedriver -d /usr/local/bin/ && echo 'success?'
Personalización
- Para personalizar ingrese a /usr/share/jitsi-meet
cd /usr/share/jitsi-meet
- Abrimos el archivo
nano /usr/share/jitsi-meet/interface_config.js
- Modificamos
--------------------------------------
APP_NAME: 'Jitsi Meet',
X
APP_NAME: 'Conferencias SIUA',
--------------------------------------
BRAND_WATERMARK_LINK: '',
X
BRAND_WATERMARK_LINK: 'https://www.siua.ac.cr',
--------------------------------------
DEFAULT_BACKGROUND: '#040404',
X
DEFAULT_BACKGROUND: '#0F2742',
--------------------------------------
DEFAULT_LOGO_URL: 'images/watermark.svg',
DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.svg',
X
DEFAULT_LOGO_URL: 'images/watermark.png',
DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.png',
--------------------------------------
JITSI_WATERMARK_LINK: 'https://jitsi.org',
X
JITSI_WATERMARK_LINK: '/?p=3233',
--------------------------------------
NATIVE_APP_NAME: 'Jitsi Meet',
X
NATIVE_APP_NAME: 'Conferencias SIUA',
--------------------------------------
PROVIDER_NAME: 'Jitsi',
X
PROVIDER_NAME: 'SIUA',
--------------------------------------
SUPPORT_URL: 'https://community.jitsi.org/',
X
SUPPORT_URL: 'https://ugit.siua.ac.cr',
--------------------------------------
- Abrimos el archivo
nano /etc/jitsi/meet/conferencias.siua.ac.cr-config.js
- Modificamos
--------------------------------------
//sendMultipleVideoStreams: false
X
sendMultipleVideoStreams: true
--------------------------------------
screenshotCapture : {
// Enables the screensharing capture feature.
enabled: false,
//
// The mode for the screenshot capture feature.
// Can be either 'recording' - screensharing screenshots are taken
// only when the recording is also on,
// or 'always' - screensharing screenshots are always taken.
mode: 'recording'
}
--------------------------------------
// defaultLocalDisplayName: 'me',
X
defaultLocalDisplayName: 'yo',
--------------------------------------
// defaultRemoteDisplayName: 'Fellow Jitster',
X
defaultRemoteDisplayName: 'Nuevo Miembro',
--------------------------------------
// defaultLanguage: 'en',
X
defaultLanguage: 'es',
--------------------------------------
// enableCalendarIntegration: false,
X
enableCalendarIntegration: true,
--------------------------------------
- Ahora abrimos
nano /usr/share/jitsi-meet/lang/main-es.json
- Modificamos
--------------------------------------
"defaultNickname": "ej. Juan Pérez",
X
"defaultNickname": "ej. Gustavo Matamoros",
--------------------------------------
"productLabel": "de Jitsi Meet",
X
"productLabel": "de Conferencias SIUA",
--------------------------------------
"headerTitle": "Jitsi Meet",
X
"headerTitle": "Conferencias SIUA",
--------------------------------------
"logoDeepLinking": "Logotipo de la reunión de Jitsi",
X
"logoDeepLinking": "Logotipo de la reunión de Conferencias SIUA",
--------------------------------------
"headerSubtitle": "Reuniones seguras y de alta calidad",
X
"headerSubtitle": "La Sede Interuniversitaria de Alajuela (SIUA) le da la bienvenida. El sistema 'Conferencias SIUA' 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",
--------------------------------------
"confirmAddLink": "¿Quiere añadir un enlace de Jitsi a este evento?",
X
"confirmAddLink": "¿Quiere añadir un enlace de Conferencias SIUA a este evento?",
--------------------------------------
- Abrimos
nano /usr/share/jitsi-meet/lang/main-esUS.json
- Modificamos
--------------------------------------
"defaultNickname": "ej. Juan Pérez",
X
"defaultNickname": "ej. Gustavo Matamoros",
--------------------------------------
"productLabel": "de Jitsi Meet",
X
"productLabel": "de Conferencias SIUA",
--------------------------------------
"headerTitle": "Jitsi Meet",
X
"headerTitle": "Conferencias SIUA",
--------------------------------------
"logoDeepLinking": "Logotipo de la reunión de Jitsi",
X
"logoDeepLinking": "Logotipo de la reunión de Conferencias SIUA",
--------------------------------------
"headerSubtitle": "Reuniones seguras y de alta calidad",
X
"headerSubtitle": "La Sede Interuniversitaria de Alajuela (SIUA) le da la bienvenida. El sistema 'Conferencias SIUA' 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"
--------------------------------------
"confirmAddLink": "¿Quiere añadir un enlace de Jitsi a este evento?",
X
"confirmAddLink": "¿Quiere añadir un enlace de Conferencias SIUA a este evento?",
--------------------------------------
- Abrimos
nano /usr/share/jitsi-meet/css/all.css
- Modificamos
--------------------------------------
background-image:linear-gradient(0deg,rgba(0,0,0,.2),rgba(0,0,0,.2)),url(../images/welcome-background.png);
X
background-image:none;
--------------------------------------
background-color:#131519;
X
background-color:#0F2742;
--------------------------------------
.welcome .header{background-image:none;background-position:center;background-repeat:none;background-size:cover;padding-bottom:0;background-color:#131519
X
.welcome .header{background-image:none;background-position:center;background-repeat:none;background-size:cover;padding-bottom:0;background-color:#0F2742
--------------------------------------
.welcome .welcome-watermark .watermark.leftwatermark{width:71px;height:32px}
X
.welcome .welcome-watermark .watermark.leftwatermark{width:60px;height:60px}
--------------------------------------
.watermark{display:block;position:absolute;top:15;width:71px;height:32px;
X
.watermark{display:block;position:absolute;top:15;width:60px;height:60px;
--------------------------------------
- Para modificar el logo descargamos el siguientes archivo
- Y remplazar la /usr/share/jitsi-meet/images/watermark.png
- Para modificar los meta data abra, abrimos
nano /usr/share/jitsi-meet/title.html
- Modificamos
<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"/>