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 eshttp://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 esfalse
.certbot_admin_email
: Dirección de correo electrónico para registrar en Let's Encrypt. Requerido sicertbot_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 esfalse
. Si se habilita, debes establecerjitsi_nat_local_ip
yjitsi_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
: Elserver_names_hash_bucket_size
de nginx. Se declarará en elnginx.conf
global singinx_modify_server_names_hash_bucket_size
está establecido entrue
. Por defecto es64
.nginx_modify_server_names_hash_bucket_size
: Si se debe cambiar el valor deserver_names_hash_bucket_size
en el archivonginx.conf
global. Por defecto estrue
.
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
# 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
Install jitsi-meet with nginx and (optionally) certbot
ansible-galaxy install cimnine.jitsi_meet