Saltearse al contenido

Taller 2: Compilación e Instalación de Asterisk 22

Instalación desde código fuente con optimizaciones para producción

Taller 2: Instalación de Asterisk 22 en Servidor Debian 13

Sección titulada «Taller 2: Instalación de Asterisk 22 en Servidor Debian 13»

️Preparar un servidor Debian 13 para una instalación profesional de Asterisk.
️Descargar y personalizar el código fuente oficial de Asterisk 22.
️Compilar e instalar Asterisk 22 LTS, seleccionando los módulos necesarios.
️Configurar Asterisk como un servicio del sistema (systemd).
️Realizar la verificación inicial y confirmar nuestra modificación en el código.

Antes de construir nuestra PBX, debemos preparar los cimientos. Un servidor limpio, actualizado y con las herramientas correctas es esencial para una instalación estable.

Asegúrate de tener acceso a tu servidor Debian 13 como usuario root.

Desde Linux/macOS:

Terminal window
ssh root@IP.DE.TU.SERVIDOR

Desde Windows: Usa un cliente como PuTTY o el Terminal de Windows para conectarte a la IP pública del servidor con el usuario root.

2.1.2.- Configuración de Cortafuegos y Actualización del Sistema

Sección titulada «2.1.2.- Configuración de Cortafuegos y Actualización del Sistema»

Para simplificar el proceso de compilación y la instalación inicial, inhabilitaremos temporalmente el cortafuegos. Importante: En un entorno de producción, configuraríamos reglas específicas como se verá en talleres posteriores.

Terminal window
# Detenemos el servicio de UFW (Uncomplicated Firewall) si estuviera activo.
systemctl stop ufw
# Lo deshabilitamos para que no inicie con el sistema durante nuestras pruebas.
systemctl disable ufw

Ahora, actualizamos el sistema para asegurarnos de tener los últimos parches de seguridad y listas de paquetes.

Terminal window
# Actualizamos la lista de paquetes disponibles en los repositorios de Debian.
apt update
# Actualizamos todos los paquetes instalados a sus últimas versiones.
apt upgrade -y

2.1.3.- Instalación de Dependencias de Asterisk

Sección titulada «2.1.3.- Instalación de Dependencias de Asterisk»

Asterisk se escribe en lenguaje C y necesita un conjunto de herramientas y librerías para poder ser compilado.

Terminal window
# Instalamos todas las dependencias necesarias de una sola vez.
# build-essential: Compilador de C (gcc) y herramientas asociadas.
# wget: Para descargar el código fuente.
# libncurses5-dev: Para las interfaces de menú en la consola (menuselect).
# libedit-dev: Para la edición de líneas en el CLI de Asterisk.
# libjansson-dev: Para el manejo de datos en formato JSON.
# libsqlite3-dev: Para la base de datos interna de Asterisk.
# libxml2-dev: Para el manejo de archivos de configuración y datos en formato XML.
# uuid-dev: Para la generación de identificadores únicos de llamada.
apt install -y build-essential wget libncurses5-dev libedit-dev libjansson-dev libsqlite3-dev libxml2-dev uuid-dev
# Reiniciamos para asegurar que todos los cambios y librerías del sistema se apliquen correctamente.
# Este es un buen hábito después de instalar un gran número de paquetes base.
reboot

2.2.- Descarga y Personalización del Código Fuente

Sección titulada «2.2.- Descarga y Personalización del Código Fuente»

Aquí es donde tomamos el control. No solo instalaremos Asterisk, lo haremos nuestro.

El directorio /usr/src es el lugar estándar en sistemas Linux para guardar el código fuente de las aplicaciones que compilamos.

Terminal window
# Nos movemos al directorio de código fuente.
cd /usr/src/
# Descargamos la última versión estable de Asterisk 22 LTS desde el sitio oficial.
# 'asterisk-22-current.tar.gz' siempre apunta a la versión más reciente de la rama 22.
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22-current.tar.gz
# Descomprimimos el archivo descargado.
tar xfvz asterisk-22-current.tar.gz
# Eliminamos el archivo comprimido para mantener limpio nuestro directorio.
rm -f asterisk-22-current.tar.gz

2.2.2- Dejando Nuestra Marca: Modificación del Código Fuente

Sección titulada «2.2.2- Dejando Nuestra Marca: Modificación del Código Fuente»

Este es un paso único de nuestro curso. Demostraremos que tenemos control total sobre la PBX modificando su comportamiento antes de que nazca.

Terminal window
# Navegamos al directorio del código fuente que acabamos de descomprimir.
# El * al final es un comodín que funciona aunque la versión exacta cambie (ej: 22.0.1, 22.1.0).
cd /usr/src/asterisk-22.*/
# Usaremos 'nano' para editar el corazón de Asterisk: el archivo main/asterisk.c
nano main/asterisk.c

Dentro del editor nano, busca la función main (puedes usar Ctrl + W para buscar “main”). Justo después de la línea 308, debes agregar lo siguiente:

/*! \brief Welcome message when starting a CLI interface */
#define WELCOME_MESSAGE \
ast_verbose("Asterisk %s, " COPYRIGHT_TAG "\n" \
"Created by Mark Spencer <markster@digium.com> - Instalado por AulaUtil\n" \
"Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.\n" \
"This is free software, with components licensed under the GNU General Public\n" \
"License version 2 and other licenses; you are welcome to redistribute it under\n" \
"certain conditions. Type 'core show license' for details.\n" \
"=========================================================================\n", ast_get_version()) \

Explicación del código:

  • ast_verbose: Agrega un mensaje de bienvenida personalizado al iniciar Asterisk.

Guarda el archivo y sal del editor (Ctrl + X, luego Y, y Enter).


2.3.- Compilación e Instalación de Asterisk

Sección titulada «2.3.- Compilación e Instalación de Asterisk»

Ahora que hemos personalizado el código, es hora de compilarlo y crear los binarios que se ejecutarán en nuestro servidor.

Primero, ejecutamos un script que verifica e instala cualquier dependencia adicional específica para nuestro entorno.

Terminal window
contrib/scripts/install_prereq install

A continuación, preparamos el entorno de compilación.

Terminal window
# El script 'configure' revisa nuestro sistema para asegurarse de que tenemos todo lo necesario.
# --with-jansson-bundled: Esta opción le dice a Asterisk que use la librería Jansson que viene
# empaquetada con el código fuente, evitando posibles conflictos con la versión del sistema.
./configure --with-jansson-bundled

Aquí es donde elegimos qué “piezas de Lego” queremos incluir en nuestra PBX.

Terminal window
make menuselect

Navega con las flechas y presiona Enter para entrar en los menús. Usa la barra espaciadora para seleccionar ([*]) o deseleccionar ([ ]) opciones.

Recomendaciones para nuestro curso:

  1. Add-ons:
    • format_mp3 (Para poder reproducir música en espera en formato MP3)
  2. Applications:
    • Lo dejamos como está.
  3. Codecs:
    • Agregamos codec_opus
  4. Channel Drivers:
    • Verifica que chan_pjsip esté seleccionado. Notarás que chan_sip ya no existe en el menú.
  5. Core Sound Packages:
    • CORE-SOUNDS-EN-WAV (Sonidos base en inglés)
    • CORE-SOUNDS-ES-WAV (Sonidos base en español)
  6. Extras Sound Packages:
    • EXTRA-SOUNDS-EN-WAV (Sonidos extra en inglés, como números y letras)
    • Revisa otras opciones si lo deseas.

Importante: En CDR y CEL deseleccionar radius, sqlite3 y tds.

Cuando termines, presiona F12 para guardar y salir.

Si seleccionaste format_mp3, debes ejecutar el siguiente script para descargar su código fuente, ya que por temas de licencia no se incluye directamente:

Terminal window
contrib/scripts/get_mp3_source.sh

Este proceso puede tardar varios minutos dependiendo de la potencia de tu servidor.

Terminal window
# 'make' compila todo el código fuente y crea los archivos binarios.
make
# 'make install' copia los archivos compilados a los directorios correctos del sistema.
make install
# 'make samples' instala archivos de configuración de ejemplo.
# ¡ADVERTENCIA! Úsalo solo en una instalación nueva.
# Si ya tienes configuraciones, este comando las SOBREESCRIBIRÁ.
make samples
# 'make config' crea el script de inicio para systemd, el sistema de servicios de Debian.
make config

Nuestra PBX personalizada ha sido creada. Es hora de encenderla y verificar nuestro trabajo.

Terminal window
# Actualiza la caché de las librerías compartidas del sistema para que Linux
# encuentre las nuevas librerías que Asterisk acaba de instalar.
ldconfig
# Habilitamos el servicio de Asterisk para que se inicie automáticamente cada vez que el servidor se reinicie.
systemctl enable asterisk
# Iniciamos el servicio de Asterisk por primera vez.
systemctl start asterisk
# ¡El momento de la verdad! Conectémonos a la consola (CLI) de Asterisk.
# -r: Conectar a una instancia de Asterisk ya en ejecución.
# -vvv: Aumenta el nivel de "verbose" o detalle de los mensajes que veremos.
asterisk -rvvv

Al conectarte, deberías ver entre los primeros mensajes de inicio, la línea que nosotros mismos escribimos: Created by Mark Spencer <markster@digium.com> - Instalado por AulaUtil

¡Felicidades! Has compilado y personalizado tu propia central telefónica.

Para verificar que todo está funcionando, ejecuta un comando simple en el CLI de Asterisk:

*CLI> core show version

Para salir de la consola de Asterisk, simplemente escribe:

*CLI> exit


¡Ha nacido nuestra PBX personalizada!


  • Sistema actualizado y dependencias de compilación instaladas
  • Código fuente de Asterisk 22 descargado en /usr/src/
  • Línea personalizada añadida en main/asterisk.c con ast_log(LOG_NOTICE, ...)
  • Compilación completada (make, make install, make samples, make config)
  • Servicio habilitado y corriendo (systemctl enable asterisk / systemctl start asterisk)
  • Acceso al CLI funcionando (asterisk -rvvv)
  • Mensaje personalizado visible al iniciar Asterisk

TareaComando
Actualizar sistemaapt update && apt upgrade -y
Instalar dependenciasapt install -y build-essential wget libncurses5-dev libedit-dev libjansson-dev libsqlite3-dev libxml2-dev uuid-dev
Instalar prerequisitoscontrib/scripts/install_prereq install
Configurar compilación./configure --with-jansson-bundled
Selección de módulosmake menuselect
Descargar soporte MP3contrib/scripts/get_mp3_source.sh
Compilarmake
Instalarmake install
Instalar samplesmake samples
Crear serviciomake config
Habilitar serviciosystemctl enable asterisk
Iniciar serviciosystemctl start asterisk
Conectar al CLIasterisk -rvvv