Jitsi detrás de un proxy reverso

Configurar Nginx para Jitsi Meet

Editamos un archivo para nuestra configuración /etc/nginx/sites-enabled/jitsi.dominio.edu.ar.conf

types {
# nginx's default mime.types doesn't include a mapping for wasm
application/wasm wasm;
}

server {
listen 80;
server_name jitsi.dominio.edu.ar;

set_real_ip_from RANGO.IP.PRIVADO.100;
# IP del Proxy
real_ip_header X-Real-IP;

set $prefix "";

root /usr/share/jitsi-meet;

# ssi on with javascript for multidomain variables in config.js
ssi on;
ssi_types application/x-javascript application/javascript;

index index.html index.htm;
error_page 404 /static/404.html;

gzip on;
gzip_types text/plain text/css application/javascript application/json image/x-icon application/octet-stream application/wasm;
gzip_vary on;
gzip_proxied no-cache no-store private expired auth;
gzip_min_length 512;

location = /config.js {
alias /etc/jitsi/meet/jitsi.dominio.edu.ar-config.js;
}

location = /external_api.js {
alias /usr/share/jitsi-meet/libs/external_api.min.js;
}

# ensure all static content can always be found first
location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)$
{
add_header 'Access-Control-Allow-Origin' '*';
alias /usr/share/jitsi-meet/$1/$2;

# cache all versioned files
if ($arg_v) {
expires 1y;
}
}

# load test minimal client, uncomment when used
#location ~ ^/_load-test/([^/?&:'"]+)$ {
# rewrite ^/_load-test/(.*)$ /load-test/index.html break;
#}
#location ~ ^/_load-test/libs/(.*)$ {
# add_header 'Access-Control-Allow-Origin' '*';
# alias /usr/share/jitsi-meet/load-test/libs/$1;
#}

location ~ ^/([^/?&:'"]+)$ {
try_files $uri @root_path;
}

location @root_path {
rewrite ^/(.*)$ / break;
}

# Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
location ~ ^/([^/?&:'"]+)/(.*)$ {
set $subdomain "$1.";
set $subdir "$1/";
rewrite ^/([^/?&:'"]+)/(.*)$ /$2;
}

}

Configurar el nombre de host

El nombre del servidor debe ser un subdominio como “jitsi.dominio.edu.ar”. En primer lugar, debemos comprobar el nombre de host en /etc/hosts y cambiarlo cuando sea necesario.

$ hostnamectl set-hostname jitsi.dominio.edu.ar

Luego editamos el archivo/etc/hosts:

127.0.0.1 localhost.localdomain localhost
x.x.x.x jitsi.dominio.edu.ar jitsi

Nota: x.x.x.x es la IP pública de nuestro servidor.

Finalmente en el mismo equipo probamos que se puede hacer ping al dominio:

ping "$(hostname)"

Si todo funciona correctamente, deberíamos ver: jitsi.dominio.edu.ar

Configuramos el firewall

Los siguientes puertos tienen que estar abiertos en el firewall para permitir el tráfico al servidor Jitsi Meet:

  • 80 TCP – para la verificación / renovación del certificado SSL con Let’s Encrypt
  • 443 TCP – para el acceso general a Jitsi Meet
  • 10000 UDP – para comunicaciones generales de vídeo/audio en red
  • 22 TCP – si accedes a tu servidor usando SSH (cambia el puerto en consecuencia si no es el 22)
  • 3478 UDP – para consultar el servidor stun (coturn, opcional, necesita cambiar config.js para habilitarlo)
  • 5349 TCP – para comunicaciones de video/audio en red a través de TCP (cuando UDP está bloqueado, por ejemplo), servido por coturn

Si estás usando ufw, podés usar los siguientes comandos:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
sudo ufw allow 22/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw enable

Verificamos el estado del firewall con:

sudo ufw status verbose