Ahora que las videollamadas están creciendo, uno de los servicios que también lo hace es Jitsi, un sistema de código abierto e instalable en tu propio servidor al más puro estilo Google Hangouts donde todo el mundo puede acceder y charlar en multipantalla.
Instalar Jitsi es relativamente sencillo, y lo mejor es hacerlo en VPS. Dependerá de la cantidad de usuarios concurrentes que vayas a tener para necesitar más o menos recursos, aunque en principio con una máquina de 1 CPU, 2 GB de RAM y 10 GB de SSD es más que suficiente para hacer pruebas y soportar unos cuantos usuarios. En este ejemplo voy a usar Ubuntu 18.
Instalación de Jitsi
Lo primero que haremos será poner el servidor en hora y actualizar el sistema operativo y todo en general, además de algunas utilidades útiles.
$ timedatectl set-timezone UTC
$ timedatectl set-ntp on
$ apt -y update && apt -y upgrade && apt -y dist-upgrade && apt -y autoremove
$ apt -y install software-properties-common curl vim unzip
Para trabajar en la parte web vamos a instalar nginx. En este caso usaremos una rama que no es la del sistema operativo y lo configuraremos para que al reiniciar el servidor se inicie automáticamente.
$ add-apt-repository ppa:ondrej/nginx
$ apt -y update && apt -y upgrade && apt -y dist-upgrade && apt -y autoremove
$ apt -y install nginx
$ systemctl stop nginx.service
$ systemctl enable nginx.service
$ systemctl start nginx.service
Y casi, para acabar, instalaremos Jitsi. Al final de la instalación nos pedirá el hostname (dominio / subdominio) en el que queremos que funcione y donde deberíamos instalar el HTTPS. Es recomendable tenerlo preparado previamente.
$ wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
$ sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
$ apt -y update && apt -y upgrade && apt -y dist-upgrade && apt -y autoremove
$ apt -y install apt-transport-https jitsi-meet jitsi-videobridge2
A mitad de instalación nos pedirá el hostname que vamos a utilizar.
chat.example.com
Además, en una siguiente pantalla nos pedirá qué certificado queremos usar. A menos que tengas ya un certificado premium previo, lo mejor es elegir la opción de un auto-certificado.
Generate a new self-signed certificate
Una vez acabe la instalación podemos configurar de forma automática un certificado Let’s Encrypt que permita navegar de forma cifrada por el sitio.
Para ello sólo hemos de ejecutar el comando (recuerda haber apuntado el hostname a la IP previamente, si no será difícil que funcione).
$ /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
En este momento podemos saltar a la última sección de «Finalizar la instalación», pero básicamente ya podríamos entrar en el sitio y usarlo.
Configurar para más de 100 usuarios
Si queremos tener muchos usuarios necesitaremos hacer algunos cambios en el sistema. Para ello hemos de abrir el fichero de configuración y modificar algunos valores.
vim /etc/systemd/system.conf
Allí buscaremos estos 3 valores y los modificaremos (o activaremos si están comentados).
DefaultLimitNOFILE=65000
DefaultLimitNPROC=65000
DefaultTasksMax=65000
Esta instalación por defecto está pensada para unos 100 usuarios y de forma pública (sin contraseñas ni usuarios registrados). Así que vamos a dar algunos pasos y cambiar la configuración si es necesario.
Hay que tener en cuenta que si vas a tener más de 100 usuarios deberás incrementar los recursos del sitio, principalmente la CPU y la RAM.
Segurizar tu Jitsi
Una de las cosas que permite Jitsi es tener un sistema de control de los canales. He de reconocer que he seguido varias veces la documentación, por activa y por pasiva, pero no he conseguido hacer que funcione (al final acababa con el sitio igualmente público y sin ningún tipo de control sobre los usuarios registrados).
Sin duda creo que los desarrolladores deberían mejorar esa parte de la documentación, ya que tal y como viene Jitsi de serie es bastante absurdo y no tiene ningún sentido… está muy bien tener un sistema abierto, pero que esté 100% abierto y que no haya control no me parece muy razonable.
Si alguien encuentra documentación (me da igual en qué idioma) sobre cómo mejorar la seguridad, por favor, que me lo pase que intentaré implementarlo y documentarlo de forma sencilla paso a paso.
Finalizar la instalación
En principio en este momento ya tenemos todo listo, pero para que no se haya quedado nada pillado, reiniciaremos la máquina virtual y tendremos la instalación y los recursos frescos, previa una actualización de todo, por si hay alguna biblioteca que requiere compatibilidad con algo de lo que hemos instalado.
$ apt -y update && apt -y upgrade && apt -y dist-upgrade && apt -y autoremove
$ reboot
Una vez la máquina se haya reiniciado, podemos visitar el hostname que hemos configurado, entrando en https://chat.example.com/
, por ejemplo. Esto nos mostrará una pantalla tal que así:

Aquí hay una guía para implementar Jitsi autohospedado con autenticación. Espero que te sirva.
https://dev.to/noandrea/self-hosted-jitsi-server-with-authentication-ie7
Sí, lo había visto, pero no me acabó de funcionar la primera vez que lo probé… lo haré de nuevo, a ver si es que se me escapó algo.
¡Hola! Gracias por el tutorial. ¿Es posible intalar Jitsi en un servidor con Windows, o sólo vale para Ubuntu? Gracias. 🙂
Pues, la verdad, creo que no… hay una App para usar, pero no como servidor. De todas formas, aquí está todo el software: https://desktop.jitsi.org/Main/Download#stableline
Hola, como puedo cambiar o personalizar el index en un servidor creado por mi?
Solo para tunearlo
PD: MUY BUENA data
Muy lindo todo, pero eh realizado muchísimas pruebas y solo funciona cuando al equipo donde lo instalas le pones una ip pública.
Detras de un firewall/NAT Jitsi no funciona apenas sirve pa chat escrito
Para la parte del proxy, sólo hay que configurar estas líneas…
If the installation is on a machine behind NAT jitsi-videobridge should configure itself automatically on boot. If three way call does not work further configuration of jitsi-videobridge is needed in order for it to be accessible from outside. Provided that all required ports are routed (forwarded) to the machine that it runs on. By default these ports are (TCP/443 or TCP/4443 and UDP/10000). The following extra lines need to be added to the file /etc/jitsi/videobridge/sip-communicator.properties:
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=
And comment the existing org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES. See the documentation of ice4j for details.
El problema es q tienes q dar acceso a todos los puertos q utiliza.. ( no tengo esa info )… Es muy complicado xq redireccionaras posiblemente puertos q ya tenias en uso… Por eso es mejor en IP publics
Hola con que caracteristicas recomendarian para un server con 3000 usuarios concurrentes
En un caso así, de tal tamaño, se requerirá bastante a nivel de recursos… probablemente unos 16 CPU, 32 GB de RAM, y al menos 1 Gbps de ancho de banda.
Muchas gracias, una posible ampliación del artículo sería para eliminar el código de Google Analytics para dar más privacidad.
Lo único que he visto sobre seguridad es ponerle la contraseña a la sala, pero eso no impide que cualquiera abra otra sala en el servidor, que supongo es lo que queremos lograr: por ejemplo para en un colegio que solo puedan abrir sala los profesores del mismo.
Sí, en este sentido aún le falta mucho control al sistema… hablando con otra gente se nos ha pasado por la cabeza la posibilidad de bloquear desde una capa de web-proxy por encima «las carpetas», pero complica un poco la cosa…
A mi me funciona perfecto el habilitar el que se pidan credenciales de autenticación para crear una sala. De hecho nadie puede ingresar a la sala creada cuando aun no llega el host (quien la creó). Solo allí los demás pueden ingresar.
La recomendación que hago para que funcione, es que sigan al pie de la letra el siguiente link.
https://jitsi.github.io/handbook/docs/devops-guide/secure-domain
fácil de seguir y más fácil de implementar.
Una recomendación adicional… en el archivo de configuracion -cfg.lua
deben mantener la linea authentication= «internal_hashed» y no «internal_plain»
VirtualHost «su dominio»
— enabled = false — Remove this line to enable this host
authentication = «internal_hashed»
— Properties below are modif……………..
Porqué haces esa recomendación? que cambia cuando haces ese cambio ? encriptas la contraseña ??
Tengo instalado jitsi en un contenedor como servidor. Todo funciona sin problemas hasta que entra la segunda persona que se cae. La maquina es un core i5 y tiene 3gb de ram
¿Que no he hecho o he hecho mal?
Saludos a todos, yo tengo instalado el jitsi en un servidor local y me funciona perfectamente, ya lo tengo instado con seguridad y todo, pero me gustaría saber porque no lo puede abrir desde el móvil, alguien tiene alguna idea de porque sucede esto y que puede hacer para que me funcione desde el movil, este servidor de jitsi no esta de cara a Internet. Gracias.
Aqui tienes una instalacion de jitsi con cuentas de usuario para crear salas
https://www.eduardocollado.com/2020/04/25/instalacion-y-configuracion-de-jitsi/
Hola que características técnicas en servidor y conexión me recomiendan para instalar jitsi para una institución educativa que pueda soportar de 1000 a 1500 usuarios, y que proveedor de hospedaje me recomiendan
Hola, tengo un Jitsi detras de nat en pfsense, he hecho loq ue sugieren , la cuestion es que todos de la red externa se conectan , pero no hay video ni audio, alguna sugerencia les agradeceria.
Hay forma de limitar el consumo de ancho de banda o comprimir el video en h323 porque consume demasiado