udelarinterior.jitsi_meet

jitsi-meet

Galaxy GitHub tag (latest by date) GitHub stars GitHub forks

Instala y configura el software de videoconferencia Jitsi Meet.

Requisitos

Debes tener el DNS apuntando al servidor y las llaves SSL. Si aún no tienes llaves SSL para el dominio, puedes utilizar el rol de Ansible geerlingguy.certbot para obtener certificados SSL (¡gratis!) de LetsEncrypt.

También necesitarás abrir los puertos 443 TCP y 10000 UDP para que los componentes de Jitsi Meet funcionen. Este rol puede usar ufw para permitir estos puertos configurando jitsi_meet_configure_firewall: true. Si utilizas otra solución de firewall como iptables, mantén jitsi_meet_configure_firewall: false. Si utilizas AWS o similar, necesitarás abrir esos puertos en el Grupo de Seguridad correspondiente.

Variables del Rol

########################################
###### variables más importantes ########
# y que debes adaptar a tu caso        #
########################################

# Sin SSL, "localhost" es el valor predeterminado correcto. Si se proporciona información de SSL,
# entonces necesitaremos un nombre de dominio real. Usando el FQDN inferido de Ansible, pero puedes
# establecer el valor de la variable explícitamente si usas un hostname más corto.
jitsi_meet_server_name: "{{ ansible_fqdn | default('localhost') }}"

# Nota de la documentación oficial:
# El instalador verificará si Nginx o Apache están presentes (en ese orden) y configurará
# un vhost dentro del servidor web que encuentre para servir Jitsi Meet. Si no se encuentra ninguno
# de los anteriores, se usará Nginx por defecto. Si ya estás utilizando Nginx en el puerto 443 en
# la misma máquina, sería mejor omitir la configuración del turnserver, ya que entrará en conflicto
# con tu puerto 443 actual, así que usa el comando apt install --no-install-recommends jitsi-meet.
jitsi_meet_install_recommends: yes

# Si (jitsi_meet_install_recommends == no), no se instalará ni estará disponible el turnserver.
jitsi_meet_use_stun_turn: false

# Los servidores STUN que se usarán en las conexiones peer to peer.
jitsi_meet_stun_servers:
  - 'meet-jit-si-turnrelay.jitsi.net:443'

# Habilitar el modo p2p.
jitsi_meet_enable_p2p_mode: true

# Configurar nginx y jitsi-meet para escuchar también IPv6.
jitsi_meet_ipv6_enable: true

# Permite especificar la instalación de jitsi meet creando y configurando
# certificados HTTPS autofirmados, que luego pueden ser reemplazados por certificados de Let's Encrypt.
jitsi_meet_cert_choice: "Generar un nuevo certificado autof firmado (Tendrás la oportunidad de obtener un certificado de Let's Encrypt más tarde)."

# NO lo establezcas aquí, porque las cadenas vacías para certificados personalizados 
# harán que se omitan las tareas de configuración personalizada de Nginx.
jitsi_meet_ssl_cert_path: ''
jitsi_meet_ssl_key_path: ''

#############
### NGINX ###
# Este rol configurará automáticamente un vhost de nginx para usar con jitsi-meet.
# Si prefieres gestionar los vhosts web a través de un rol separado, establece esto en falso.
jitsi_meet_configure_nginx: true

# Si lo deseas, puedes usar tu propia plantilla jitsi_meet_nginx.conf.j2 indicando otra ruta.
jitsi_meet_nginx_config_template:  "jitsi_meet_nginx.conf.j2"

###########################################
# otras variables útiles para personalizar #
# la instalación, pero menos utilizadas     #
###########################################

# La instalación del paquete Debian de jitsi-meet generará secretos para los componentes.
# El rol leerá el archivo de configuración y preservará los secretos incluso mientras hace plantillas.
# Si deseas generar tus propios secretos y usar esos, sobrescribe estas vars, 
# pero asegúrate de almacenar los secretos de forma segura, por ejemplo, con ansible-vault o credstash.
jitsi_meet_videobridge_secret: ''
jitsi_meet_jicofo_secret: ''
jitsi_meet_jicofo_password: ''

##################
### Cosas APT ###
# Lista de paquetes que deben instalarse antes de jitsi meet.
jitsi_meet_base_packages:
  - apt-transport-https
  - debconf
  - debconf-utils

# Si deseas, puedes usar versiones nocturnas de los componentes de Jitsi Meet.
jitsi_meet_use_nightly_apt_repo: false

jitsi_meet_apt_repos:
  stable:
    repo_url: 'deb https://download.jitsi.org/ stable/'
  unstable:
    repo_url: 'deb https://download.jitsi.org unstable/'

jitsi_meet_apt_key_url: 'https://download.jitsi.org/jitsi-key.gpg.key'
jitsi_meet_apt_key_id: '66A9CD0595D6AFA247290D3BEF8B479E2DC1389C'

# Estas configuraciones de debconf representan respuestas a preguntas interactivas durante la instalación
# del paquete deb de jitsi-meet. Si usas certificados SSL personalizados, puedes tener que establecer más opciones.
jitsi_meet_debconf_settings:
  - name: jitsi-meet
    question: jitsi-meet/jvb-serve
    value: "false"
    vtype: boolean
  - name: jitsi-meet-prosody
    question: jitsi-meet-prosody/jvb-hostname
    value: "{{ jitsi_meet_server_name }}"
    vtype: string
  - name: jitsi-videobridge
    question: jitsi-videobridge/jvb-hostname
    value: "{{ jitsi_meet_server_name }}"
    vtype: string
  - name: jitsi-meet-web-config
    question: jitsi-meet/cert-choice
    value: "{{ jitsi_meet_cert_choice }}"
    vtype: select
  - name: jitsi-meet-web-config
    question: jitsi-meet/cert-path-key
    value: "{{ jitsi_meet_ssl_key_path }}"
    vtype: string
  - name: jitsi-meet-web-config
    question: jitsi-meet/cert-path-crt
    value: "{{ jitsi_meet_ssl_cert_path }}"
    vtype: string

#######################
### Firewall del Servidor ###
# Este rol puede instalar y configurar ufw automáticamente con los puertos de jitsi-meet si configuras esta variable en verdadero.
# Si gestionas un firewall de otra manera, mantenlo en falso, y se omitirán las tareas de ufw.
jitsi_meet_configure_firewall: false

# ADVERTENCIA: hasta la v2.0.0 de este rol, también se habilitaba el puerto SSH (22/tcp).
# Este rol se centra en configurar Jitsi Meet, así que para evitar superponer con el resto de
# tus roles/playbooks, los valores predeterminados serán solo los necesarios para Jitsi.
jitsi_meet_firewall_ports_allow:
  tcp:
    - "80"   # HTTP / Lets Encrypt
    - "443"  # HTTPS
  udp:
    - "10000" # Videobridge

### Otro firewall
# Esto configurará la conexión NAT a Jitsi Meet.
jitsi_meet_behind_nat_firewall: false
jitsi_meet_nat_private_ip: 127.0.0.1
jitsi_meet_nat_public_ip: 255.255.255.255

##############
### Jicofo ###
# Información de autenticación predeterminada, utilizada en múltiples plantillas de servicios.
jitsi_meet_jicofo_user: focus
jitsi_meet_jicofo_port: 5347
# Los componentes de Jitsi utilizan los niveles de registro estándar de Java.
jitsi_meet_jicofo_loglevel: INFO

# Si lo deseas, puedes usar tu propia plantilla de configuración jinja indicando otra ruta.
jitsi_meet_jicofo_config_template: jicofo_config.j2
jitsi_meet_jicofo_sip_template: jicofo_sip-communicator.properties.j2

###################
### Videobridge ###
# El archivo de configuración predeterminado en /etc/jitsi/videobridge/config dice que el puerto
# predeterminado para JVB es "5275", pero la guía de instalación manual menciona "5347".
jitsi_meet_videobridge_port: 5347
jitsi_meet_videobridge_loglevel: INFO
jitsi_meet_videobridge_opts: '--apis=,'     # lista separada por comas '--apis=rest,'

jitsi_meet_videobridge_statistics_enable: true
jitsi_meet_videobridge_statistics_interval: 1000
jitsi_meet_videobridge_statistics_transport: 'muc' # lista separada por comas: 'muc,colibri,xmpp'

# Configurar proxy inverso para publicar colibri/stats por HTTPS
# https://{{ jitsi_meet_server_name }}/colibri/stats
jitsi_meet_expose_colibri_stats: false

# Otros servidores (tipo diccionario) para habilitar el modo MUC (Chat Multi Usuario).
jitsi_meet_videobridge_other_xmpp_servers: {}
  # xmppserver1:
  #   hostname: ejemplo.net
  #   domain: auth.ejemplo.net
  #   username: jvb
  #   password: $PASSWORD
  #   muc_jids: [email protected]
  #   muc: [email protected]
  #   muc_nickname: unique-instance-id

# Si lo deseas, puedes usar tu propia plantilla de configuración jinja indicando otra ruta.
jitsi_meet_videobridge_config_template:  videobridge_config.j2
jitsi_meet_videobridge_sip_template: videobridge_sip-communicator.properties.j2

############
### Meet ###
# "anónimo" permite que cualquier persona use el servidor de videoconferencia.
jitsi_meet_authentication: anonymous

# Adición amigable para la privacidad.
jitsi_meet_enable_third_party_requests: true

# Configuración para compartir pantalla en Chrome. Necesitarás construir y empaquetar una extensión de navegador
# específicamente para tu dominio.
jitsi_meet_desktop_sharing_chrome_method: 'ext'
jitsi_meet_enable_desktop_sharing_chrome: true
jitsi_meet_desktop_sharing_chrome_ext_id: 'diibjkoicjeejcmhdnailmkgecihlobk'

# Ruta a la extensión local en el disco, para copiar al host de destino.
jitsi_meet_desktop_sharing_chrome_extension_filename: ''

# Configuración para compartir pantalla en Firefox. Establece max_version en '42' y disabled en 'false'
# si quieres usar compartir pantalla en Firefox.
jitsi_meet_desktop_sharing_firefox_ext_id: 'null'
jitsi_meet_enable_desktop_sharing_firefox: true
jitsi_meet_desktop_sharing_firefox_max_version_ext_required: '-1'

jitsi_meet_channel_last_n: -1
jitsi_meet_enable_layer_suspension: false
jitsi_meet_start_audio_only: false
jitsi_meet_show_audio_levels: false
jitsi_meet_audio_levels_interval: 200

jitsi_meet_resolution: 480
jitsi_meet_constraints_video_aspect_ratio: "16 / 9"
jitsi_meet_constraints_video_height_ideal: "{{ jitsi_meet_resolution }}"
jitsi_meet_constraints_video_height_max: 720
jitsi_meet_constraints_video_height_min: 240

# Si lo deseas, puedes usar tu propia plantilla de configuración jinja indicando otra ruta.
jitsi_meet_config_js_template: jitsi_meet_config.js.j2
jitsi_meet_interface_config_js_template: interface_config.js.j2

###################
### SIP gateway ###
jitsi_meet_configure_sip_gateway: false
jitsi_meet_jigasi_account: [email protected]
jitsi_meet_jigasi_password: fdi49fndKjhe3

########################
### Personalización de la UI ###
jitsi_meet_customize_the_ui: false

jitsi_meet_lang: 'es'
jitsi_meet_appname: 'Mi nombre de aplicación'
jitsi_meet_org_link: 'https://link-to-my-organization.com'
jitsi_meet_welcomepage_title: 'Videoconferencias seguras, completas y completamente gratis'
jitsi_meet_welcomepage_description: 'Adelante, chatea por video con todo el equipo. De hecho, invita a todos los que conozcas. __app__ es una solución de videoconferencia completamente encriptada y 100% de código abierto que puedes usar todo el día, todos los días, de forma gratuita, sin necesidad de una cuenta.'

# Por defecto es una cadena vacía porque el archivo CSS es un archivo agrupado para
# todo el sitio, y cambia muy frecuentemente con cada lanzamiento. Se reemplazará
# solo si tienes un archivo CSS personalizado y indicas su ruta en esta variable.
jitsi_meet_css_file: ''
jitsi_meet_welcome_page_additions_file: welcomePageAdditionalContent.html.j2
jitsi_meet_title_template: title.html.j2

jitsi_meet_favicon_file: images/favicon.ico
jitsi_meet_logo_file: images/jitsilogo.png
jitsi_meet_watermark_file: images/watermark.png

jitsi_meet_default_background: '#474747'
jitsi_meet_show_video_background: true
jitsi_meet_default_remote_display_name: 'Compañero Jitster'
jitsi_meet_default_local_display_name: 'yo'
jitsi_meet_generate_roomnames_on_welcome_page: true
jitsi_meet_lang_detection: false    # Permitir que la i18n detecte el idioma del sistema

Compartir Pantalla

Jitsi Meet admite la funcionalidad de compartir pantalla a través de extensiones de navegador. Solo la persona que comparte la pantalla necesita tener instalada la extensión—los demás participantes en la reunión podrán ver la pantalla compartida sin instalar nada. Necesitarás construir tu propia extensión de navegador para Chrome y/o Firefox. Consulta la documentación de Jidesha para obtener instrucciones detalladas de construcción. Este rol solo ha sido probado con extensiones personalizadas de Chrome.

Dependencias

Técnicamente no es una dependencia, pero deberías consultar geerlingguy.certbot para obtener certificados SSL increíblemente fáciles.

Ejemplo de Playbook

Incluir un ejemplo de cómo usar tu rol (por ejemplo, con variables pasadas como parámetros) es siempre útil para los usuarios también:

- name: Configurar el servidor jitsi-meet.
  hosts: jitsi
  vars:
    # Cambia esto para que coincida con la entrada del DNS para tu IP de host.
    jitsi_meet_server_name: meet.ejemplo.com
  roles:
    - role: geerlingguy.certbot
      become: yes
      certbot_create_if_missing: true
      certbot_admin_email: "webmaster@{{ jitsi_meet_server_name }}"
      certbot_certs:
        - domains:
            - "{{ jitsi_meet_server_name }}"
      certbot_create_standalone_stop_services: []

    - role: udelarinterior.jitsi_meet
      jitsi_meet_ssl_cert_path: "/etc/letsencrypt/live/{{ jitsi_meet_server_name }}/fullchain.pem"
      jitsi_meet_ssl_key_path: "/etc/letsencrypt/live/{{ jitsi_meet_server_name }}/privkey.pem"
      become: yes
      tags: jitsi

Ejecutando las pruebas

Este rol utiliza Molecule y ServerSpec para las pruebas. Para usarlo:

pip install molecule
gem install serverspec
molecule test

También puedes ejecutar comandos selectivos:

molecule idempotence
molecule verify

Consulta la documentación de Molecule para más información.

Licencia

MIT

Información del Autor

Freedom of the Press Foundation, UdelaR Interior, @santiagomr

Acerca del proyecto

Installs Jitsi Meet videoconferencing software

Instalar
ansible-galaxy install udelarinterior.jitsi_meet
Licencia
Unknown
Descargas
3.5k
Propietario
Red Unidades Informáticas de la UdelaR en el Interior