Publicado: 31 de marzo de 2020

Cómo crear una instancia de Jitsi en casa para hacer videoconferencias seguras y respetuosas con la privacidad de los usuarios.

Aislados, desde casa, queriendo conectarnos con nuestros familiares y amigos, o utilizando las videoconferencias como herramienta de trabajo,en cualquiera de estas situaciones solemos encontrar un problema. La mayor parte de las aplicaciones que conocemos no son respetuosas con la privacidad. Además, en algunos casos son herramientas caras.

Por eso os traigo Jitsi. Una solución estupenda para trabajar sin renunciar a la privacidad y con una inversión mínima o nula (ambas opciones son posibles).

Jitsi, tal como lo define Wikipedia es “una aplicación de videoconferencia, VoIP, y mensajería instantánea con aplicaciones nativas para iOS y Android, y con soporte para Windows, Linux y Mac OS X a través de la web. Es compatible con varios protocolos populares de mensajería instantánea y de telefonía, y se distribuye bajo los términos de la Apache License, por lo que es software libre y de código abierto.”

Eso quiere decir que Jitsi es una aplicación más que interesante para hacer videoconferencias sin renunciar a nuestra privacidad.

Para las preguntas, tan obvias como lógicas, acerca de las vías de financiación de Jitsi os remito a la pregunta al respecto en las preguntas frecuentes (FAQ’s) del proyecto.

Si bien es cierto que en Wikipedia se dice que está en estado “beta” (lo que quiere decir que no hay aún una versión completamente estable) funciona muy bien y es perfectamente productiva.

Lo cierto, y esto es lo primero que me gustaría decir, se puede utilizar Jitsi sin necesidad de instalar nada. Accediendo a la siguiente dirección (https://meet.jit.si/) se puede crear una sala de reunión (el espacio donde tendrá lugar la videoconferencia) y después invitar a las personas con las que se quiera hablar.

Es un buen punto de partida para probar cómo funciona Jitsi. Pero si ya lo has probado, te gusta, y lo vas a usar con cierta frecuencia, ¿no sería más lógico intentar crear tu propia instancia y así no saturar los recursos que Jitsi.org pone a disposición de todo el mundo? Yo tengo claro que lo voy a usar y que quiero ayudar al proyecto, al menos no utilizando innecesariamente sus recursos. Innecesariamente porque soy capaz de crear y configurar mi propia instancia (ya lo he hecho, por eso lo digo tan alegremente ;-).

Aclaro aquí que está guía requiere ciertos conocimientos previos, en caso de necesitar ayuda en la comunidad de Jitsi hay foros para ello. Por otro lado, también podéis poneros en contacto conmigo si tenéis mucho interés y el resto de opciones no os ayudan.

Este es un punto importante que me gusta resaltar. Si usas Software Libre y te gusta contribuye de la forma que puedas a esos proyectos. Ten en cuenta que nos libra de las garras del software privativo (a veces incluso forzosamente de pago) que tan poco nos gusta.

Creo que podréis reproducir la instalación con mis instrucciones, pero por si alguien quiere ver más información os pongo aquí enlaces relevantes e interesantes del proyecto:

ACTUALIZACIÓN (17/05/30): he encontrado una página web donde se explica cómo personalizar la página que muestra el servidor para modificar el logotipo, el enlace del mismo e incluso el favicon (en inglés):

Además, he descubierto cómo modificar el texto que aparece en la página para crear las salas.

Para ello, debes tener en cuenta que los archivos de jitsi se sitúan en /usr/share/jitsi-meet/. Para buscar el texto que vemos al crear las salas ejecuta el siguiente comando que buscará la cadena de texto entrecomillada de forma recursiva y sin ditinguir mayúsculas/minúsculas en la ruta especificada: grep -r -i "texto a buscar" /usr/share/jitsi-meet/

El resultado te mostrará qué archivo contiene ese texto. Así que para cambiarlo solo tendrás que modificarlo. Los archivos json son editables con cualquier editor de texto.

ACTUALIZACIÓN (19/05/30): he preguntado algunas dudas a la gente de ValenciaTech y me han contestado muy amablemente. Aprovecho para enlazar aquí su tutorial en castellano para instalar Jitsi en agradecimiento.

Os recomiendo ver las actualizaciones al final del artículo porque es posible que instalar Jitsi en una máquina virtual no sea muy buena idea si quieres hacer videoconferencias con más de una persona. Para instalar Jitsi directamente en un equipo las instrucciones son las mismas obviando el uso de VirtualBox.

¡Vamos al lío!

Aunque hay más supuestos posibles, asumo que el caso más habitual será equivalente al mío donde parto de la siguiente situación inicial:

  • Tengo un ordenador conectado a Internet a través de un router al que tengo acceso y puedo configurar.
  • Tengo contratado un dominio y tengo acceso a la configuración del mismo (a través de un proveedor en Internet). Se podría hacer la instalación de Jitsi sin la contratación de un dominio, pero eso tendría desventajas importantes. Por este motivo, y teniendo en cuenta que un dominio cuesta unos 12 € al año, no contemplo la opción de prescindir del dominio.

Por motivos de seguridad, principalmente para no tener el servicio accesible permanentemente ni preocuparme mucho de configurarlo, he creado una máquina virtual con VirtualBox para crear en ella la instancia de Jitsi. De esta forma con apagar la máquina virtual será suficiente para que el servicio de Jitsi no esté disponible.

Por tanto, la primera cosa a realizar es crear una máquina virtual para alojar posteriomente el servicio de Jitsi.

Yo me he decantado por Xubuntu como sistema operativo para la máquina pues es una distro suficientemente ligera como para aprovechar bien los recursos asignados a la máquina virtual.

En este caso he descargado la versión 18.04.3 que la última revisión a día de hoy de la última versión LTS de dicha distro y tiene soporte hasta abril de 2021. No obstante para las versiones siguientes de distribuciones derivadas de Ubuntu las instrucciones son las mismas (al menos a día de hoy).

En cuanto a la configuración de la máquina virtual os pongo aquí las cosas que he modificado sobre la configuración estándar que realizar VirtualBox (5.2.38) por si alguien quiere hacerlo igual:

  • En “sistema” le he dado 2048 MB de RAM y le he quitado la unidad de disquete.
  • En “sistema” le he asignado dos procesadores (mi equipo tiene 4 hilos).
  • En “pantalla” le he dado 64 MB de RAM.
  • Al crear el disco duro elegí 12 GB dinámicos en vez de 10 GB por si acaso.
  • En red el adaptador lo he puesto en “adaptador de puente” (bridge) para evitar tener un segundo router (virtual).

El resto de opciones no las he tocado.

Configuración máquina virtual

Lo siguiente es arrancar la máquina hacer la configuración de la instalación, esperar a que se complete la instalación y luego actualizar. Personalmente me gusta desde la línea de comandos.

Esto deja la máquina lista para usarla.

Configuración inicial de la máquina virtual.

En primer lugar debemos asignarle a la máquina el nombre de equipo que va a tener. Normalmente será un subdominio de ese dominio que debemos tener contratado. Para ello ejecutamos en un terminal (para este ejemplo el nombre del host será "saturno" y el dominio será "midominio.com"):

hostnamectl set-hostname saturno

Ahora editamos el archivo /etc/hosts, dejando la primera línea como sigue:

127.0.0.1 saturno.midominio.com saturno

Guardamos y cerramos el archivo. Comprobamos que esté bien con el siguiente comando que debe devolver el nombre del host:

127.0.0.1 saturno.midominio.com saturno

Guardamos y cerramos el archivo. Comprobamos que esté bien con el siguiente comando que debe devolver el nombre del host:

hostname -f

Después vamos a poner una ip fija a la máquina virtual. Podéis ver qué ip tiene asignada con el comando “ifconfig” y a continuación ir a las conexiones de red y asignarle la ip de forma manual para que sea fija. Lo ideal es que esa ip fija esté fuera del rango que asigna el DHCP para evitar así posibles conflictos, o bien reservar la ip para ese equipo (ojo que si la reserva se hace con la dirección MAC al ser una máquina virtual si un día levantamos un clon la MAC habrá cambiado).

Esto es importante ya que luego tendremos que redireccionar puertos y si no van a esta máquina (porque dicha ip se haya asignado a otro dispositivo) Jitsi no funcionará.

Ahora cambiamos de tercio y configuramos nuestro dominio y el router.

Con respecto al dominio debemos ir al panel de gestión del dominio de nuestro proveedor de dominios (en mi caso Cpanel) y crear un subdominio nuevo. Por ejemplo saturno.midominio.com.

Ahora debemos modificar la “zona del dominio” para redirigir el subominio a nuestra máquina virtual.

Para ello, en primer lugar, debemos averiguar cuál es nuestra ip pública. Buscando “cúal es mi ip pública” en vuestro buscador (yo últimamente uso Qwant) encontrareis varías páginas donde podéis averiguar este dato.

Ahora nos vamos al “zone editor” del panel de gestión del proveedor de nombres y modificamos el subdominio para que apunte a nuestra ip pública.

Es probable que alguien ya se haya dado cuenta de que esto tiene un inconveniente. Si no tenemos una ip fija, que lo normal es no tenerla, tendremos que cambiar esto cada vez que cambie la ip que nos asigna nuestro SIP (proveedor de servicios de Internet, es decir, telefónica, vodaphone o el que sea). También podíamos tener un DNS dinámico pero, en mi caso al menos, me resulta más fácil comprobar si mi ip pública ha cambiado y en caso afirmativo cambiar la configuración de la zona DNS.

Ahora vamos a configurar el router.

Necesitaremos entrar a la configuración del router como administrador. Por cierto, si no has puesto una buena contraseña para tu router es un buen momento para hacerlo, ten en cuenta que a partir de ahora va a estar más expuesto que antes ya que va a haber un subdominio apuntando a él.

Tenemos que ir a las opciones de redireccionamiento de puertos (port forwarding). Los puertos que hay que redirigir son:

  • 443 TCP
  • 4443 TCP
  • 10000 UDP (algunas instrucciones establecen un intervalo de 10000 a 20000, pero yo lo he hech solo con el 10000 porque fue lo primero que vi en la guía rápida de Jitsi y va bien).
  • 80 TCP y UDP

Es posible que debas reiniciar el router para que todo funcione bien tras guardar los cambios.

A continuación instalamos y configuramos Jitsi.

Aquí seguimos las instrucciones de la página de la guía rápida de Jitsi Meet (https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md).

Primero añadimos el repositorio de Jitsi.

echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -

Después nos aseguramos de que está habilitada la recepción de paquetes via HTTPS:

apt install apt-transport-https

Ahora actualizamos y después instalamos Jitsi:

apt update
apt -y install jitsi-meet

Como no tenemos servidor de páginas web en la máquina por defecto el instalador instalará Nginx y lo configurará en consecuencia.

Durante la instalación se nos pregunta por el hostname (nombre del equipo) para la instacia de Jitsi. Debemos poner el nombre del hostname. En el ejemplo de estas instrucciones: saturno.midominio.com

Ahora, para mejorar la accesibilidad, vamos a generar un certificado digital a través de Let’s Encrypt. En caso de no hacerlo se aplicará el certificado autofirmado que se ha generado durante la instalación. Es válido, pero cada persona que entre en las salas que creemos tendrá que aceptar una excepción de seguridad a mano. Esto no es deseable.

Para que esto funcione es importante que hayamos puesto la redirección del puerto 80 en el router a la ip de esta máquina. En caso contrario el proceso fallará.

Ejecutamos con permisos de administrador:

/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

Una cosa que me pasó y tardé un poco en darme cuenta es que al crear el subdominio en el Cpanel por defecto crea dos, con "www." y sin ello. Es decir crea "www.saturno.midominio.com" y "saturno.midominio.com". Sin embargo, durante toda la instalación y configuración el subdominio y nombre del host que utilicé fue "saturno.midominio.com". Por tanto, si bien al entrar desde internet en ambos se llega a la página de Jitsi solo en el caso de "saturno.midominio.com" aparece el certificado de Let's Encrypt, puesto que es el único subdominio para el que se ha solicitado dicho certificado. En el otro caso aparece la adevertencia de Firefox en la que hay que aceptar el certificado autofirmado a mano. En este caso podemo eliminar en el Cpanl el subdominio que no está firmado por Let's Encrypt o redirigirlo al otro para evitar problemas.

En principio, ahora ya deberíamos poder utilizar Jitsi simplemente accediendo al subdominio que hemos creado (con https) desde un navegador. Es recomendable probarlo desde fuera de la máquina virtual y a ser posible también desde fuera del la LAN.

En mi caso tuve un problema. Jitsi solo me habilitaba una conexión. Con lo que creaba la sala e iniciaba la conversación pero cuando compartía el enlace e intentaba entrar desde otro equipo no se cargaba la página. Me di cuenta al cerrar la primera ventana e intentar entrar desde otro equipo con el que no estaba pudiendo entrar. Al no haber ninguna sesión abierta podía entrar desde cualquier equipo pero el segundo equipo y sucesivos que intentaban entrar se encontraban con que la página no cargaba o la aplicación móvil no podía entrar.

Al final, mirando en la parte final de la guía rápida probé varias cosas y la que arregló el problema fue la siguiente:

Hay un párrafo que explica que las instalaciones en sistemas con systemd por defecto tendrán valores bajos para el número máximo de procesos y archivos abiertos. Para corregir esto modificamos el archivo /etc/systemd/system.conf con los siguientes valores:

DefaultLimitNOFILE=65000
DefaultLimitNPROC=65000
DefaultTasksMax=65000

Veréis que dichas lineas vienen comentadas con una asterisco delante. Lógicamente hay que quitar el asterisco y poner el valor pertinente. Yo la primera no la encontré así que la puse a mano al final.

Podéis ver instrucciones para visualizar y comprobar que estos valores están bien introducidos aquí: https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md#systemd-details. Interesante hacerlo ya que reiniciamos el servicio y le forzamos a coger los nuevos valores.

A partir de aquí todo ha funcionado perfectamente. De hecho la experiencia es mejor que la que he tenido con Nexcloud Talk y, de hecho, aquí la multiconferencia funciona muy bien y allí nunca conseguí que funcionase.

Claro que de este modo cualquiera que acceda a vuestro Jitsi puede crear nuevas conferencias, así que para establecer usuarios autorizados habría que seguir las siguientes instrucciones: https://github.com/jitsi/jicofo#secure-domain.

¡A disfrutar!

ACTUALIZACIÓN (17/05/30): después de haber usado jitsi unas semanas os puedo decir que es muy interesante instalarlo y usarlo. No obtante os muestro aquí algunas dificultades que he tenido.

Por un lado, yo lo he instalado en máquinas virtuales (Virtual Box) de distribuciones basadas en debian, pero con recursos limitados: 2 cpu, 2 GB RAM. Un problema que me encuentro frecuentemente es que en viodeconferencias con otra persona todo va muy bien, pero si quiero que seamos 3 o más empiezo a tener dificultades. A partir del tercero, a veces el cuarto, no entran a la sala bien, o solo se les oye. Creo que es un problema de recursos de la máquina, pero tengo que seguir investigando. Eso sí, dado que veo que todas las guías recomiendan instalarlo en Debian, eso voy a hacer y eso os recomiendo.

Las actualizaciones también están siendo un problema. Antes de actualizar una máquina creo un clon enlazado (es instantáneo) y pruebo en el clon. Tras actualizar y reiniciar me ha pasado varias veces que jitisi no funciona. No hay forma de conectarse a la página. La solución a sido esperar unos días y luego la actualización sí funciona. Entiendo que debe haber una nueva actualización que corrija algún error.

Por otro lado, en las guías hay información sobre el hecho de que no todos los navegadores funcionan igual de bien. Mi experiencia me dice que mejor con Chromium (o Chrome si es que usas eso...) que con Firefox.

ACTUALIZACIÓN (19/05/30): tras haber preguntado algunas dudas a la gente de ValenciaTech os comento que los problemas que estoy experimentando parece que están relacionados con el hecho de haber instalado el servidor de Jitsi en una máquina virtual con la consiguiente merma de recursos. Por tanto, sería mejor hacer la instalación en una máquina más potente sin virtualización de por medio. En cuanto al asunto de controlar que la máquina solo sea accesible cuando nosotros queramos, realmente no es un problema puesto que podemos utilizar un pequeño programa (scritp) para controlar que el servicio esté apagado al encender el ordenador y se ponga en marcha y se apague cuando nosotros queramos. Si al final lo implemento lo compartiré. No obstante, si alquien quiere saber cómo habría que hacerlo solo tiene que escribirme y se lo explico.

Volver arriba

Créditos de las imágenes tomadas del exterior: