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. |
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
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:
Diremos que sí/yes a todo. Y recompilamos libpri
|
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:
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:
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 |
#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:
2 comentarios sobre “Instalación de Asterisk con FreePBX. Parte 0”