Como instalar asterisk 16 en Centos 8

Qué es Asterisk? Es un framework open source (bajo licencia GPL V2) que nos permite construir aplicaciones de comunicación, es patrocinada por digium y creada inicialmente por Mark Spencer, provee funcionalidades de una central telefónica (PBX).

Digium/Sangoma son las empresa que promueve el software e invierte en ambos aspectos, el desenvolvimiento de código fuente y en hardware de telefonía de bajo costo que funciona con Asterisk, aunque podemos conectarlo a la red pública de telefonía PSTN (Public Service Telephony Network) con o sin hardware.


Instalación de Asterisk.

Al momento de realiza este manual existe la versión 17 de Asterisk, pero la versión 16 es la de lago soporte, por lo cual, es la que estaremos utilizando.

Requerimientos

Paquetes: Los requerimientos para instalar Asterisk cambian de acuerdo con la necesidad del usuario y la distribución que utilicemos, por lo cual, los requerimientos indicados mas abajo deben ser visto como una guía de iniciación y no como el total de los paquetes que se requieren para completar todos los requisitos. 

Recuerde que estos comando son referencia, puede ir directamente a la seccion Requerimiento de paquetes para compilar fuera de esta tabla, donde encontrar las pasos para instalar asterisk en Centos 8

   Centos:

Opcion 1

[root@centosasterisk ~]# dnf -y install "@Development Tools"

Opcion 2

[root@centosasterisk ~]# dnf -y install gcc wget ncurses-devel  libtermcap-devel kernel-devel kernel-smp-devel gcc-c++ openssl-devel newt-devel zlib-devel unixODBC-devel libtool wget make kernel kernel-headers sqlite-devel kernel kernel-headers sqlite-devel

[root@centosasterisk ~]# reboot           #Reiniciamos el ordenador.

   Debian:

[root@debianasterisk ~]# apt-get install build-essential subversion libncurses5-dev libssl-dev libxml2-dev vim-nox linux-source wget linux-headers-`uname -r`  unixodbc-dev

[root@debianasterisk ~]# reboot           #reiniciamos el ordenador.

 

Procesador: Asterisk utiliza el procesador para procesar las llamadas, esto quiere decir que de acuerdo a nuestra necesidad sera el procesador que instalaras.


Requerimiento de paquetes para compilar: libpri, dahdi y asterisk

Nota: nosotros vamos a crear un directorio de nombre asterisk-src en /usr/src/ para descargar, extraer y compilar los paquetes siguiendo el siguiente orden: dahdi, libpri y por último Asterisk, usaremos wget y/o curl para descargar los fuentes de digium

Actualizamos el sistema y reiniciamos

[root@server src]# dnf -y update

[root@server src]# systemctl reboot

Iniciamos con la instalación de las dependencia para nuestra PBX

[root@server src]# dnf  -y install epel-release wget curl bzip2 tar sqlite-devel ncurses-devel systemd-devel "@Development Tools"

[root@server src]# mkdir /usr/src/asterisk-src

[root@server src]# cd /usr/src/asterisk-src

[root@server src]# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

[root@server src]# wget https://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz

[root@server src]# curl -C - -O http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz

[root@server src]# for x in /usr/src/asterisk-src/*.gz;do tar zxvf $x;done

[root@server src]# cd /usr/src/asterisk-src/asterisk-16.*/

[root@server src]# ./contrib/scripts/install_prereq install

[root@server src]# ./contrib/scripts/get_mp3_source.sh

  

Nota: En el momento de hacer este manual, la versión de Centos 8 no tenia en su repositorios el paquete libedit-devel, por lo cual, fue necesario descargarlo y compilarlo, aquí les dejos los comandos:

[root@server src]# cd /usr/src/asterisk-src/

[root@server src]# wget http://thrysoee.dk/editline/libedit-20190324-3.1.tar.gz

[root@server src]# tar zxvf libedit-20190324-3.1.tar.gz && cd libedit-20190324-3.1/

[root@server src]# ./configure && make && make install

 

Compilando Dahdi y Dahdi Tools

[root@srvasterisk src]# cd /usr/src/asterisk-src/ && tar xzvf dahdi-linux-*-current.tar.gz  #Ojo, Ejecute esta linia solo si el paquete no esta descomprimido

[root@server src]# cd /usr/src/asterisk-src/dahdi-linux-complete*/

[root@server src]# make clean

[root@server src]# make

[root@server src]# make install

[root@server src]# make install-config

 

Compilando Libpri

[root@srvasterisk src]# cd /usr/src/asterisk-src/ && tar xzvf libpri-current.tar.gz              #Ojo, Ejecute esta linia, solo si el paquete no esta descomprimido [root@server src]# cd /usr/src/asterisk-src/libpri-*/

 [root@server src]# make clean

[root@server src]# make && make install

Compilando Asterisk

[root@server src]# cd /usr/src/asterisk-src/ && tar xzvf asterisk-16-current.tar.gz            #Ojo, Ejecute esta linia, solo si el paquete no esta descomprimido

[root@server src]# cd /usr/src/asterisk-src/asterisk-*/

[root@server src]# ./configure

Si las dependencias básicas se instalaron correctamente, el comando anterior terminara como la siguiente imagen, indicando que se completo satisfactoriamente.

En caso de que tenga algún problema con la dependencia correspondiente al paquete jansson, por ejemplo, Cuando instalamos en Centos 7, frecuentamos el error por dependencia del paquete jansson-devel, o simplemente quieres indicarla a Asterisk que instale y compile el paquete Jansson, ejecute el archivo configure con el siguiente parámetro ./configure --with-jansson-bundled

[root@server src]# make menuconfig

Ejecutado el comando anterior, nos mostrara un menú como la imagen, para que personalicemos la instalación, activando y desactivando bajo demanda.

[root@server src]# make && make install

Completados los comandos anteriores, nos mostrara un mensaje el de la imagen indicando que se completo la instalación de Asterisk y nos sugiere otros.

[root@server src]# make samples && make config && make install-logrotate && ldconfig

Aunque para los fines de este documento utilizamos make samples, igualmente puedes usar make basic-pbx y tendras la configuración de una pbx básica.

 

Cambiando el usuario con que ejecutaremos Asterisk - Agregando un usuario para Asterisk

Creamos un usuario de nombre asteriskpbx

[root@server src]# useradd -m -c "Asteriskpbx user" asteriskpbx

 

Cambiamos los permisos

[root@server src]# chown -R asteriskpbx:asteriskpbx /usr/lib/asterisk/

[root@server src]# chown -R asteriskpbx:asteriskpbx /var/lib/asterisk/

[root@server src]# chown -R asteriskpbx:asteriskpbx /var/spool/asterisk/

[root@server src]# chown -R asteriskpbx:asteriskpbx /var/log/asterisk/

[root@server src]# chown -R asteriskpbx:asteriskpbx /var/run/asterisk

[root@server src]# chown asteriskpbx:asteriskpbx /usr/sbin/asterisk

[root@server src]# chown -R asteriskpbx:asteriskpbx /var/lib/asterisk/sounds/

 

Editamos el archivo asterisk.conf con un editor de texto para indicarle con que usuario inicia Asterisk,

Ejecutamos el siguiente comando y hace la ediccion por nosotros, asumiendo que el usuarios creado es el indicado en este manual:

[root@server src]# sed -i.org 's/\(.*runuser.*=\).*/runuser = asteriskpbx \t\t; The user to run as./g' /etc/asterisk/asterisk.conf

[root@server src]# sed -i 's/\(.*rungroup.*=\).*/rungroup = asteriskpbx \t\t; The group to run as./g' /etc/asterisk/asterisk.conf

Entramos en el archivo /etc/asterisk/asterisk.conf con el editor de texto vim y buscamos la líneas con los parámetros runuser y rungruop y lo modificamos en caso que no estén como estos parámetros:

runuser = asteriskpbx

rungroup = asteriskpbx

 

Configurando Asterisk para que trabaje con selinux activo y con el mismo comando le hacemos un Backup al archivo.

[root@server src]# setenforce 0

[root@server src]# restorecon -vr /var/lib/asterisk/

[root@server src]# restorecon -vr /sbin/

[root@server src]# restorecon -vr /etc/asterisk*

[root@server src]# setsebool -P daemons_use_tty 1

[root@server src]# setenforce 1

[root@server src]# sudo grep -i sealert /var/log/messages

[root@server src]# sed -i.org 's/\(^SELINUX=\).*/\SELINUX=enforcing/g' /etc/sysconfig/selinux

[root@server src]# sed -i.org 's/\(^SELINUX=\).*/\SELINUX=enforcing/g'  /etc/selinux/config

 

En caso de que tengan algún problema con selinux, posiblemente sea porque algún archivos aun no este en el contexto indicado, la solución mas simples es colocar el selinux en modo permissive y con el mismo comando le hacemos un Backup al archivo.

[root@server src]# setenforce 0

root@server src]# sed -i.org 's/\(^SELINUX=\).*/\SELINUX=permissive/g' /etc/sysconfig/selinux

[root@server src]# sed -i.org 's/\(^SELINUX=\).*/\SELINUX=permissive/g'  /etc/selinux/config

 

Si quiere ver la configuracino realizada y aplicada de los comandos de selinux anteriores debes ejecutar el commando siguiente:

root@server src]# sestatus

 

Nos aseguramos de que el firewall esta iniciado y le agregamos al firewall una configuración básica para que permita los puertos SIP y RTP por UDP.

[root@server src]# systemctl start firewalld

[root@server src]# systemctl enable firewalld

[root@server src]# firewall-cmd --zone=public --add-port=5060/udp --permanent

[root@server src]# firewall-cmd --zone=public --add-port=10000-20000/udp --permanent

[root@server src]# firewall-cmd --reload

Otros puertos o canales (IAX, AMI o sip por tcp via el pueto 5061) que posiblemente necesitaras permitirle la conexión al servidor Asterisk.

[root@server src]# firewall-cmd --zone=public --add-port=4569/udp --permanent

[root@server src]# firewall-cmd --zone=public --add-port=5838/tcp --permanent

[root@server src]# firewall-cmd --zone=public --add-port=5060/tcp --permanent

[root@server src]# firewall-cmd --zone=public --add-port=5061/udp --permanent

root@server src]# firewall-cmd --zone=public --add-port=5061/tcp --permanent

[root@server src]# firewall-cmd –reload 

Si quiere ver la configuracino realizada y aplicada de los caomandos del firewall anteriores debes ejecutar el commando siguiente:

root@server src]# firewall-cmd --list-all

Iniciando y configurando Asterisk para que inicie con el sistema.

[root@server src]# systemctl enable asterisk

 

[root@server src]# systemctl start asterisk

[root@server src]# systemctl status asterisk

 

1 comentario de “Como instalar asterisk 16 en Centos 8”

  1. Perfecto, tenia problemas de conexión en el firewall con un centos 8 y veo que ya cambio del uso de iptables.
    He estado haciendo pruebas con los protocolos SIP e IAX y todo va super bien.
    Muchas gracias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *