cimnine.jitsi_meet

jitsi_meet

Un rol de Ansible para instalar Jitsi Meet.

Introducción

Este es un rol de Ansible que instala Jitsi Meet con nginx como proxy que termina en TLS y (opcionalmente) un certificado de Let's Encrypt (a través de certbot) en Ubuntu Bionic (18.04).

Requisitos

  • Un dominio debe apuntar a tu servidor para usar Let's Encrypt.
  • Tu firewall debe permitir los puertos 80/tcp, 443/tcp, 4443/tcp, 10000/udp.
    • Si tu servidor está detrás de un NAT, asegúrate de redirigir estos puertos.

Variables del Rol

  • apt_mirror: En Ubuntu, universe debe estar habilitado. Esta variable debe indicar tu espejo del sistema. Por defecto es http://archive.ubuntu.com/ubuntu.
  • jitsi_domain: Bajo qué dominio será accesible Jitsi. Debe ser un nombre de dominio si planeas usar Let's Encrypt. Puede ser una IP en caso contrario. Por defecto es {{ inventory_hostname }}.
  • certbot_enabled: Si se debe instalar certbot y solicitar un certificado para {{ jitsi_domain }}. Por defecto es false.
  • certbot_admin_email: Dirección de correo electrónico para registrar en Let's Encrypt. Requerido si certbot_enabled=true. El correo debe existir. Sin valor por defecto.
  • jitsi_nat: Si estás ejecutando jitsi meet detrás de un NAT. Por defecto es false. Si se habilita, debes establecer jitsi_nat_local_ip y jitsi_nat_public_ip.
  • jitsi_nat_public_ip: La IP pública de tu host de jitsi meet. Por defecto es la IPv4 reportada por ipify.
  • jitsi_nat_private_ip: La IP privada de tu host de jitsi meet. Por defecto es la IPv4 que Ansible considera como la predeterminada para el host.
  • nginx_server_names_hash_bucket_size: El server_names_hash_bucket_size de nginx. Se declarará en el nginx.conf global si nginx_modify_server_names_hash_bucket_size está establecido en true. Por defecto es 64.
  • nginx_modify_server_names_hash_bucket_size: Si se debe cambiar el valor de server_names_hash_bucket_size en el archivo nginx.conf global. Por defecto es true.

También consulta geerlingguy/ansible-role-certbot/.../defaults/main.yml para más configuraciones relacionadas con certbot.

Dependencias

Depende del rol de Ansible geerlingguy.certbot para las tareas de Let's Encrypt / certbot:

ansible-galaxy install geerlingguy.certbot

Inicio Rápido

Instala Ansible:

# en macOS con Homebrew
brew install ansible

# en Debian
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible

# o a través de Python / pip
sudo python3 -m pip install ansible

Configura un nuevo servidor con Ubuntu 18.04 o consigue uno en Digital Ocean, Vultr, Hetzner Cloud, Cloudscale, Azure, Google Cloud, AWS, ...

Asegúrate de poder iniciar sesión a través de tu clave SSH:

ssh-copy-id [email protected]
ssh [email protected]

Crea un archivo de inventario:

# jitsi.ini
[jitsi]
mi-servidor-jitsi.com jitsi_domain=mi-servidor-jitsi.com [email protected]

[jitsi:vars]
ansible_user=ubuntu
ansible_become=yes # pon "no" si inicias sesión como root
apt_mirror=http://archive.ubuntu.com/ubuntu # cambia al espejo que ya usas
certbot_enabled=yes
jitsi_nat=no # activa si tu servidor está detrás de un NAT.

Crea un archivo de playbook:

# jitsi.yml
- hosts: jitsi
  roles:
      - cimnine.jitsi_meet

Instala las dependencias requeridas:

ansible-galaxy install cimnine.jitsi_meet
ansible-galaxy install geerlingguy.certbot

Ejecuta el archivo de playbook en el inventario:

# si `sudo` en tu servidor no requiere una contraseña:
ansible-playbook -i jitsi.ini jitsi.yml

# o si `sudo` en tu servidor requiere una contraseña:
ansible-playbook -K -i jitsi.ini jitsi.yml

Configuración

Jitsi Meet se puede configurar desde este rol de Ansible. Para hacerlo, el archivo /etc/jitsi/meet/{{ jitsi_domain }}-config.js del paquete original será reemplazado por un archivo gestionado por este rol.

Para habilitar este comportamiento, define la variable: managed_jitsi_config y configúralo en yes.

Es decir, agrega la última línea del siguiente ejemplo a tu jitsi.ini:

# jitsi.ini
[jitsi]
mi-servidor-jitsi.com jitsi_domain=mi-servidor-jitsi.com [email protected]
[jitsi:vars]
ansible_user=ubuntu
ansible_become=yes
apt_mirror=http://archive.ubuntu.com/ubuntu # cambia al espejo que ya usas
certbot_enabled=yes
jitsi_nat=no
managed_jitsi_config=yes  # gestiona la configuración de jitsi a través de este rol

Luego, establece todas las variables de configuración requeridas. Los valores por defecto se pueden encontrar en el archivo defaults/main.yml del rol. Todas las variables deben ser proporcionadas, ¡no solo aquellas que deseas sobrescribir! Presta atención a las variables vacías como analytics: {}: debido a la forma en que Jitsi funciona, esto tiene que ser un objeto vacío y no puede ser nulo.

Todas las configuraciones, sus valores, uso y efecto están documentados en jitsi-meet config.js.

Un ejemplo mínimo es:

jitsi_config:
  hosts:
    domain: "{{ jitsi_domain }}"
    muc: "conference.{{ jitsi_domain }}"
  bosh: "//{{ jitsi_domain }}/http-bind"
  clientNode: "http://jitsi.org/jitsimeet"
  testing:
    enableFirefoxMulticast: false
    p2pTestMode: false
  desktopSharingChromeExtId: null
  desktopSharingChromeSources: [ 'screen', 'window', 'tab' ]
  desktopSharingChromeMinExtVersion: '0.1'
  channelLastN: -1
  enableWelcomePage: true
  enableUserRolesBasedOnToken: false
  p2p:
    enabled: true
    stunServers:
      - urls: 'stun:stun.l.google.com:19302'
      - urls: 'stun:stun1.l.google.com:19302'
      - urls: 'stun:stun2.l.google.com:19302'
    preferH264: true
  analytics: {}
  deploymentInfo: {}
  localRecording: {}
  e2eping: {}
  deploymentUrls: {}

NOTA: Los requisitos de config.js pueden cambiar en cualquier momento al actualizar jitsi-meet, el upstream no se comunica muy bien al respecto. Revisa cualquier CHANGELOG y anuncios del proyecto Jitsi Meet sobre nuevos valores requeridos antes de actualizar.

NOTA: La estructura es sensible a mayúsculas y sigue la configuración exacta de variables en config.js. Así que, por ejemplo, webrctIceUdpDisable es muy diferente a WebRTCIceUDPDisable. Jitsi es inconsistente en la nomenclatura de sus variables (por ejemplo, mezcla URL y Url al azar), así que presta atención al nombre exacto.

Desinstalar

Los siguientes comandos te ayudarán a eliminar la instalación. Puede que no eliminen completamente todos los archivos, pero son suficientes para comenzar de nuevo si cometiste un error.

systemctl stop jitsi-videobridge
systemctl disable jitsi-videobridge
apt-get purge -y jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-web jicofo jitsi-videobridge

systemctl stop nginx
systemctl disable nginx
apt-get purge -y nginx nginx-common nginx-full

apt purge certbot

rm -rf /etc/jitsi /etc/nginx /etc/letsencrypt

crontab -e -u root

reboot

Licencia

MIT

Acerca del proyecto

Install jitsi-meet with nginx and (optionally) certbot

Instalar
ansible-galaxy install cimnine.jitsi_meet
Licencia
mit
Descargas
651
Propietario
Called myself «serious software architect» as a joke, then ended up sticking to that.