Instalación

De Asterisk Wiki
Saltar a: navegación, buscar

Es muy común pensar que la instalación de Asterisk es uno de los pasos del proceso mas compleja. De hecho, para el usuario novel podría considerarse así dado que la múltitud de opciones que permite la misma, puede generar confusión, inseguridad y en última instancia problemas a posteriori tras la misma.

Por eso, es fundamental entender todos los aspectos básicos y algo mas avanzados que se encuentran tras la misma, y así poder empezar en la andadura sobre el sistema con buen pie.

La instalación "oficial" de Asterisk, ha de hacerse a traves de las fuentes aunque existen otros metodos de instalación que trataremos limitadamente.

Los dos sistemas operativos mas populares durante la instalación de un sistema Asterisk, suelen ser Debian/Ubuntu Server o CentOS. Aunque como comentado en la introducción es posible hacer una instalación en sistemas totalmente bizarros que tengan fundamentos *nix de trasfondo como por ejemplo, routers Linksys, pasando por un sistema Apple o incluso una Playstation 3 con OtherOS.

En esta primera versión de Página me centrare en la instalación sobre Ubuntu Server, y que es totalmente equivalente a la instalación sobre cualquier sistema derivado de Debian o Ubuntu (como Linux Mint). En un futuro estimo la necesidad de ampliar toda la información relevante para la instalación simultanea pero en otros sistemas popular como CentOS.

Descarga de las fuentes

En primer lugar, sera necesario descargar las fuentes del sistema completo. Para una maquina Asterisk con tarjetas Digium (por ejemplo), serían necesario los tres paquetes principales:

  • La versión de Asterisk con la que queramos trabajar, en este caso lo haremos con la reciente mas estable: Asterisk 1.8
  • LibPRI, librerías par dar soporte PRI/BRI a tarjetas digitales Digium y compatibles.
  • Drivers y herramientas DAHDI, para todo lo relacionado al mundo de las tarjetas Digium.

Antiguamente, versiones 1.6 y anteriores, algunos módulos (segun la Arquitectura de Asterisk) eran instalados aparte con un paquete especifico llamado Asterisk-Addons seguido de la versión de los mismos (que "casualmente" solía coincidir con la versión del nucleo). Pero a partir de la versión 1.8 se tomo la decisión de unificar este paquete con el general de Asterisk.

El FTP principal de Asterisk es el siguiente, FTP Asterisk

Desde aqui tenemos prácticamente acceso al todos los paquetes fundamentales para una instalación completa. A traves de su estructura de directorios los que nos interesan son:

Considerar que el paquete DAHDI completo a su vez se divide en dos paquetes esenciales, no es necesario instalarlos por separado teniendo la versión completa pero puede resultar útil a efectos informativos.:

  • DAHDI linux, todo lo relacionado a drivers y demas elementos de asociación al sistema operativo Linux]
  • DAHDI tools, una serie de herramientas para comprobar el estado de las tarjetas, canales, calidad, etc.

Dentro de estos directorios, podemos ir a la versión que nos interese instalar y proceder con ella.

Podemos ir al directorio más comun para la descarga, compilación e instalación de fuentes en Linux. Voy a suponer que durante la instalación creamos un usuario llamado asterisk para dar permisos a /usr/src suficientes para poder realizar la instalacion en condiciones:

# cd /usr/src


# sudo chown -R asterisk:asterisk /usr/src/


Y a continuación mediante la aplicación WGET (hay que tenerla instalada en el sistema es importante), o a traves de repositorio SVN de Asterisk que no vamos a tratar en esta explicación, podriamos comenzar a descargarnos las fuentes a este directorio:

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


# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz


# wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz


Y descomprimimos todo en sus respectivos subdirectorios, todos a la vez o individualmente como se prefiera:

# for file in *.tar.gz; do tar zxf "${file}"; done


Compilación e Instalación

Una vez que tenemos las fuentes listas para compilar necesitamos asegurarnos que tenemos todo lo necesario para que el proceso vaya lo mas "suave" posible. En primer lugar debemos disponer de todos los "complementos" y aplicaciones necesarias para que funcione Asterisk perfectamente, y concretamente la instalación vaya fluida.

Esta lista [1], son los paquetes necesarios para realizar una instalación integral de todos los paquetes necesarios, no voy a entrar en detalles para definir el uso de cada una, todo ello puede encontrarse fácilmente por Internet.

- Lo básico para compilar

Build-essential, linux-headers adecuados al kernel de la maquina, flex, bison, gawk

- Herramientas adicionales del servidor

ssh, unixodbc, unixodbc-dev, libmyodbc, subversion, mc, pciutils, doxygen

- Librerías múltiples

libxml2-dev, libmysqlclient-dev, libcurl4-openssl-dev, curl, libncurses5-dev, libiksemel-dev, libspeex-dev, libsm1-dev, libssl-dev, libvorbis-dev, libsnmp-dev, libsctp-dev, libsctp1, libnewt-dev, lksctp-tools

Con todo esto procedemos a instalarlo de la siguiente forma, en Ubuntu Server:

# sudo aptitude update


# sudo aptitude upgrade


# sudo aptitude install ssh mc pciutils build-essential libxml2-dev libnewt-dev libssl-dev libmysqlclient-dev
libcurl4-openssl-dev curl libncurses5-dev libiksemel-dev libspeex-dev libgsm1-dev unixodbc-dev flex bison gawk
subversion libvorbis-dev libsnmp-dev libsctp-dev libsctp1 lksctp-tools unixodbc libmyodbc doxygen linux-headers-`uname -r`


Novedad Asterisk 11: Se utilizan las librerias SQLite

# sudo aptitude install libsqlite3-dev


En función del equipo y de la conexión esta parte puede tardar bastante. Si no disponemos de conexión a Internet siempre podemos hacer este proceso a través de los CD de instalación. En detalle esto viene bastante bien explicado en este Manual de Instalación de Paquetes.

Y con esto ya tenemos el sistema preparado para instalar las fuentes en orden.

Instalar LibPRI

Como comentaba antes, la librería libPRI es la encargada de gestionar lo relacionado a la telefonía digital, es decir los Primarios, PRI, las RDSI (BRI) y a su vez el protocolo QSIG, estandarizado para la señalización entre PBX que utilicen estos sistemas de telefonía.

La instalación de LibPRI es bastante sencilla y no suele dar lugar a errores. Considerar que como ejemplo voy a utilizar la versión aplicable en el momento de la escritura de este documento, y es muy probable que se mantenga invariable con el tiempo, ya que estas librerías se encuentran en un nivel de madurez bastante alto y son poco propensas a sufrir modificaciones con el tiempo.

# cd libpri-1.4.12


# make


# sudo make install


Instalar DAHDI

Por otro lado, debemos instalar todo lo referente a DAHDI para el correcto uso de tarjetas. Al igual que en el caso de LibPRI, todo resulta bastante secuencial y libre de fallos. Al igual que para el resto de los componentes, esto se aplica a la versión actual, y muy similar también a LibPRI, DAHDI se encuentra en un nivel de madurez el cual hace que no sufra modificaciones apenas, excepto para la incorporación de drivers para tarjetas Digiums nuevas, como ocurrió recientemente con la salida de la tarjeta de 8 spans como comento en la sección Digium.

Ademas gracias a la instalación de los paquetes DAHDI aun sin tarjetas insertadas, estamos ofreciendo una fuente de sincronización al sistema por software, vía dahdi_dummy, útil por ejemplo, para determinadas aplicaciones propias de Asterisk como MeetMe que lo requieren para funcionar adecuadamente.

# cd dahdi-linux-complete-2.6.1+2.6.1/


Es importante considerar que durante la instalación de DAHDI, el fichero Makefile hace llamadas a wget para descargar componentes y drivers de Internet. Esto puede ser problemático específicamente en el caso que estemos instalando nuestro Asterisk sin disponer de una conexión a Internet. Es posible que en este caso deseemos modificar el archivo Makefile para que se ajuste a nuestras necesidades del momento.

# make


# sudo make install


# sudo make config


Instalar Asterisk

Finalmente, el núcleo principal y todos sus añadidos, el origen y el sentido de esta Wiki, llega la hora de instalar Asterisk. Esta parte del proceso es la que debe ser mas cuidada y esta sujeta a varias consideraciones según comento a continuación.

En primer lugar accedemos a las fuentes como viene siendo habitual de las otras instalaciones y realizamos la configuración de los ficheros de compilación gracias a la poderosa herramienta Autoconf.

# cd asterisk-1.8.12.0/


# ./configure


Si nos aparece el símbolo de Asterisk significa que existe una alta probabilidad de que la instalación fluya perfectamente. Sino aparece significa que algo no hemos instalado correctamente, seguramente sea algún paquete de algún programa durante la primera fase de la instalación. Con el siguiente comando, podriamos intentar tener una aproximación de que ha fallado y que puede ser necesario:

# ./configure


En siguiente lugar, nos toca realizar la selección de que es lo que queremos compilar y transitívamente instalar. Para ello la opción mas sencilla sería acceder al menu de selección que provee la herramienta de instalación de Asterisk:

# make menuselect


MenuSelect de Asterisk

En este apartado podremos seleccionar a voluntad utilizando las teclas de movimiento del teclado. Por defecto esta seleccionado lo mas interesante, así que a priori, no sería necesario cambiar nada, a no ser que realmente lo necesitáramos. Una vez realizada la seleccion a voluntad, pulsamos TAB y luego Intro para "Save and Exit".

Con esto ya estamos preparados para compilar las fuentes.

# make


# sudo make install


# sudo make config


Y si deseamos también podríamos compilar la documentación en Doxygen. Realmente no es demasiado práctico especialmente si no disponemos de amplios recursos en nuestra máquina y mas sabiendo que hoy en día hay suficiente documentación. Pero si aun así queremos proceder seria:

# make progdocs


Finalmente existe un comando bastante interesante, pero algo "peligroso" si no es tomado con cautela. Es posible cargar todos los archivos de configuración de ejemplo en los directorios ideales por defecto (/etc/asterisk típicamente) y poder trabajar sobre estos archivos en vez de tener que crearlos desde 0. El problema es que ya existe una instalación de Asterisk y ejecutamos el comando, destruiríamos todos los ficheros que ya se encuentran residentes. En una instalación limpia como la que nos ocupa ahora mismo, no habría gran problema. En el caso de este tutorial, no vamos a ejecutarlo para así poder ir construyendo el sistema Asterisk desde la base mínima. Además todos estos ficheros de configuración de ejemplo que estoy hablando se encuentran dentro de nuestro directorio de fuentes de instalación de Asterisk en el directorio /configs/.

Pero si aun así queremos hacerlo simplemente ejecutamos:

# make samples


Y con todo esto, ya tenemos el sistema Asterisk instalado.

Configuración Inicial

Seguridad tras la Instalación

En primer lugar uno de los primeros pasos para proveer al sistema Asterisk de cierta seguridad es la de configurar todo el mismo sin permisos de superusuario de Linux (que tuvimos que otorgar necesariamente durante la instalación mediante el uso del comando "sudo").

Para ello podemos crear un fichero para que realice todo esto, o ir ejecutando las ordenes una a una manualmente. En este caso lo hare mediante un archivo:

# cd ~/


# vim permisos_asterisk


Archivo: ~/permisos_asterisk
#!/bin/bash
sudo chown -R asterisk:asterisk /usr/lib/asterisk/
sudo chown -R asterisk:asterisk /var/lib/asterisk/
sudo chown -R asterisk:asterisk /var/spool/asterisk/
sudo chown -R asterisk:asterisk /var/log/asterisk/
sudo chown -R asterisk:asterisk /var/run/asterisk
sudo chown asterisk:asterisk /usr/sbin/asterisk


# chmod +x permisos_asterisk


# ./permisos_asterisk


Configuración del Directorio Principal

Como vengo comentando recurrentemente desde el principio, ahora debemos empezar a insertar los archivos de configuración básicos dentro del directorio principal de Asterisk /etc/asterisk

# sudo mkdir /etc/asterisk/


# sudo chown asterisk:asterisk /etc/asterisk/


Y copiamos un par de ficheros que nos harán falta para arrancar Asterisk de inmediato:

# cp /usr/src/asterisk-1.8.12.0/configs/indications.conf.sample /etc/asterisk/indications.conf


# cp /usr/src/asterisk-1.8.12.0/configs/asterisk.conf.sample /etc/asterisk/asterisk.conf


Y dentro del fichero asterisk.conf necesitamos editar información referente al usuario que va a hacer uso del sistema Asterisk, en este caso, nuestro usuario "asterisk".

Descomentamos las lineas runuser y rungroup de tal forma que queden asi:

Archivo: /etc/asterisk/asterisk.conf
runuser=asterisk
rungroup=asterisk


Finalmente para comprobar que todo fue perfectamente ejecutamos el servidor Asterisk con el siguiente comando:

# asterisk -c


Y veremos como carga la interfaz de consola CLI mostrando que hemos tenido éxito durante la instalación.

Carga y Descarga de Módulos Automatica

Existe un fichero dentro de nuestro directorio principal de Asterisk llamado modules.conf que se encarga de gestionar la carga y descarga de módulos automáticamente.

Hay múltiples enfoques sobre como gestionar los mismos, dado que en estos radica gran parte de la seguridad del sistema al ser en parte independientes del núcleo y poder contener de manera independiente fallos en la seguridad que podrían comprometer al resto del sistema.

Es por esto altamente recomendable elegir selectivamente que modulos vamos a utilizar en nuestro sistema, y descartar el resto. Todos los modulos se encuentran en el directorio /usr/lib/asterisk/modules/ por ello una configuración muy sencilla pero bastante insegura podría realizarse asi:

Archivo: /etc/asterisk/modules.conf
[modules]
autoload=yes


De esta forma, tendriamos un sistema Asterisk totalmente funcional, pero bastante inseguro, ya que cargaría el 100% de los modulos en el directorio antes mencionado, aunque tambien es posible que durante la compilación he instalación hayamos elegido selectivamente los modulos a instalar por tanto sería un enfoque también posible. Sobre el resto de las formas de conseguir este nivel de selección, se trataran mas a fondo en el correpondiente apartado dentro de Seguridad.

Referencias

  1. 10000 Horas, Manuel Camargo (2010)

Véase también

Enlaces Externos

El proyecto Asterisk Docs ha servido bastante como apoyo para la creación de esta guía.