Instala Jitsi en un servidor propio

·

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í:

Comments

20 respuestas a «Instala Jitsi en un servidor propio»

    1. Avatar de Javier Casares

      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.

  1. Avatar de Lynch

    ¡Hola! Gracias por el tutorial. ¿Es posible intalar Jitsi en un servidor con Windows, o sólo vale para Ubuntu? Gracias. 🙂

  2. Avatar de Rubén

    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

    1. Avatar de Javier Casares

      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.

    2. Avatar de Antonio Romero
      Antonio Romero

      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

    1. Avatar de Javier Casares

      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.

  3. Avatar de Guille

    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.

    1. Avatar de Javier Casares

      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…

  4. Avatar de Carlos Ibañez

    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……………..

    1. Avatar de NOCOPY

      Porqué haces esa recomendación? que cambia cuando haces ese cambio ? encriptas la contraseña ??

  5. Avatar de Raúl Contreras
    Raúl Contreras

    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?

  6. Avatar de osmel

    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.

  7. Avatar de cnrr

    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

  8. Avatar de Yocelis

    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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *