Instalación de Asterisk con FreePBX. Parte 0

La telefonía IP es algo que nos puede ahorrar mucho dinero, pues evita tener que utilizar infraestructuras dedicadas solo para telefonía, y nos ofrece el uso de una sola infraestructura o red convergente, además nos permite miles de funciones que la telefonía común ni si quiera se podría imaginar: creación de mensajes personalizados por extensión, por hora, por día, etc… y un sin fin funcionalidades, que con más tiempo veremos por aquí, espero…

CONFIGURACIÓN INICIAL

Para empezar debemos actualizar el sistema, para cerciorarnos de tener los últimos paquetes.

#apt-get update && apt-get upgrade

Ahora instalaremos la librería para poder hacer SSH con lo que podremos acceder a controlar la centralita desde otro ordenador de manera remota y segura, si queremos, claro.

#apt-get install openssl libssl-dev ssh

A continuación instalaremos tres librerías fundamentales para la instalación de Asterisk: GCC y G++ para poder compilar archivos programados en C y Make para poder compilarlos e instalarlos.

#apt-get install gcc make g++

Ahora, conseguiremos los linux-headers para la versión de nuestro Kernel.

#apt-cache search `uname -r`

Instalamos los encabezados del Kernel:

#apt-get install linux-headers-`uname -r` linux-image-`uname -r`

 

NOTA

Las siguientes órdenes, tanto de instalación como de descargas de paquetes mediante wget, podrían tornarse tediosas, para evitar esto, he alojado un fichero en un servidor gratuito el cual contiene todos esos pasos y que solo bastará con descargar y ejecutar con la orden source para que se realicen todos los pasos de instalación y descarga de paquetes.
Entonces, si así lo deseamos deberíamos ejecutar:
#wget http://ge.tt/api/1/files/9ei0bn92/0/blob?download && source blob\?download

 

DESCARGA DE PAQUETES Y LIBRERÍAS

Ahora instalaremos algunas utilidades en Linux. Links2 es un navegador web de texto, el cual podríamos utilizar para visualizar el básico y correcto funcionamiento de nuestro apache, si no tenemos una GUI cerca. El siguiente paso será instalar festival que es un paquete utilizado para la síntesis de voz, es decir convertir de texto a voz.

#apt-get install links2 festival festival-dev

Instalaremos unos paquetes para poder usar la consola de asterisk de una forma mucho más optimizada.

#apt-get install ncurses-base ncurses-bin ncurses-term libncurses5 libncursesw5 libncurses5-dev libncursesw5-dev

Ahora instalaremos unas librerías de compresión para poder descomprimir archivos futuros que estén comprimidos.

#apt-get install zlib1g zlib1g-dev

Para instalar el servicio web de FreePBX instalaremos las siguientes dependencias:

#apt-get install -y build-essential openssh-server apache2 mysql-server mysql-client bison flex php5 php5-curl php5-cli php5-mysql php-pear php-db php5-gd curl sox libncurses5-dev libssl-dev libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git subversion unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev libspandsp-dev

Para instalar la ayuda de Asterisk, la extracción de archivos del CSV  instalaremos el siguiente paquete. El paquete Curl es un cliente para obtener archivos de servidores utilizando cualquiera de los protocolos compatibles, también utilizado para el uso de ‘POST’ en HTTP, reanudación de transferencias HTTP y más.

#apt-get install subversion curl doxygen

A continuación instalaremos el conjunto de paquetes MySQL, con ellos crearemos la base de datos para el CDR y el FreePBX.

#apt-get install mysql-client-5.5 mysql-server-5.5 libmysqlclient18 libmysqlclient-dev

Una vez llegado a este punto crearemos un directorio para almacenar los archivos fuente de Asterisk, para crear la carpeta ejecutamos el siguiente comando:

#mkdir ~/asterisk

DESCARGA DE LIBRERÍAS MEDIANTE WGET

Ahora procederemos con el proceso de descarga, nos vamos a ~/asterisk y comenzamos:

Descargamos dependencias para google voice:

#cd ~/asterisk
#wget https://iksemel.googlecode.com/files/iksemel-1.4.tar.gz

Descargamos los archivos fuente de asterisk

#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.15.tar.gz
#wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4.15-patch.gz
#wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-12-current.tar.gz

NOTA  

el archivo libpri-*-patch, es para parchear libpri en caso de que surja algún error con la compilación de la librería.

Nos movemos a src y descargamos jansson y pjproject

#cd /usr/src
#git clone https://github.com/akheron/jansson.git
#git clone https://github.com/asterisk/pjproject.git

Volvemos a la carpeta de asterisk en $home y descargamos los sonidos extra para asterisk

#cd ~/asterisk
#wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-es-wav-current.tar.gz
#wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-es-ulaw-current.tar.gz
#wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-es-g722-current.tar.gz
#wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-wav-current.tar.gz

Descargamos freepbx

#wget http://mirror.freepbx.org/freepbx-12.0.3.tgz

Las órdenes del fichero descargado, no cubren ningún comando más——————————————>

Reiniciamos el servidor:

#init 6

Ahora procederemos a utilizar PearDB, el cual es una librería de PHP que nos permitirá conectarnos a distintos tipos de base de datos (MySQL, PostgreSQL), para ello debemos ejecutar los siguientes comandos:

#pear uninstall db
#pear install db-1.7.14

DESCOMPRESIÓN, COMPILACIÓN E INSTALACIÓN

Ahora procederemos a descomprimir y compilar todos los paquetes descargados:

Compilamos e instalamos Iksemel, esta es una biblioteca XML de análisis diseñada para aplicaciones Jabber, es decir que actúan bajo el protocolo XMPP

#cd /usr/src
#tar xf ~/asterisk/iksemel-1.4.tar.gz
#cd iksemel-*
#./configure
#make
#make install

Compilamos e instalamos DAHDI(Digium/Asterisk Hardware Device), esta es una interfaz para todo el hardware Digium que se conecta con el sistema Asterisk.

#cd ..
#tar xvfz ~/asterisk/dahdi-linux-complete-current.tar.gz
#cd dahdi-linux-complete-*
#make all
#make install
#make config

Compilamos e instalamos LIBPRI, la cual 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.

#cd ..
#tar xvfz ~/asterisk/libpri-1.4.15.tar.gz
#cd libpri-*
#make
#make install

NOTA

En caso de que nos de el error: ‘[pridump.o] Error 1‘ debemos:

#mv ~/asterisk/libpri-1.4.13-patch.gz ./
#gunzip libpri-1.4.13-patch.gz
#patch -p0 < libpri-1.4.13-patch

Diremos que sí/yes a todo. Y recompilamos libpri

#make clean
#make
#make install

Compilamos e instalamos pjproject, este es librería multimedia de comunicación escrita en C, que implementa los protocolos estándar como: SIP, SDP, RTP, STUN, TURN, y ICE.

#cd ../pjproject
#./configure –enable-shared –disable-sound –disable-resample –disable-video –disable-opencore-amr
#make dep
#make
#make install

Compilamos e instalamos jansson, esta es una librería escrita en C para codificar y decodificar y manipular datos JSON.

#cd ../jansson
#autoreconf -i
#./configure
#make
#make install

Finalmente compilamos e instalamos Asterisk

#cd ..
#tar xvfz ~/asterisk/asterisk-12-current.tar.gz
#cd asterisk-*
#./configure
#contrib/scripts/get_mp3_source.sh

Después ejecutaremos la siguiente orden para poder añadir o eliminar algunos módulos, por ejemplo si queremos tener Soporte MP3 lo añadiremos en este menu (Add-ons → [*] FORMAT MP3), como veremos en el menú la mayoría de módulos vienen seleccionados por defecto, es por ello que lo mejor sería no quitar ningún módulo.

#make menuselect

Después de terminar la selección de módulos continuamos y ejecutamos:

#make
#make install
#make config

NOTA

Si surge un error en el paso anterior, lo corregiremos de la siguiente manera:

# apt-get purge locales
# aptitude install locales
# dpkg-reconfigure locales

Y seleccionaremos “en_US.UTF-8” y “es_ES.UTF-8” y por defecto es_ES

#ldconfig

A continuación procederemos a instalar los sonidos descargados, primeramente creamos la carpeta sounds y nos movemos a ella:

#mkdir /var/lib/asterisk/sounds && cd /var/lib/asterisk/sounds

Es posible que la carpeta ya exista. Si existe, entonces debemos continuar la descompresión de los siguientes tarballs allí mismo, es decir en la carpeta sounds.

#tar xfz ~/asterisk/asterisk-core-sounds-es-wav-current.tar.gz
#tar xfz ~/asterisk/asterisk-extra-sounds-en-wav-current.tar.gz
#tar xfz ~/asterisk/asterisk-core-sounds-es-g722-current.tar.gz
#tar xfz ~/asterisk/asterisk-core-sounds-es-ulaw-current.tar.gz

INSTALACIÓN Y CONFIGURACIÓN DE FREEPBX

Ahora instalaremos y configuraremos FreePBX

#cd /usr/src
#tar xzvf ~/asterisk/freepbx-12.0.3.tgz

A continuación creamos un usuario de nombre Asterisk y establecemos los permisos sobre las siguientes carpetas:

La opción -m del comando inicial crea un $HOME para el usuario en /home

#useradd -m asterisk
#chown asterisk. /var/run/asterisk
#chown -R asterisk. /etc/asterisk
#chown -R asterisk. /var/{lib,log,spool}/asterisk
#chown -R asterisk. /usr/lib/asterisk
#rm -rf /var/www/html

Editamos el archivo de apache y cambiamos el nombre del usuario y del grupo que vamos a utilizar, ya que por defecto traerá unos que no existirán.

#vi /etc/apache2/envvars

Buscamos:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

Ahora cambiamos por:

export APACHE_RUN_USER=asterisk
export APACHE_RUN_GROUP=asterisk

Ahora, pasaremos a la edición del fichero php.ini para aumentar el tamaño de archivos que se suben al servidor web y modificamos los siguientes valores:

#vi /etc/php5/apache2/php.ini

upload_max_filesize = 32M
max_execution_time = 120
max_input_time = 120

CONFIGURACIÓN DE MYSQL

Ahora crearemos la base de datos para el administrador web FreePBX y para los CDR. Accederemos a MySQL, y si no hemos puesto contraseña, entonces cuando se nos solicite la misma, pulsaremos enter, sin escribir nada. Si ya la hemos puesto entonces debemos escribirla, de todas maneras, de la siguiente forma podremos generar una nueva contraseña para el usuario root:

#mysql -u root -p

Puedes saltarte este paso si ROOT ya tiene password

mysql>show databases;
mysql>use mysql ;

Cambiamos los password de root en caso de que el usuario root de MySQL no tuviera password

mysql>UPDATE user
->SET password= PASSWORD(“password”)
->WHERE user = ‘root’;

Ahora crearemos las bases de datos:

mysql>CREATE DATABASE asteriskcdrdb;
mysql>CREATE DATABASE asterisk;

Le otorgamos todos los privilegios al usuario asterisk para todas las tablas de la base de datos asterisk y asteriskcdrdb y le damos una contraseña:

GENERACIÓN DE UNA CONTRASEÑA SEGURA

Antes que nada aquí haré un inciso. La contraseña tiene que ser preferiblemente lo más segura posible, si deseamos generar una contraseña segura entonces debemos hacer lo siguiente:

#export SECPASS=`dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 – | cut -c2-18`

El comando anterior crea una variable global la cual contiene  información aleatoria extraída de /dev/urandom, la cual es pasada a base64 para hacerla legible y así seleccionar 16 caracteres.

Después de haber ejecutado el comando anterior podemos llamar a la variable global, la cual contiene nuestra contraseña, de la siguiente forma:

#mysql -u root -e “GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asterisk@localhost IDENTIFIED BY ${SECPASS};”

ASIGNACIÓN DE PRIVILEGIOS

Si tenemos un protocolo de asignación de contraseñas propio y estamos en un entorno seguro y libre de ojos de ‘cibermalos’, entonces podemos continuar en el entorno de MySQL, y ejecutar:

mysql>GRANT ALL PRIVILEGES ON asterisk.* TO asterisk@localhost IDENTIFIED BY ‘tusuperpassword’;
mysql>GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asterisk@localhost IDENTIFIED BY ‘tusuperpassword’;
mysql>flush privileges;

Nótese que el comando de generación de contraseña segura y el de asignación de privilegios son ejecutados por BASH y no por MySQL

FINALIZACIÓN DE LA INSTALACIÓN

Finalmente reiniciamos Asterisk e Instalamos FreePBX con los siguientes comandos:

#cd /usr/src/freepbx/
#./start_asterisk start
#./install_amp –installdb –username=asterisk –password=password

Responderemos a todas las preguntas que se nos haga con los valores por defecto, o podremos cambiar los mas significativos si queremos, tales como el nombre de usuario para acceder a FreePBX y su contraseña.

#service asterisk restart
#amportal chown
#amportal a ma installall

NOTA

si surge un error instalando cxpanel, se deben realizar los siguientes pasos:

#amportal a ma download manager
#amportal a ma install manager

Después continuamos con la instalación

 

NOTA

Nos surgirá un error debido a que los ficheros de configuración de freePBX no se crean automáticamente, para ello haremos lo siguiente:

# cp /etc/asterisk/manager.conf /etc/asterisk/manager_custom.conf
# touch /etc/asterisk/manager_additional.conf

#amportal a reload
#amportal a ma refreshsignatures
#amportal chown

Para terminar realizamos un enlace simbólico y reiniciamos:

#ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3
#amportal restart

A continuación para comprobar la correcta instalación y funcionamiento, accedemos mediante una navegador web, o bien mediante nuestro Links2, a la siguiente dirección:

http://pon.la.direccion.ip.de.tu.server.pbx/admin

2 comentarios sobre “Instalación de Asterisk con FreePBX. Parte 0

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s