Talk no funciona si los usuarios están detrás de diferentes dispositivos NAT. Para atravesar NAT, se necesita configurar un servidor TURN para lo cual en Ubuntu tenemos el paquete coturn.
Genera los certificasdos para tu subdominio con Let’s Encrypt de la siguiente forma
apt install certbot
certbot certonly --standalone -d subdominio.dominio.es
sudo apt install coturn -y
Luego lo habilitamos modificando el fichero /etc/default/coturn
sudo nano /etc/default/coturn
Quitamos el símbolo # al comienzo de TURNSERVER_ENABLED=1 para que quede de la siguiente manera:
TURNSERVER_ENABLED=1
Guarde y cierre este archivo, luego cree un nuevo archivo de configuración llamado turnserver.conf :
mv /etc/turnserver.conf /etc/turnserver.conf.bak && nano /etc/turnserver.conf
Genere el archivo dhparam:
mkdir -p /etc/turnserver openssl dhparam -dsaparam -out /etc/turnserver/dhp.pem 4096
Genere un nuevo «Secreto»:
openssl rand -hex 32
Copie todas las líneas posteriores en él. Tenga en cuenta que asumimos que los certificados de Let’s Encrypt se encuentran en /etc/letsencrypt/rsa-certs/… Ajuste las rutas si es necesario:
tls-listening-port=443 listening-ip=<Tu IPv4> listening-ip=<Tu IPv6> relay-ip=<Tu IPv4> relay-ip=<Tu IPv6> min-port=32769 max-port=65535 verbose fingerprint use-auth-secret static-auth-secret=Codigo secreto generado anteriormente realm=coturn.dominio.es cert=/etc/letsencrypt/rsa-certs/fullchain.pem pkey=/etc/letsencrypt/rsa-certs/privkey.pem cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384" dh-file=/etc/turnserver/dhp.pem keep-address-family no-cli no-tlsv1 no-tlsv1_1 no-multicast-peers denied-peer-ip=10.0.0.0-10.255.255.255 denied-peer-ip=172.16.0.0-172.31.255.255 denied-peer-ip=192.168.0.0-192.168.255.255 denied-peer-ip=100.64.0.0-100.127.255.255 denied-peer-ip=169.254.0.0-169.254.255.255 denied-peer-ip=192.0.0.0-192.0.0.255 denied-peer-ip=192.0.2.0-192.0.2.255 denied-peer-ip=198.18.0.0-198.19.255.255 denied-peer-ip=198.51.100.0-198.51.100.255 denied-peer-ip=203.0.113.0-203.0.113.255 denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=::ffff:0:0-::ffff:ffff:ffff denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff denied-peer-ip=64:ff9b:1::-64:ff9b:1:ffff:ffff:ffff:ffff:ffff denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=2001:db8::-2001:db8:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff
Abra el puerto 443/tcp y 443/udp en su UFW (firewall)
ufw allow 443/tcp && ufw allow 443/udp
Ajuste el servicio para poder usar el puerto privilegiado 443:
mkdir -p /etc/systemd/system/coturn.service.d
nano /etc/systemd/system/coturn.service.d/override.conf
[Service] LimitNOFILE=1048576 AmbientCapabilities=CAP_NET_BIND_SERVICE ExecStart= ExecStart=/usr/bin/turnserver --daemon -c /etc/turnserver.conf --pidfile /run/turnserver/turnserver.pid --no-stdout-log --simple-log --log-file /var/log/turnserver/turnserver.log Restart=always
Finalmente, configuremos el logrotating:
nano /etc/logrotate.d/coturn
Pegue el siguiente texto dentro del archivo:
/var/log/turnserver/*.log { rotate 7 daily missingok notifempty compress postrotate /bin/systemctl kill -s HUP coturn.service endscript }
Ahora cree el directorio de registro y configure los permisos correctos:
mkdir -p /var/log/turnserver chown turnserver:turnserver /var/log/turnserver
Reinicie coturn:
service coturn restart
Verifique su servidor coturn a través de este enlace externo. Como se muestra en el ejemplo, inserte su nombre de dominio y puerto en lugar del ejemplo «stun: coturn.dominio.es :443″.
i ve entradas del tipo «srflx» y » Listo » en la columna «Prioridad» en la última línea , su servidor coturn está funcionando correctamente. Luego cambie a su Nextcloud y active la aplicación Nextcloud Talk como administrador:
Configura la app de Talk en tu servidor NextCloud.