Cómo instalar Spreed WebRTC Server en Ubuntu

S preed no es como cualquier otra plataforma de video chat, es mucho mejor y más poderosa en todos los sentidos. Es un servidor de llamadas de audio / video gratuito y de código abierto diseñado pensando en la privacidad. Spreed utiliza WebRTC (comunicación web en tiempo real), que permite que los navegadores web y las aplicaciones móviles se comuniquen en tiempo real a través de API (interfaces de programación de aplicaciones). WebRTC permite la comunicación entre pares, lo que hace posible que el audio y el video funcionen dentro de las páginas web.

Además, Spreed WebRTC utiliza cifrado de extremo a extremo, lo que garantiza la máxima privacidad y seguridad de los datos de los usuarios.

Algunas de las tareas que puede realizar con Spreed incluyen:

  • Llamadas de audio / video seguras y chat de texto
  • Videoconferencia
  • Chat de video uno a uno

Instalación del servidor Spreed WebRTC en Ubuntu

Si se pregunta cómo empezar con Spreed, estará en el camino correcto. Esta publicación le brindará una guía paso a paso sobre cómo instalar y comenzar con Spreed WebRTC Server en Ubuntu. ¡Vamos a sumergirnos!

Paso 1. Instale Spreed en Ubuntu

Veremos dos formas que puede utilizar para instalar Spreed.

  1. Instalar Spreed desde el PPA oficial
  2. Instalar Spreed a través de Snap

Nota: La instalación de Spreed a través del PPA solo funcionará en Ubuntu 16.04. Si está en Ubuntu 18.04, Ubuntu 20.04 o cualquier otra variante de Ubuntu, deberá usar Snap.

  • Instalar Spreed desde el PPA oficial

Inicie la Terminal (Ctrl + Alt + T) y ejecute los siguientes comandos en la Terminal.

sudo apt-add-repository ppa:strukturag/spreed-webrtc


sudo apt update


sudo apt install spreed-webrtc
  • Instalar Spreed a través de Snap

Para comenzar, primero instale Snap con los siguientes comandos.

sudo apt update


sudo apt install snapd

Instalar Snapd
Instalar Snapd

Una vez que haya instalado Snap en su sistema, proceda a instalar Spreed WebRTC con el siguiente comando:

sudo snap install spreed-webrtc-snap

Instalar Spreed-WebRTC
Instalar Spreed-WebRTC

Una vez que haya instalado con éxito Spreed-WebRTC a través de Snap, iniciará su servidor web integrado a través de localhost en el puerto 8084 (127.0.0: 8084). Puede confirmar su estado sobre si se está ejecutando con el siguiente comando.

snap info spreed-webrtc-snap

Snap de estado de Spreed-WebRTC
Snap de estado de Spreed-WebRTC

Si no se está ejecutando, puede iniciar Spreed snap con el siguiente comando:

sudo snap start spreed-webrtc-snap

Iniciar Spreed Snap
Iniciar Spreed Snap

También puede habilitar Spreed para que se inicie automáticamente cuando el sistema se inicie con el siguiente comando:

sudo snap start --enable spreed-webrtc-snap

Habilitar Spreed para que se inicie al arrancar
Habilitar Spreed para que se inicie al arrancar

Puede confirmar si el servidor web Spreed se está ejecutando buscando la dirección 127.0.01: 8084 en el navegador web. Debería ver la página web de Spreed como se muestra en la imagen a continuación.

Interfaz web Spreed
Interfaz web Spreed

Paso 2: configuración del proxy inverso

Como puede ver en la información anterior, Spreed-WebRTC, de forma predeterminada, solo es accesible a través de localhost. Por lo tanto, otro usuario de una red diferente a la suya no accederá a Spreed-WebRTC. Para solucionar este problema, deberá configurar un proxy inverso.

Consejo: un proxy inverso es un servidor proxy que solicita recursos de red en nombre de un cliente desde el servidor backend apropiado.

Veremos cómo configurar un proxy inverso usando Nginx y Apache. Puede utilizar cualquiera de ellos.

  • Nginx

Para instalar Nginx en Ubuntu, ejecute el siguiente comando:

sudo apt install nginx

Instalar Nginx
Instalar Nginx

Una vez que el comando se ejecuta correctamente, proceda a crear un bloque de servidor para Spreed-WebRTC en Nginx. Ejecute el siguiente comando para crear el archivo spreed-webrtc.conf con el editor nano.

sudo nano /etc/nginx/conf.d/spreed-webrtc.conf

Ahora, copie el contenido a continuación y péguelo en el editor nano. Recuerde reemplazar el dominio spreed.example.com con su nombre de dominio preferido. Además, no olvide configurar un registro A.

Consejo: Un registro DNS-A apunta al subdominio o al nombre de dominio a una dirección IP.

server {


        listen 80


        server_name spreed.example.com


        location / {


                proxy_pass http://127.0.0.1:8080


                proxy_http_version 1.1


                proxy_set_header Upgrade $http_upgrade


                proxy_set_header Connection "upgrade"


                proxy_set_header X-Forwarded-Proto $scheme


                proxy_set_header Host $http_host


                proxy_set_header X-Real-IP $remote_addr


                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for





                proxy_buffering             on


                proxy_ignore_client_abort   off


                proxy_redirect              off


                proxy_connect_timeout       90


                proxy_send_timeout          90


                proxy_read_timeout          90


                proxy_buffer_size           4k


                proxy_buffers               4 32k


                proxy_busy_buffers_size     64k


                proxy_temp_file_write_size  64k


                proxy_next_upstream         error timeout invalid_header http_502 http_503 http_504


        }





        location ~ /.well-known/acme-challenge {


             root /usr/share/nginx/spreed/


             allow all


        }


}

Archivo de configuración Spreed-WebRTC
Archivo de configuración Spreed-WebRTC

Guarde y cierre el archivo. (Ctrl + O luego Enter para guardar, Ctrl + X para salir).

Ahora puede probar sus configuraciones y volver a cargar Nginx con los siguientes comandos.

sudo nginx -t


sudo systemctl reload nginx

Recargar Nginx
Recargar Nginx

Ahora, Spreed-WebRTC debería ser accesible a través de un navegador web a través del dominio asignado. Vea la imagen a continuación.

Servidor Spreed-WebRTC Nginx
Servidor Spreed-WebRTC Nginx

  • apache

Si desea utilizar Apache, comience por instalarlo primero con el siguiente comando:

sudo apt install apache2

Instalar Apache
Instalar Apache

Una vez hecho esto, al igual que hicimos con Nginx, cree un archivo de bloque del servidor Spreed-WebRTC. Ejecute el comando para crear y abrir el archivo con nano editor.

sudo nano /etc/apache2/sites-available/spreed-webrtc.conf

Ahora, copie el contenido a continuación y péguelo en el editor nano. Recuerde reemplazar el dominio spreed.example.com con su nombre de dominio preferido. Además, no olvide configurar un registro A.

<VirtualHost *:80>


    ServerName spreed.example.com


    <Location />


      ProxyPass http://127.0.0.1:8080/


      ProxyPassReverse http://127.0.0.1:8080/


    </Location>





    <Location /ws>


       ProxyPass ws://127.0.0.1:8080/


    </Location>


    ProxyVia On


    ProxyPreserveHost On


</VirtualHost>

Guarde y cierre el archivo. (Ctrl + O luego Enter para guardar, Ctrl + X para salir).

A continuación, necesitamos habilitar proxy_http

Ejecute el siguiente comando:

sudo a2enmod proxy_http

Habilitar proxy_http
Habilitar proxy_http

Una vez hecho esto, habilite el host virtual. Ejecute el siguiente comando:

sudo a2ensite spreed-webrtc.conf

Habilitar host virtual
Habilitar host virtual

Puede proceder a probar sus configuraciones y volver a cargar su servidor Apache.

sudo apachectl configtest


sudo systemctl reload apache2

Ahora, Spreed-WebRTC debería ser accesible a través de un navegador web a través del dominio asignado. Vea la imagen a continuación.

Spreed-WebRTC
Spreed-WebRTC

Paso 3: habilita HTTPS

Hasta ahora, solo se puede acceder a nuestro servidor Spreed-WebRTC a través de HTTP, lo que puede generar algunos problemas de seguridad. Para habilitar HTTPS, necesitaremos obtener un certificado SSL / TLS.

Este tutorial utilizará Let’s Encrypt para obtener un certificado TLS gratuito. Ejecute los siguientes comandos para instalar el cliente Let’s Encrypt -Certbot- del PPA oficial.

sudo apt install certbot

Instalar Certbot
Instalar Certbot

Para los usuarios de Apache, se le pedirá que instale el complemento Certbot Apache con el siguiente comando:

sudo apt install python3-certbot-apache

Complemento Certbot Apache
Complemento Certbot Apache

Para los usuarios de Nginx, instale el complemento Certbot Nginx con el siguiente comando:

sudo apt install python3-certbot-nginx

Complemento Nginx Certbot
Complemento Nginx Certbot

Para obtener el certificado TLS para el servidor Apache, ejecute el siguiente comando:

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d spreed.example.com

Para obtener un certificado TLS para el servidor Nginx, ejecute el siguiente comando:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d spreed.example.com

Nota: Con los dos comandos anteriores, recuerde reemplazar you@example.comcon su correo electrónico oficial para el registro y spreed.example.comcon el nombre de dominio que utilizó para su Spreed-WebRTC.

Debería recibir el siguiente mensaje si obtuvo el certificado con éxito.

spreed-webtrc-certbot-https (1)
spreed-webtrc-certbot-https

Paso 4: Instale un servidor TURN / STUN

El servidor Spreed-WebRTC está bien configurado y es accesible en línea hasta este momento. Sin embargo, hay un problema que debemos resolver. Si tiene usuarios detrás de una red NAT, se bloquearán y WebRTC no funcionará. Para superar esto, configuraremos un servidor TURN / STUN, que actuará como un relé entre los navegadores web. TURN son las siglas de Traversal Using Relays around NAT, y STUN son las siglas de Session Traversal Utilities.

Usaremos el servidor Coturn, que facilita las llamadas de video / audio y las conferencias mediante la implementación de los protocolos TURN y STUN.

Para comenzar, instale Coturn con el siguiente comando:

sudo apt install coturn

Instalar Coturn
Instalar Coturn

Una vez que el comando se ejecuta correctamente, el servicio coturn se iniciará automáticamente. Puede verificar el estado con el siguiente comando:

systemctl status coturn

Instalar Coturn
Instalar Coturn

Si coturn no se está ejecutando, inícielo con el siguiente comando:

sudo systemctl start coturn

Además, para mayor comodidad, puede configurarlo para que se inicie automáticamente al arrancar con el siguiente comando:

sudo systemctl enable coturn

Inicie Coturn en el arranque
Inicie Coturn en el arranque

Paso 5: configurar Coturn

Con Coturn instalado y en ejecución, podemos configurarlo para Spreed-WebRTC.

Ejecute el siguiente comando para editar el turnserverarchivo de configuración.

sudo nano /etc/turnserver.conf

Notará que todas las líneas están comentadas a partir del resultado que obtiene. Como se muestra en la siguiente imagen:

Gire el archivo de configuración del servidor
Gire el archivo de configuración del servidor

Para hacer su trabajo mucho más fácil, copie el contenido a continuación y péguelo al final de su turnserverarchivo de configuración . Sin embargo, recuerde realizar los cambios a continuación:

  • Reemplace example.com con el nombre de dominio que asignó a Spreed-WebRTC.
  • Reemplace la dirección IP 10.16.1.1con la dirección IP pública de su servidor.
  • Reemplácelo sample-auth-secretcon el suyo. Hágalo largo y seguro, preferiblemente una cadena generada aleatoriamente.
# Specify listening port. Change to 80 or 443 to go around some strict NATs.


listening-port=8443


tls-listening-port=5349





# Specify listening IP, if not set then Coturn listens on all system IPs.


listening-ip=10.16.1.1


relay-ip=10.16.1.1





# These lines enable support for WebRTC


fingerprint


lt-cred-mech


realm=example.com





# Authentication method


use-auth-secret


static-auth-secret=sample-auth-secret





total-quota=100





# Total bytes-per-second bandwidth the TURN server is allowed to allocate


# for the sessions, combined (input and output network streams are treated separately).


bps-capacity=0





# This line provides extra security.


stale-nonce





log-file=/var/log/turnserver/turn.log


no-loopback-peers


no-multicast-peers

Guarde el archivo de configuración y reinicie coturn con el siguiente comando:

sudo systemctl restart coturn

Ahora, necesitaremos configurar Spreed-WEbRTC para Coturn. Ejecute el siguiente comando para abrir el archivo de configuración del servidor.

Si instaló Spreed a través de PPA, use el siguiente comando:

sudo nano /etc/spreed/server.conf

Si instaló Spreed a través de Snap, use el siguiente comando:

sudo nano /var/snap/spreed-webrtc-snap/common/server.conf

Busque la sección de la aplicación y agregue las líneas a continuación. Recuerde reemplazar el texto resaltado en consecuencia.

turnURIs = turn:coturn-server-ip:8443?transport=udp


turnSecret = example-auth-secret

Archivo de servidor Spreed
Archivo de servidor Spreed

Guarde y cierre el archivo. Una vez más, reinicie el servidor Spreed-WebRTC con el siguiente comando:

Si instaló Spreed a través de PPA, use el siguiente comando:

sudo systemctl restart spreed-webrtc

Si instaló Spreed a través de Snap, use el siguiente comando:

sudo snap restart spreed-webrtc-snap

El último paso que debe hacer es habilitar el puerto 8843 en su Firewall. Eso es porque Coturn escucha en el puerto 8843. Ejecute los comandos para el firewall UFW.

sudo ufw allow 8443/tcp


sudo ufw allow 8443/udp

Permitir puerto 8843
Permitir puerto 8843

Ahora, con la configuración de Coturn y Spreed-WebRTC, incluso los usuarios detrás de una red NAT deberían poder realizar llamadas de audio / video e incluso realizar conferencias en línea.

Espero que esta publicación le haya brindado una guía clara sobre la instalación de Spreed WebRTC Server en Ubuntu. Algunas configuraciones como Establecer un registro A de DNS pueden ser bastante desafiantes para los principiantes, pero creo que hay artículos de guía en el sitio donde compró su dominio. En caso de que encuentre algún problema, no dude en dejar un comentario a continuación.

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux