Cómo instalar el servidor VoIP Asterisk 17 en Ubuntu 20.04

Asterisk es un servidor VoIP gratuito y de código abierto creado por Sangoma. Se utiliza para construir una infraestructura de telefonía VoIP para organizaciones de todos los tamaños. VoIP es un Protocolo de Voz sobre Internet que se utiliza para hacer una llamada usando la pila TCP/IP. Con VoIP, puedes hacer una llamada desde tu dispositivo móvil u ordenador a otros dispositivos sin ningún coste. Funciona en sistemas operativos basados en Unix y Linux y es capaz de conectar cualquier red de telefonía global tradicional. Ofrece un conjunto de funciones que incluyen, conferencia telefónica, buzón de voz, IVR y distribución automática de llamadas.

En este tutorial, aprenderemos a instalar el servidor Asterisk y la interfaz gráfica de Asterisk en Ubuntu 20.04.

Requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Una dirección IP estática configurada en tu servidor.
  • Se ha configurado una contraseña de root en el servidor.

Cómo empezar

Primero, actualiza los paquetes de tu sistema a la última versión con el siguiente comando:

apt-get update -y

Una vez actualizado tu sistema, tendrás que instalar otras dependencias que requiere Asterisk. Puedes instalarlas todas con el siguiente comando:

apt-get install gnupg2 software-properties-common git curl wget libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev build-essential libjansson-dev libxml2-dev uuid-dev -y

Después de instalar todos los paquetes, puedes pasar al siguiente paso.

Instalar Asterisk

Por defecto, la última versión de Asterisk no está disponible en el repositorio por defecto de Ubuntu 20.04. Así que tendrás que descargarla y compilarla desde el código fuente.

Primero, descarga la última versión de Asterisk con el siguiente comando:

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-17-current.tar.gz

Una vez descargado, extrae el archivo descargado con el siguiente comando:

tar -xvzf asterisk-17-current.tar.gz

A continuación, cambia el directorio al extraído e instala todos los módulos MP3 necesarios con el siguiente comando:

cd asterisk-17.7.0
contrib/scripts/get_mp3_source.sh

Deberías obtener la siguiente salida:

A    addons/mp3
A    addons/mp3/MPGLIB_README
A    addons/mp3/common.c
A    addons/mp3/huffman.h
A    addons/mp3/tabinit.c
A    addons/mp3/Makefile
A    addons/mp3/README
A    addons/mp3/decode_i386.c
A    addons/mp3/dct64_i386.c
A    addons/mp3/MPGLIB_TODO
A    addons/mp3/mpg123.h
A    addons/mp3/layer3.c
A    addons/mp3/mpglib.h
A    addons/mp3/decode_ntom.c
A    addons/mp3/interface.c
Exported revision 202.

A continuación, instala las demás dependencias con el siguiente comando

contrib/scripts/install_prereq install

Deberías ver la siguiente salida:

#############################################
## install completed successfully
#############################################

A continuación, configura el Asterisk con el siguiente comando

./configure

Deberías obtener la siguiente salida:

configure: Menuselect build configuration successfully completed

               .$$$$$$$$$$$$$$$=..      
            .$7$7..          .7$$7:.    
          .$$:.                 ,$7.7   
        .$7.     7$$$$           .$$77  
     ..$$.       $$$$$            .$$$7 
    ..7$   .?.   $$$$$   .?.       7$$$.
   $.$.   .$$$7. $$$$7 .7$$$.      .$$$.
 .777.   .$$$$$$77$$$77$$$$$7.      $$$,
 $$$~      .7$$$$$$$$$$$$$7.       .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7 
$$$       .7$$$$$$$$$$$$$$$$      :$$$. 
$$$       $$$$$$7$$$$$$$$$$$$    .$$$.  
$$$        $$$   7$$$7  .$$$    .$$$.   
$$$$             $$$$7         .$$$.    
7$$$7            7$$$$        7$$$      
 $$$$$                        $$$       
  $$$$7.                       $$  (TM)     
   $$$$$$$.           .7$$$$$$  $$      
     $$$$$$$$$$$$7$$$$$$$$$.$$$$$$      
       $$$$$$$$$$$$$$$$.                

configure: Package configured for: 
configure: OS type  : linux-gnu
configure: Host CPU : x86_64
configure: build-cpu:vendor:os: x86_64 : pc : linux-gnu :
configure: host-cpu:vendor:os: x86_64 : pc : linux-gnu :

A continuación, ejecuta el siguiente comando para seleccionar e instalar algunos módulos recomendados:

make menuselect

Se te pedirá que selecciones el módulo que desees. Utiliza las teclas de flecha para navegar y pulsa la tecla Enter para seleccionar, como se muestra a continuación:

Habilita los complementos como se muestra a continuación:

Activar los complementos de Astérix

Habilitar los módulos de sonido del núcleo como se muestra a continuación:

Activar el módulo de sonido del núcleo

Habilitar los paquetes MOH como se muestra a continuación:

Habilitar los paquetes MOH

Habilitar los paquetes de sonido extra como se muestra a continuación:

Habilitar paquetes de sonido adicionales

Una vez que hayas terminado, haz clic en el botón Guardar y Salir para guardar los cambios e instalar todos los complementos.

A continuación, tendrás que construir el Asterisk. Puedes hacerlo con el siguiente comando:

make

Deberías ver la siguiente salida:

 +--------- Asterisk Build Complete ---------+
 + Asterisk has successfully been built, and +
 + can be installed by running:              +
 +                                           +
 +                make install               +
 +-------------------------------------------+

A continuación, instala el Astersik, la configuración y la muestra ejecutando el siguiente comando:

make install
make samples
make config
ldconfig

Una vez que hayas terminado, puedes pasar al siguiente paso.

Crear un usuario Astersik

A continuación, tendrás que crear un usuario y un grupo de Asterisk y cambiar la propiedad del directorio de configuración de Asterisk.

Primero, crea un usuario y un grupo con el siguiente comando:

groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk

A continuación, añade el usuario de audio y dialout al grupo Asterisk ejecutando el siguiente comando:

usermod -aG audio,dialout asterisk

A continuación, cambia la propiedad del directorio de configuración de Asterisk con el siguiente comando:

chown -R asterisk.asterisk /etc/asterisk
chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
chown -R asterisk.asterisk /usr/lib/asterisk

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar Asterisk

A continuación, edita el archivo /etc/default/asterisk y establece el usuario por defecto como Asterisk:

nano /etc/default/asterisk

Descomenta las siguientes líneas:

AST_USER="asterisk"
AST_GROUP="asterisk"

Guarda y cierra el archivo cuando hayas terminado, luego edita el archivo de configuración por defecto de Asterisk y establece la ejecución como usuario a Asterisk:

nano /etc/asterisk/asterisk.conf

Descomenta las siguientes líneas:

runuser = asterisk ; The user to run as.
rungroup = asterisk ; The group to run as.

Guarda y cierra el archivo y luego inicia el servicio de Asterisk y permite que se inicie al reiniciar el sistema con el siguiente comando:

systemctl restart asterisk
systemctl enable asterisk

Ahora puedes verificar el estado del servicio Asterisk con el siguiente comando:

systemctl status asterisk

Deberías obtener la siguiente salida:

? asterisk.service - LSB: Asterisk PBX
     Loaded: loaded (/etc/init.d/asterisk; generated)
     Active: active (running) since Mon 2020-10-19 12:39:41 UTC; 2min 49s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 47946 ExecStart=/etc/init.d/asterisk start (code=exited, status=0/SUCCESS)
      Tasks: 71 (limit: 4691)
     Memory: 41.7M
     CGroup: /system.slice/asterisk.service
             ??47965 /usr/sbin/asterisk -U asterisk -G asterisk

Oct 19 12:39:41 ubuntu2004 systemd[1]: Starting LSB: Asterisk PBX...
Oct 19 12:39:41 ubuntu2004 asterisk[47946]:  * Starting Asterisk PBX: asterisk
Oct 19 12:39:41 ubuntu2004 asterisk[47946]:    ...done.

A continuación, verifica la conexión de Asterisk con el siguiente comando:

asterisk -rvv

Deberías obtener la siguiente salida:

Asterisk 17.7.0, Copyright (C) 1999 - 2018, Digium, Inc. and others.
Created by Mark Spencer <[email protected]>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Running as user 'asterisk'
Running under group 'asterisk'
Connected to Asterisk 17.7.0 currently running on ubuntu2004 (pid = 47965)
ubuntu2004*CLI> 

Habilitar la GUI de Asterisk

Para poder acceder a Asterisk desde el navegador web, deberás habilitar la GUI de Asterisk. Primero, edita el archivo /etc/asterisk/http.conf:

nano /etc/asterisk/http.conf

Descomenta y cambia las siguientes líneas:

enabled = yes
bindaddr = 0.0.0.0
bindport = 8088
prefix = asterisk
enable_static = yes
enablestatic = yes

redirect = / /static/config/index.html
uploads = /var/lib/asterisk/uploads/

Guarda y cierra el archivo, luego edita el archivo /etc/asterisk/manager.conf y establece tu usuario administrador:

nano /etc/asterisk/manager.conf

Añade / Modifica las siguientes líneas:

enabled = yes
webenabled = yes

port = 5038
bindaddr = 0.0.0.0

[admin]
secret = admin1234
read = system,call,log,verbose,command,agent,user,config
write = system,call,log,verbose,command,agent,user,config,originate

Guarda y cierra el archivo cuando hayas terminado.

Instalar la GUI de Asterisk

A continuación, descarga la última versión de Asterisk GUI con el siguiente comando:

svn checkout http://svn.digium.com/svn/asterisk-gui/branches/2.0

Una vez descargada, cambia el directorio por el descargado y configúralo con el siguiente comando:

cd 2.0/
./configure

A continuación, construye la GUI de Asterisk con el siguiente comando:

make

Deberías obtener la siguiente salida:

 +------- Asterisk-GUI Build Complete -------+
 + Asterisk-GUI has successfully been built, +
 + and can be installed by running:          +
 +                                           +
 +               make install                +
 +-------------------------------------------+

A continuación, ejecuta el siguiente comando para instalarlo en tu sistema:

make install

Deberías ver la siguiente salida:

 +---- Asterisk GUI Installation Complete ---+
 +                                           +
 +    YOU MUST READ THE SECURITY DOCUMENT    +
 +                                           +
 + Asterisk-GUI has successfully been        +
 + installed.				     +
 +                                           +
 +-------------------------------------------+
 +                                           +
 +          BEFORE THE GUI WILL WORK         +
 +                                           +
 + Before the GUI will run, you must perform +
 + some modifications to the Asterisk        +
 + configuration files in accordance with    +
 + the README file.  When done, you can      +
 + check your changes by doing:              +
 +                                           +
 +               make checkconfig            +
 +                                           +
 +-------------------------------------------+

Por último, reinicia el servicio de Asterisk para aplicar los cambios:

systemctl restart asterisk

Accede a la GUI de Asterisk

Ahora, abre tu navegador web y accede a la GUI de Asterisk utilizando la URL http://your-server-ip:8088/asterisk/static/config/index.html. Serás redirigido a la siguiente página:

Inicio de sesión de Astérix

Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón de inicio de sesión. Deberías ver el panel de control de la GUI de Asterisk en la siguiente página:

Tablero de mandos de Astérix

Conclusión

Enhorabuena! has instalado con éxito Asterisk y Asterisk GUI en el servidor Ubuntu 20.04. Ahora puedes conectar tu servidor a cualquier red PSTN y empezar a llamar absolutamente gratis.

Scroll al inicio