Instala Asterisk y Habilita WebRTC en una Raspberry Pi 5 con OS Lite


Inn Col Systems

Inn Col Systems

domingo, 27 de octubre de 2024

TABLA DE CONTENIDOS
¡Bienvenidos a otra guía de Inncol!Hoy te mostraremos cómo instalar Asterisk y habilitar WebRTC en una Raspberry Pi 5 con OS Lite. Esta guía está diseñada para aquellos que desean crear un sistema de comunicación basado en VoIP utilizando tecnología de código abierto. Al final de este tutorial, tendrás un sistema Asterisk completamente funcional capaz de manejar llamadas WebRTC y dispositivos Zoiper.

Requisitos Previos

Para seguir este tutorial, necesitarás los siguientes elementos:Hardware: Una Raspberry Pi 5 con OS Lite (64-bit) instalado.Software: Acceso SSH a la Raspberry Pi, conocimientos básicos de comandos Linux, y una conexión a Internet.Certificados SSL: Para habilitar WebRTC, necesitarás certificados SSL válidos. Puedes usar Let's Encrypt para generar certificados gratuitos.

Paso 1: Instalación de Dependencias

Primero, actualiza el sistema y luego instala las dependencias necesarias para compilar Asterisk:
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y build-essential autoconf libssl-dev libncurses-dev \
libnewt-dev libxml2-dev libsqlite3-dev uuid-dev libjansson-dev libblocksruntime-dev xmlstarlet libopusfile-dev

Paso 2: Descarga e Instalación de Asterisk 20.10.0

Descarga la versión más reciente de Asterisk y compílalo:
cd /usr/src/
sudo wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.10.0.tar.gz
sudo tar zxvf asterisk-20.10.0.tar.gz
cd asterisk-20.10.0
Instala dependencias adicionales y configura Asterisk:
sudo contrib/scripts/install_prereq install
sudo ./configure
sudo make menuselect
En `menuselect`, asegúrate de habilitar el soporte para WebRTC:
Codec Opus (codec_opus_open_source)
WebRTC Support (res_http_websocket)
Continúa compilando e instalando:
sudo make
sudo make install
sudo make samples

Paso 3: Instalación del Códec Opus para ARM

El códec `codec_opus_open_source` es compatible con la arquitectura ARM y se debe instalar manualmente.Sigue estos pasos para instalar el códec Opus:
cd /usr/src/
sudo git clone https://github.com/traud/asterisk-opus.git
cd asterisk-opus
Copia los archivos del códec a la fuente de Asterisk y aplica el parche:
sudo cp --verbose codecs/* /usr/src/asterisk-20.10.0/codecs/
sudo cp --verbose res/* /usr/src/asterisk-20.10.0/res/
cd /usr/src/asterisk-20.10.0
sudo patch -p1 < ../asterisk-opus/asterisk.patch
Recompila Asterisk con el códec Opus:
sudo make
sudo make install

Paso 4: Configuración de Asterisk para WebRTC y Opus Codec

Configura Asterisk para habilitar WebRTC y el códec Opus.Configura el archivo `pjsip.conf` para definir los transportes y los endpoints.
sudo nano /etc/asterisk/pjsip.conf
Agrega la siguiente configuración para WebSocket, WebRTC y endpoints:
[transport-ws]
type=transport
protocol=ws
bind=0.0.0.0:8088

[transport-wss]
type=transport
protocol=wss
bind=0.0.0.0:8089
allow_reload=yes
method=tlsv1

[transport-tls]
type=transport
protocol=tls
bind=0.0.0.0:5061
ca_list_file=/etc/asterisk/keys/ca.crt
cert_file=/etc/asterisk/keys/asterisk.pem
priv_key_file=/etc/asterisk/keys/asterisk.key
method=tlsv1

Paso 5: Creación de Extensiones SIP y WebRTC

Configura las extensiones para dispositivos Zoiper y WebRTC.
[3001]
type=aor
max_contacts=1
remove_existing=yes
qualify_frequency=60

[3001]
type=auth
auth_type=userpass
username=3001
password=secret

[3001]
type=endpoint
aors=3001
auth=3001
context=default
disallow=all
allow=opus,ulaw
rtp_symmetric=yes
force_rport=yes
rewrite_contact=yes
media_use_received_transport=yes
dtls_verify=fingerprint
dtls_setup=actpass
ice_support=yes
rtcp_mux=yes

[5001]
type=aor
max_contacts=1
remove_existing=yes
qualify_frequency=60

[5001]
type=auth
auth_type=userpass
username=5001
password=secret

[5001]
type=endpoint
aors=5001
auth=5001
webrtc=yes
context=default
disallow=all
allow=opus,ulaw
dtls_cert_file=/etc/asterisk/keys/asterisk.pem
dtls_private_key=/etc/asterisk/keys/asterisk.key
dtls_verify=fingerprint
dtls_setup=actpass
ice_support=yes
media_use_received_transport=yes
rtcp_mux=yes
force_rport=yes

Paso 6: Configurar la Carga Automática del Códec Opus

Asegúrate de que el códec Opus se cargue automáticamente en el arranque de Asterisk:
sudo nano /etc/asterisk/modules.conf
load = codec_opus_open_source.so

Paso 7: Generar e Instalar Certificados TLS para WebRTC

Genera los certificados TLS para el cifrado WebRTC:
sudo mkdir /etc/asterisk/keys
cd /etc/asterisk/keys
sudo openssl genpkey -algorithm RSA -out asterisk.key
sudo openssl req -new -key asterisk.key -out asterisk.csr
sudo openssl x509 -req -days 365 -in asterisk.csr -signkey asterisk.key -out asterisk.pem

Paso 8: Configuración del Firewall y Puertos Necesarios

Abre los puertos necesarios para SIP, WebRTC y HTTP:
sudo apt install ufw
sudo ufw allow 5060/udp
sudo ufw allow 5060/tcp
sudo ufw allow 5061/tcp
sudo ufw allow 8088/tcp
sudo ufw allow 8089/tcp
sudo ufw allow ssh
sudo ufw enable

Paso 9: Iniciar Asterisk y Pruebas

Inicia Asterisk y verifica que funcione correctamente:
sudo systemctl start asterisk
sudo asterisk -rvvv
Verifica los registros para asegurarte de que no haya errores.

Conclusión

Con esta guía, has instalado Asterisk y habilitado WebRTC en tu Raspberry Pi 5. ¡Felicidades! Ahora puedes explorar funciones avanzadas como la grabación de llamadas, la integración con APIs o la implementación de un sistema completo de comunicación empresarial.

© Todos los derechos reservados.

© Inn Col Systems S.A.S. de C.V.