Virtualización, Linux y soluciones Open Source
Hola, después de mucho tiempo sin escribir en el blog, reaparezco con un tutorial paso a paso. En esta ocasión vamos a trastear un poco con Asterisk.
Asterisk es un backend VOIP open source, ampliamente usado en todo el mundo. Nos sorprendería la cantidad de appliances que se venden que ocultan en su interior un Asterisk. Se trata de un software que funciona bajo un sistema Linux, y no requiere de licencias de ningún tipo (ni de Sistema Operativo, a no ser que se use SLES o RedHat Enterprise…).
Existen multitud de distribuciones Linux preparadas con Asterisk, entre ellas destaco 3:
El problema común de todas ellas es que no usan la versión Asterisk 1.8, las dos primeras están muy encaradas a las versiones de pago, con lo que la ayuda no abunda mucho en sus respectivos foros. La que más me ha gustado ha sido Elastix, de hecho ha sido xon la que más he podido jugar. ¿El problema? Pues que estas distros llevan demasiadas cosas: Que si agenda, que si servidor de correo, un CRM pre-instalado (vtiger, muy bueno, os lo recomiendo), servidor de Fax, un sistema de mensajería interno llamado Openfire… Demasiados componentes, la verdad.
Yo necesito un servidor Asterisk cuanto más pequeño y menos componentes mejor, basado en un sistema estable, y si puede ser con las últimas versiones de Asterisk, pues mejor que mejor!! Además de poderle instalar las Tools de VMware sin complicaciones.
Objetivo:
Vamos allá:
Creamos una nueva máquina virtual en nuestra infraestructura (qué cómodo….), la he aprovisionado con 1 tarjeta de red, 20 GB de disco duro (Thin provisioning), 1vCPU y 1GB de ram.
Comenzamos con la instalación, para ello usamos la ISO de Debian mínima (que realiza una instalación desde Internet, así que necesitaremos que la máquina virtual adquiera IP y tenga acceso a Internet). Seleccionaremos la instalación normal, no gráfica (la de los frikis!!!)
Seleccionamos el idioma de la instalación, se configura la red (en principio si tenemos un servidor DHCP en la red, podremos realizar la instalación, después ya configuraremos correctamente la red, por esto no os preocupéis), pondremos un nombre a la máquina y un nombre de dominio (opcionalmente). Nos pedirá una clave del super-usuario (root), y nos pedirá los datos de un usuario “normal” sin privilegios, es necesario crear uno… Ubicación de la zona horaria, y nos vamos al particionado, he usado el particionado Manual, y usado el siguiente esquema:
La explicación:
A continuación configuramos los repositorios, elegiremos los servidores de Estados Unidos, que suelen ir mejor que los de aquí. Recargará la información de los repositorios, y podremos elegir los paquetes del sistema que vamos a instalar:
Sólo seleccionamos:
Sólo eso!! El resto ya lo instalaremos luego manualmente. Ahora se instalará el sistema, descargando los paquetes necesarios desde Internet. Al finalizar nos preguntará si deseamos instalar GRUB en el registro MBR, aceptamos y reiniciamos.
Al arrancar la VM por primera vez veremos esto:
Nos logearemos como root, y veremos la IP que tenemos asignada, así podremos acceder por ssh y continuar el proceso de manera más cómoda (desde nuestra consola podremos copiar y pegar texto, el cursor irá más rápido, etc…)
Una vez obtenida la IP, ya podemos cerrar la consola de nuestra máquina virtual y continuar desde un terminal (si trabajamos en Linux, o desde un programita tipo Putty si estamos en Windows)
$ ssh -lroot 10.10.1.113
The authenticity of host ’10.10.1.113 (10.10.1.113)’ can’t be established.
RSA key fingerprint is 73:d4:65:52:28:91:3d:c3:26:5c:2f:c5:b4:b1:3e:7f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ’10.10.1.113′ (RSA) to the list of known hosts.
root@10.10.1.113′s password:
Una vez dentro del sistema comprobaremos el espacio libre en disco:
root@asterisk:~# df -h
S.ficheros Size Used Avail Use% Montado en
/dev/sda1 9,2G 603M 8,2G 7% /
tmpfs 500M 0 500M 0% /lib/init/rw
udev 495M 104K 495M 1% /dev
tmpfs 500M 0 500M 0% /dev/shm
/dev/sda4 6,4G 143M 6,0G 3% /home
/dev/sda2 3,7G 190M 3,3G 6% /var
Y la memoria RAM usada:
root@asterisk:~# free -m
total used free shared buffers cached
Mem: 999 60 939 0 5 21
-/+ buffers/cache: 32 966
Swap: 476 0 476
Perfecto, usamos más o menos 1 GB de disco y unos 60 MB de RAM, nada mal. No olvidemos que uno de nuestros objetivos es que la máquina tiene que ser lo más pequeña posible.
Instalamos los pre-requisitos:
root@asterisk:~# apt-get update
root@asterisk:~# apt-get upgrade
Para compilar e instalar Asterisk necesitaremos:
root@asterisk:~# apt-get install build-essential linux-headers-`uname -r` libncurses5-dev libssl-dev libxml2-dev gawk sudo
Para instalar y usar FreePBX necesitaremos:
root@asterisk:~/asterisk_src# apt-get install apache2 php5 php5-mysql php-db mysql-server libapache2-mod-php5 php5-gd php-pear sox curl
Nos pedirá que introduzcamos contraseña de root para mysql server. Recordaremos esta contraseña, la necesitaremos más tarde al re-configurar mysql para configurar las bases de datos necesarias para FreePBX.
root@asterisk:~/asterisk_src# pear install DB
Descargamos las fuentes de Asterisk y FreePBX:
root@asterisk:~# cd /root/
root@asterisk:~# mkdir asterisk_src
root@asterisk:~# cd asterisk_src/
root@asterisk:~/asterisk_src# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.8.7.1.tar.gz
root@asterisk:~/asterisk_src# wget http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.12.tar.gz
root@asterisk:~/asterisk_src# wget http://downloads.asterisk.org/pub/telephony/libss7/releases/libss7-1.0.2.tar.gz
root@asterisk:~/asterisk_src# wget http://mirror.freepbx.org/freepbx-2.9.0.tar.gz
Veamos lo que tenemos:
root@asterisk:~/asterisk_src# ls -alh
total 50M
drwxr-xr-x 2 root root 4,0K oct 29 20:13 .
drwx—— 4 root root 4,0K oct 29 20:10 ..
-rw-r–r– 1 root root 28M oct 17 20:17 asterisk-1.8.7.1.tar.gz
-rw-r–r– 1 root root 22M jun 12 18:09 freepbx-2.9.0.tar.gz
-rw-r–r– 1 root root 332K jul 6 18:46 libpri-1.4.12.tar.gz
-rw-r–r– 1 root root 60K oct 28 2008 libss7-1.0.2.tar.gz
Comenzamos descomprimiendo todo:
root@asterisk:~/asterisk_src# tar -xzvf asterisk-1.8.7.1.tar.gz
root@asterisk:~/asterisk_src# tar -xzvf freepbx-2.9.0.tar.gz
root@asterisk:~/asterisk_src# tar -xzvf libpri-1.4.12.tar.gz
root@asterisk:~/asterisk_src# tar -xzvf libss7-1.0.2.tar.gz
Ejecutaremos los siguientes scripts de Asterisk, los cuales arrastrarán la instalación de todas las dependencias del sistema requeridas:
root@asterisk:~/asterisk_src# asterisk-1.8.7.1/contrib/scripts/install_prereq install
(Cuando nos pregunten por el código de la región, en la configuración del paquete libvpb0, elegiremos 34 si estamos en España)
root@asterisk:~/asterisk_src# asterisk-1.8.7.1/contrib/scripts/install_prereq install-unpackaged
El orden de instalación será:
>libPRI
>libSS7
>Asterisk
>FreePBX
libPRI: Provee de interconexión con redes E1, T1 y otros protocolos
root@asterisk:~/asterisk_src# cd libpri-1.4.12/
root@asterisk:~/asterisk_src/libpri-1.4.12# make
root@asterisk:~/asterisk_src/libpri-1.4.12# make install
root@asterisk:~/asterisk_src/libpri-1.4.12# cd ..
libSS7: Es una dependencia de Asterisk, así que la instalamos.
root@asterisk:~/asterisk_src# cd libss7-1.0.2/
root@asterisk:~/asterisk_src/libss7-1.0.2# make
root@asterisk:~/asterisk_src/libss7-1.0.2# make install
root@asterisk:~/asterisk_src/libss7-1.0.2# cd ..
Asterisk: no hace falta decir más…
root@asterisk:~/asterisk_src# cd asterisk-1.8.7.1/
root@asterisk:~/asterisk_src/asterisk-1.8.7.1# ./configureroot@asterisk:~/asterisk_src/asterisk-1.8.7.1# contrib/scripts/get_mp3_source.sh
root@asterisk:~/asterisk_src/asterisk-1.8.7.1# make menuconfig
Se abrirá la ventana de selección de componentes. Seleccionaremos app_mysql, app_saycountpl, cdr_mysql, format_mp3, y res_config_mysql en la sección Add-ons:
En la sección Core Sound Packages, seleccionaremos CORE-SOUNDS-ES-WAV, y también CORE-SOUNDS-EN-WAV
El resto de opciones las dejaremos tal cual, y le daremos a “Save & Exit”.
El siguiente paso tardará dependiendo de la velocidad de la vCPU…
root@asterisk:~/asterisk_src/asterisk-1.8.7.1# make
root@asterisk:~/asterisk_src/asterisk-1.8.7.1# make install
root@asterisk:~/asterisk_src/asterisk-1.8.7.1# make configroot@asterisk:~/asterisk_src/asterisk-1.8.7.1# cd ..
Con esto ya tenemos Asterisk instalado. Deberemos realizar unos cambios, y poner en marcha asterisk antes de realizar el último paso (instalar freePBX)
root@asterisk:~/asterisk_src# groupadd asterisk
root@asterisk:~/asterisk_src# useradd -c “asterisk PBX” -d /var/lib/asterisk -g asterisk asteriskroot@asterisk:~/asterisk_src# chown asterisk. /var/run/asterisk
root@asterisk:~/asterisk_src# chown -R asterisk. /etc/asterisk
root@asterisk:~/asterisk_src# chown -R asterisk. /var/{lib,log,spool}/asterisk
root@asterisk:~/asterisk_src# chown -R asterisk. /var/www/
root@asterisk:~/asterisk_src# /etc/init.d/asterisk start
Llegamos al último paso:
FreePBX: Es un Frontend WEB de configuración para Asterisk. Necesita una base de datos mysql y un servidor Web con PHP, usaremos Apache2 y php5.
Primero preparamos el servidor mysql:
root@asterisk:~/asterisk_src# /etc/init.d/mysql stop
root@asterisk:~/asterisk_src# /usr/bin/mysql_install_db
root@asterisk:~/asterisk_src# /etc/init.d/mysql start
root@asterisk:~/asterisk_src# mysqladmin create asteriskcdrdb -p
root@asterisk:~/asterisk_src# mysql –user=root -p asteriskcdrdb < freepbx-2.9.0/SQL/cdr_mysql_table.sql
root@asterisk:~/asterisk_src# mysqladmin create asterisk -p
root@asterisk:~/asterisk_src# mysql –user=root -p asterisk < freepbx-2.9.0/SQL/newinstall.sql
root@asterisk:~/asterisk_src# mysql –user root -pmysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY ‘amp109′;
mysql> GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY ‘amp109′;mysql> quit
Además, estableceremos la dirección IP con la que el servidor se va a quedar, así podremos configurar más tarde el panel Flash del FreePBX, para ello editaremos /etc/network/interfaces
Ya tenemos preparado el entorno para ejecutar la instalación de FreePBX, vamos allá:
root@asterisk:~/asterisk_src# cd freepbx-2.9.0/
root@asterisk:~/asterisk_src/freepbx-2.9.0# ./install_amp
La configuración la dejaremos por defecto toda excepto la ruta raíz del servidor apache, que será /var/www en vez de /var/www/html-
root@asterisk:~/asterisk_src/freepbx-2.9.0# amportal stop
root@asterisk:~/asterisk_src/freepbx-2.9.0# /etc/init.d/apache2 stop
Ahora deberemos modificar la configuración de Apache, para ajustar parámetros de PHP y para que apache2 se ejecute como el usuario asterisk.
root@asterisk:~/asterisk_src/freepbx-2.9.0# vim.tiny /etc/apache2/envvars
Modificamos las líneas:
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
Por:
export APACHE_RUN_USER=asterisk
export APACHE_RUN_GROUP=asterisk
Cambiamos la configuración de PHP en estos dos archivos:
root@asterisk:~/asterisk_src/freepbx-2.9.0# vim.tiny /etc/php5/apache2/php.ini
root@asterisk:~/asterisk_src/freepbx-2.9.0# vim.tiny /etc/php5/cli/php.ini
Cambiamos:
upload_max_filesize = 2M
Por:
upload_max_filesize = 20M
Por fin, podremos poner en marcha todo:
root@asterisk:~/asterisk_src/freepbx-2.9.0# /etc/init.d/apache2 start
root@asterisk:~/asterisk_src/freepbx-2.9.0# amportal start
Entraremos en un navegador WEB,e iremos a la dirección IP de nuestro servidor Asterisk. Deberíamos ver esto:
Podremos entrar en el “FreePBX Administration” con el usuario “admin” y contraseña “admin”
IMPORTANTE:
Si deseamos cambiar cualquier parámetro del amportal (FreePBX), podremos borrar el archivo /etc/amportal.conf, y volver a ejecutar el instalador de FreePBX (./install_amp). Por ejemplo, si dejamos todas las opciones por defecto, el panel Flash no funcionará porque la variable:
AMPWEBADDRESS=xx.xx.xx.xx
No apunta a la IP del servidor Asterisk. Re-ejecutando el instalador, podremos establecer correctamente este valor.
(edito: Yo no conseguía entrar en el Panel Flash, incluso borrando amportal.conf y re-instalando amportal, al final he solucionado el problema editando /etc/amportal.conf directamente y estableciendo la dirección IP para la variable AMPWEBADDRESS aunque en la cabecera del archivo indicaba que NO se editara el archivo.)
Pego la configuración que yo he usado:
Enter your USERNAME to connect to the ‘asterisk’ database:
[asteriskuser]
Enter your PASSWORD to connect to the ‘asterisk’ database:
[amp109]
Enter the hostname of the ‘asterisk’ database:
[localhost]
Enter a USERNAME to connect to the Asterisk Manager interface:
[admin]
Enter a PASSWORD to connect to the Asterisk Manager interface:
[amp111]
Enter the path to use for your AMP web root:
[/var/www/html]
/var/www
Enter the IP ADDRESS or hostname used to access the AMP web-admin:
[xx.xx.xx.xx] 10.10.1.113
Enter a PASSWORD to perform call transfers with the Flash Operator Panel:
[passw0rd]
Use simple Extensions [extensions] admin or separate Devices and Users [deviceanduser]?
[extensions]
Enter directory in which to store AMP executable scripts:
[/var/lib/asterisk/bin]
Enter directory in which to store super-user scripts:
[/usr/local/sbin]
Vamos a limpiar el sistema, reiniciarlo, y comprobaremos que todo funciona correctamente. Además de comprobar el espacio usado en disco y en RAM.
root@asterisk:~# rm /var/cache/apt/archives/*.deb
root@asterisk:~# reboot
Y al reiniciar, comprobamos que funciona el panel FreePBX. Veamos el espacio usado en disco y en RAM:
root@asterisk:~# df -h
S.ficheros Size Used Avail Use% Montado en
/dev/sda1 9,2G 1,8G 7,0G 20% /
tmpfs 500M 0 500M 0% /lib/init/rw
udev 495M 100K 495M 1% /dev
tmpfs 500M 0 500M 0% /dev/shm
/dev/sda4 6,4G 143M 6,0G 3% /home
/dev/sda2 3,7G 321M 3,2G 10% /var
root@asterisk:~# free -m
total used free shared buffers cached
Mem: 999 306 692 0 14 173
-/+ buffers/cache: 119 880
Swap: 476 0 476
No está nada mal, en menos de 2 GB y usando 300 MB de RAM tenemos nuestro asterisk en marcha, con su panel FreePBX corriendo.
En la próxima entrega veremos cómo configurar la troncal, las extensiones, rutas entrantes y salientes.
Kernelia es una empresa consultora de sistemas informáticos que ofrece soluciones de virtualización de servidores, virtualización de escritorios, virtualización de aplicaciones, servicios TI basados en soluciones open source, mantenimiento y administración de sistemas y centros de datos, que ofrece servicios a otras empresas en el campo de la Informática Corporativa.
Nuestro principal activo es el equipo humano, formado por profesionales de gran valor y especialización, con amplios conocimientos y experiencia, con un alto sentido de servicio al cliente, del compromiso, de la colaboración y de la mejora constante e identificado con la visión de la empresa.
Deja un comentario.