Asterisk es un software de centralita privada (PBX) de código abierto y, como tal, su objetivo principal es establecer y controlar llamadas telefónicas entre varios sistemas, a través de líneas PSTN tradicionales o terminales VoIP modernos.
En esta guía nos aseguraremos se instalará en RHEL 8/CentOS 8 junto con componentes comunes.
Pondremos la última versión, la 16.3.0 al momento de escribir este tutorial.
- Requisitos previos
Necesitamos instalar los siguientes paquetes, incluido systemd-devel
si queremos iniciar Asterisk como un servicio systemd.
# dnf -y install wget bzip2 tar sqlite-devel ncurses-devel systemd-devel
Y para desarrollar a partir de fuentes:
# dnf -y install binutils gcc gcc-c++ kernel-devel autoconf automake libtool
De ahora en adelante, debemos instalar todo desde las fuentes, así que hagámoslo desde una carpeta común
# mkdir -p /root/src && cd /root/src
Primero vamos a compilar libedit
, un reemplazo o alternativa a la edición de línea de comandos de GNU readline.
# cd /root/src
# wget http://thrysoee.dk/editline/libedit-20190324-3.1.tar.gz
# tar xzvf libedit-20190324-3.1.tar.gz
# cd libedit-20190324-3.1
# ./configure && make && make install
- Instalación de componentes opcionales
Los siguientes componentes son opcionales, pero en un escenario real suelen ser necesarios.
DAHDI
(Interfaz de dispositivo de hardware Digium/Asterisk):es un marco para interactuar con tarjetas de telefonía digital en Asterisk.
Vamos a instalarlo.
# cd /root/src
# wget https://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
# tar zxvf dahdi-linux-complete-current.tar.gz && cd dahdi-linux-complete-3.0.0+3.0.0
# make all && make install && make install-config
# cd /etc/dahdi && cp system.conf.sample system.conf
# systemctl enable dahdi && systemctl start dahdi
# modprobe dahdi
# modprobe dahdi_transcode
LibPRI es una biblioteca que agrega soporte para ISDN (PRI y BRI), básicamente se necesita si se instala una tarjeta ISDN para comunicarse con sistemas heredados.
Para instalarlo:
# cd /root/src/
# wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.6.0.tar.gz
# tar xzvf libpri-1.6.0 && cd libpri-1.6.0
# make && make install
- Instalación de Asterisk
Ahora es el momento de compilar la aplicación principal desde las fuentes, como se mencionó.
Esto también instalará la biblioteca SIP pjsip
en el sistema.
# cd /root/src/
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16.3.0.tar.gz
# tar xzvf asterisk-16.3.0.tar.gz
# wget https://raw.githubusercontent.com/asterisk/third-party/master/pjproject/2.8/pjproject-2.8.tar.bz2
# mv pjproject-2.8.tar.bz2 /tmp
# cd asterisk-16.3.0
# ./configure
# make && make install && make install-logrotate
Con make install-logrotate
nos aseguramos de que los archivos de registro de la aplicación se rotarán.
- Configuración de Asterisk
En Asterisk hay muchos archivos de configuración, el principal es asterisk.conf
; para instalar una versión por defecto de todos ellos necesitamos ejecutar:
# cd /root/src/asterisk-16.3.0/
# make samples
En este punto, dado que algunos módulos o características requieren más configuración o dependencias, es mejor deshabilitarlos.
Sin embargo, esto no es obligatorio, no son componentes esenciales que impidan que Asterisk se inicie.
#cd /etc/asterisk
# cp modules.conf modules.conf.org
# echo "noload => res_config_ldap.so" >>modules.conf
# echo "noload => res_pjsip_transport_websocket.so" >>modules.conf
# echo "noload => cdr_sqlite3_custom.so" >>modules.conf
# echo "noload => cel_sqlite3_custom.so" >>modules.conf
# echo "noload => res_config_sqlite3.so" >>modules.conf
# echo "noload => cdr_pgsql.so" >>modules.conf
# echo "noload => cel_pgsql.so" >>modules.conf
# echo "noload => res_config_pgsql.so" >>modules.conf
sed -i.org 's/enabled = yes/enabled = no/' ari.conf
Luego es hora de preparar los archivos de servicio de systemd:
# cd /root/src/asterisk-16.3.0/contrib/systemd
# cp asterisk* /usr/lib/systemd/system
El servicio Asterisk debe ejecutarse como un usuario normal, por razones de seguridad, por lo que debemos agregar una ID de servicio que se llamará asterisk
como se especifica en el archivo de configuración de systemd.
# useradd -m -c "asterisk user"
Entonces cambiemos algunos permisos:
chown -R asterisk:asterisk /var/log/asterisk/*
chown asterisk:asterisk /var/log/asterisk/.
- Iniciar Asterisk
SELinux evitará que Asterisk se inicie, por lo que lo pondremos en permissive mode
en aras de la simplicidad.
# setenforce 0
# sed -i.org 's/enforcing/permissive/' /etc/sysconfig/selinux
Finalmente podemos iniciar Asterisk
# systemctl enable asterisk
# systemctl start asterisk
También puede ejecutar Asterisk directamente sin systemd emitiendo:
# /usr/sbin/asterisk -mqf -C /etc/asterisk/asterisk.conf
o mejor
# asterisk -vvvc
para obtener información detallada.
Salida de asterisco cuando se lanza directamente
- Reconfiguración de Asterisk
Es posible reconfigurar Astering en cualquier momento eliminando o (volviendo a) agregar cualquier función.
Simplemente detenga el servicio, cambie a la carpeta de origen y ejecute make menuselect
. Selección de menú de asterisco
# systemctl stop asterisk
# cd /root/src/asterisk-16.3.0/
# make menuselect
Si ha realizado algún cambio, debe guardar la configuración antes de salir del menú de selección de menú.
Después es necesario volver a compilar Asterisk como se explicó anteriormente. Es mejor hacer cualquier cambio primero en un entorno de prueba.
- Eliminación de Asterik
Si alguna vez necesita eliminar Asterisk del sistema, incluidos Dahdi y libpri, estos son los pasos:
# systemctl stop dahdi
# systemctl stop asterisk
# cd /root/src/asterisk-16.3.0
# make uninstall-all
cd /root/src/libpri-1.6.0 && make uninstall
- Acceso a la CLI de Asterisk
Este software también tiene su shell, para acceder a él, una vez que se inicia Asterisk, debemos escribir: # asterisk -r
CLI de asterisco
Hemos compilado con éxito Asterisk desde las fuentes y lo hemos iniciado, sin embargo, no es suficiente para obtener un entorno de trabajo; normalmente, después de la instalación, agregará sus terminales SIP editando el archivo de configuración sip.conf
– o a través de la CLI mencionada – y configurar cualquier extensión en el archivo extensions.conf
. Ambos archivos están en /etc/asterisk.