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»Este laboratorio tiene como objetivo
Sección titulada «Este laboratorio tiene como objetivo»✔ ️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.
2.1.- Preparando el Servidor
Sección titulada «2.1.- Preparando el Servidor»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.
2.1.1.- Acceso Remoto SSH al Servidor
Sección titulada «2.1.1.- Acceso Remoto SSH al Servidor»Asegúrate de tener acceso a tu servidor Debian 13 como usuario root.
Desde Linux/macOS:
ssh root@IP.DE.TU.SERVIDORDesde 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.
# 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 ufwAhora, actualizamos el sistema para asegurarnos de tener los últimos parches de seguridad y listas de paquetes.
# Actualizamos la lista de paquetes disponibles en los repositorios de Debian.apt update
# Actualizamos todos los paquetes instalados a sus últimas versiones.apt upgrade -y2.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.
# 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.reboot2.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.
2.2.1- Descarga del Código Fuente Oficial
Sección titulada «2.2.1- Descarga del Código Fuente Oficial»El directorio /usr/src es el lugar estándar en sistemas Linux para guardar el código fuente de las aplicaciones que compilamos.
# 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.gz2.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.
# 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.cnano main/asterisk.cDentro 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.
2.3.1- Configuración de la Compilación
Sección titulada «2.3.1- Configuración de la Compilación»Primero, ejecutamos un script que verifica e instala cualquier dependencia adicional específica para nuestro entorno.
contrib/scripts/install_prereq installA continuación, preparamos el entorno de compilación.
# 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-bundled2.3.2- Selección de Módulos (menuselect)
Sección titulada «2.3.2- Selección de Módulos (menuselect)»Aquí es donde elegimos qué “piezas de Lego” queremos incluir en nuestra PBX.
make menuselectNavega 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:
- Add-ons:
format_mp3(Para poder reproducir música en espera en formato MP3)
- Applications:
- Lo dejamos como está.
- Codecs:
- Agregamos
codec_opus
- Agregamos
- Channel Drivers:
- Verifica que
chan_pjsipesté seleccionado. Notarás quechan_sipya no existe en el menú.
- Verifica que
- Core Sound Packages:
CORE-SOUNDS-EN-WAV(Sonidos base en inglés)CORE-SOUNDS-ES-WAV(Sonidos base en español)
- 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:
contrib/scripts/get_mp3_source.sh2.3.3- Compilación e Instalación Final
Sección titulada «2.3.3- Compilación e Instalación Final»Este proceso puede tardar varios minutos dependiendo de la potencia de tu servidor.
# '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 config2.4.- Verificación y Primer Arranque
Sección titulada «2.4.- Verificación y Primer Arranque»Nuestra PBX personalizada ha sido creada. Es hora de encenderla y verificar nuestro trabajo.
# 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 -rvvvAl 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 versionPara salir de la consola de Asterisk, simplemente escribe:
*CLI> exit✅ Checklist Final del Taller
Sección titulada «✅ Checklist Final del Taller»- 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.cconast_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
🧰 Resumen de Comandos Clave
Sección titulada «🧰 Resumen de Comandos Clave»| Tarea | Comando |
|---|---|
| Actualizar sistema | apt update && apt upgrade -y |
| Instalar dependencias | apt install -y build-essential wget libncurses5-dev libedit-dev libjansson-dev libsqlite3-dev libxml2-dev uuid-dev |
| Instalar prerequisitos | contrib/scripts/install_prereq install |
| Configurar compilación | ./configure --with-jansson-bundled |
| Selección de módulos | make menuselect |
| Descargar soporte MP3 | contrib/scripts/get_mp3_source.sh |
| Compilar | make |
| Instalar | make install |
| Instalar samples | make samples |
| Crear servicio | make config |
| Habilitar servicio | systemctl enable asterisk |
| Iniciar servicio | systemctl start asterisk |
| Conectar al CLI | asterisk -rvvv |