Receta casera para Asterisk 1.4 y FreePBX 2.3.1Asterisk es un PBX con características mucho muy avanzadas de lo que puede ser un Conmutador de Telefonía comercial, podría enmarcar algunas de sus características mencionadas en el sitio de Asterisk pero siempre es mejor probar personalmente lo que se comenta, por eso desde hace casi 3 años que fui conociendo este magnífico proyecto Open Source le he dedicado muchas horas conociéndolo poco mas y haciendo pruebas cada vez mas interensantes y haciendo solo 2 implementaciones en producción que han sido exitosas ya que por ahora mi giro esta enfocado a Desarrollo de Aplicaciones Moviles mas que a implementaciones de Telefonía IP.
Recuerdo la primera vez que lo instalé fué todo un show ya que solo contaba con linea telefónica en el depto pero no tenía internet de banda ancha, por lo que acudí a un cyber con mi lap para bajar los fuentes de Asterisk y comenzar con la instalación, esa vez me tardé mas de 20 horas en tener mi primer PBX casero, recuerdo incluso que el encargado del cyber es un informático que se interesó por Asterisk que ahora incluso ha creado más de un par de casetas teléfonicas usando Asterisk y sacándole provecho a la tecnología de Voz sobre IP. FreePBX es más que una Interfaz Web para configurar desde características básicas hasta propiedades muy avanzadas de Asterisk como IVR, Trunks, etc., al principio era difícil contar con una interfaz gráfica para Asterisk por lo que no había más opción que arreglárselas con Emacs y empezar a editar todo a mano, era entretenido equivocarse pero creo que como aprendizaje fué bueno aunque ahora a pesar de que a muchos implementadores les agrada todavía seguir configurando a mano varias cosas básicas de Asterisk a mi gusto es mejor hacerlo con FreePBX ahorrándose el trabajo fácil y algunas cosas que no las implemente FreePBX si darles el tiempo necesario para configurarlas a mano usando el nuevo método de configuración de Asterisk parecido a la programación de clases, aunque creo que FreePBX implementa muchas características necesarias para cualquier conmutador que pudiera ser utilizado en alguna empresa mediana pero otras cosas más avanzadas siempre existirá la posibilidad de hacerlas a manos desde la configuración de Asterisk. Puedes ver rápidamente información acerca de FreePBX y algunos ScreenShots de como luce FreePBX trabajando y para no aburrir más pongo un tutorial sobre la instalación de Asterisk paso a paso sobre Ubuntu Linux #Procedimiento para Instalar Asterisk VoIP en Ubuntu Server
# Linux Version : Ubuntu Server # Linux Kernel : 2.6.22 # Conmutador de VoIP : Asterisk V.1.4.13 # Admninistrador Web : FreePBX 2.3.1 # Particion de Ejemplo # /boot 100 MB # /var 4 GB # /home 6 GB # /usr 12 GB # / 6 GB # Swap 600 MB # Memoria RAM: 512 MB # CPU: Intel® Pentium® 4 CPU 3.06GHz # Ethernet: 10/100 VT6102 [Rhine-II] # FXO Card: 1 FXO Tiger Jet Network Inc. Tiger3XX Modem/ISDN interface # FXS card: # Sound: VT8233/A/8235/8237 AC97 Audio Controller # Bluetooth: # WiFi: # Other Devices: # ******************** # ******************** # ****** Primera Parte - Instalacion de Paquetes # ******************** # ******************** # Despues de instalar Ubuntu cambiar password a root sudo passwd root password #Editar /etc/apt/sources.list y activar los siguientes repositorios sudo editor /etc/apt/sources.list #descomentar y guardar deb http://us.archive.ubuntu.com/ubuntu/ dapper universe deb-src http://us.archive.ubuntu.com/ubuntu/ dapper universe # 1 Instalar librerias para acceso via SSH sudo apt-get install openssl libssl-dev ssh # 2 librerias de compilacion de software, sirve para compilar Asterisk sudo apt-get install gcc make g++ # 3 verificar que versiones de kernel tengo instalado en el servidor uname -a # me regresa algo como esto Linux MexRom 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 i686 GNU/Linux # 4 buscar las fuentes del kernel con las versiones instaladas en el server apt-cache search 2.6.22 # 5 instalamos los encabezados para 2.6.15 espec?ficos para el procesador (linux-headers-2.6.15-23-386 , linux-source-2.6.15 , linux-image-2.6.15-23-386) sudo apt-get install linux-headers-2.6.22-14-generic linux-image-2.6.22-14-generic linux-source-2.6.22 # 6 sinstalamos algunas utiler?as de linux, Lynx es un navegador web de texto, nmap es sniffer depuertos, emacs es un editor de textos potente aunque puedes usar editor instalado ya en Ubuntu y sencillo de usar sudo apt-get install nmap lynx emacs21 # 7 festival son paquetes para el manejo de voz sudo apt-get install festival festival-dev # 8 para poder usar la consola de asterisk sudo apt-get install ncurses-base ncurses-bin ncurses-term libncurses5 libncursesw5 libncurses5-dev libncursesw5-dev # 9 librerias de compresion sudo apt-get install zlib1g zlib1g-dev # 10 librerias requeridas por el servicio web de FreePBX sudo apt-get install bison bison-doc # 11 librerias requeridas por el servicio web de FreePBX sudo apt-get install libxml2 libxml2-dev # 12 librerias requeridas por el servicio web de FreePBX sudo apt-get install libtiff4 libtiff4-dev # 13 librerias requeridas por el servicio web de FreePBX sudo apt-get install libasound2 libgsm1 libltdl3 libpq4 libspeex1 libsqlite0 libtonezone1 libaudiofile0 libaudiofile-dev #en caso que se vaya a usar una tarjeta sangoma, se requiere instalar flex para que funcione con el driver wanpipe sudo apt-get install flex # 14 librerias requeridas por Asterisk para el manejo de ayuda y de extraccion de archivos del CVS sudo apt-get install subversion curl doxygen # 15 librerias requeridas por el servicio web de FreePBX sudo apt-get install libnet-telnet-perl mime-construct libipc-signal-perl libmime-types-perl libproc-waitstat-perl # 16 Servidor web para FreePBX sudo apt-get install apache2 # 17 librer?as requeridas por el servicio web de FreePBX sudo apt-get install php5 php5-cli php5-mysql php-pear libapache2-mod-php5 php5-curl php5-gd php-db # 18 base de datos para el CDR y FreePBX sudo apt-get install mysql-client-5.0 mysql-server-5.0 libmysqlclient15-dev # despues de instalar MySQL probablemente nos pedir? una configuracin como la siguiente Pedira un password de configuracion para el usuario root de mysql Configurar como Internet Site localhost.localdomain # ******************** # ******************** # ****** 2da Parte.. ****** # ******************** # ********************** # 19 creamos un repositorio local para almacenar los archivos fuente de asterisk mkdir ~/asterisk cd asterisk # Obtenemos los archivos y os almacenamos en el directorio creado # 20 gateway entre freepbx y asterisk wget http://www.cpan.org/modules/by-category/25_Bundles/Asterisk/asterisk-perl-0.10.tar.gz # 21 navaja suiza para manejo de archivos de sonido wget http://superb-east.dl.sourceforge.net/sourceforge/sox/sox-14.0.0.tar.gz wget http://easynews.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz # 22 Obtenemos los paquetes para el administrador web de FreePBX, podemos aqui instalar la version 2.2.1 de FreePBX la mas actualizada y seguir con el mismo procedimiento wget http://easynews.dl.sourceforge.net/sourceforge/amportal/freepbx-2.3.1.tar.gz # 23 Obtenemos los archivos para Asterisk wget http://downloads.digium.com/pub/asterisk/releases/asterisk-1.4.13.tar.gz wget http://downloads.digium.com/pub/zaptel/releases/zaptel-1.4.5.1.tar.gz wget http://downloads.digium.com/pub/libpri/releases/libpri-1.4.1.tar.gz wget http://downloads.digium.com/pub/asterisk/releases/asterisk-addons-1.4.4.tar.gz wget http://downloads.digium.com/pub/telephony/sounds/asterisk-core-sounds-en-ulaw-current.tar.gz wget http://downloads.digium.com/pub/telephony/sounds/asterisk-extra-sounds-en-ulaw-current.tar.gz wget http://downloads.digium.com/pub/telephony/sounds/asterisk-moh-freeplay-ulaw.tar.gz # Nos ubicamos en el directorio /usr/src cd /usr/src/ # 24 Instalamos el Editor de Sonidos de Asterisk sudo tar -xvzf ~/asterisk/lame-3.97.tar.gz cd lame-3.97 sudo ./configure --prefix=/usr --sysconfdir=/etc sudo make && sudo make install # 25 Instalamos SOX, utiler?a para manejar los sonidos en Asterisk cd /usr/src/ sudo tar -xzvf ~/asterisk/sox-14.0.0.tar.gz cd sox-14.0.0 sudo ./configure sudo make sudo make install # 26 Instalamos el gateway entre Asterisk y FreePBX cd /usr/src/ sudo tar -xzvf ~/asterisk/asterisk-perl-0.10.tar.gz cd asterisk-perl-0.10 sudo perl Makefile.PL sudo make all sudo make install # 27 Instalamos FreeBX el Administrador Web de Asterisk, aqui podemos tambien instalar la version 2.2.1 en vez de la 2.1.1 cd /usr/src sudo tar -xzvf ~/asterisk/freepbx-2.3.1.tar.gz cd /usr/src/freepbx-2.3.1 # Comenzamos a instalar la Base de Datos para el Administrador Web FreePBX y para los CDR. # Iniciacilizacion de la implementaci?n de Bases de Datos en Mysql para Asterisk # Accedemos a MySQL si no han configurado su password de root mysql, solo presionar Enter de lo contrario introducir el password mysql -u root -p ENTER show databases; use mysql ; # cambiamos los password de root en caso de que el usuario root de mysql no tuviera password update user set password = password("PaSsWoRd") where user = "root"; # Creamos el usuario para la base de datos del conmutador y del cdr grant all privileges on *.* to asterisk@localhost identified by "4st3r1sk"; flush privileges; exit # Nos validamos con el usuario de Asterisk creado mysql -u asterisk -p # Creamos las bases de datos dentro de la consola de mysql create database asteriskcdrdb; create database asterisk; exit # Pasamos el esquema y la informacion de los scripts de bases de datos por default de FreePBX mysql -u asterisk -p asterisk < /usr/src/freepbx-2.3.1/SQL/newinstall.sql mysql -u asterisk -p asteriskcdrdb < /usr/src/freepbx-2.3.1/SQL/cdr_mysql_table.sql # Termina la configuracion de Bases de Datos en Mysql para Asterisk # 28 creamos el usuario y grupo que manejara los procesos de asterisk, cambiamos su password y creamos el directorio de asterisk sudo groupadd asterisk sudo useradd -c "PBX asterisk" -d /var/lib/asterisk -g asterisk asterisk sudo passwd asterisk sudo mkdir /var/run/asterisk sudo chown asterisk:asterisk /var/run/asterisk # 29 Cambiamo el usuario propietario de Apache sudo emacs /etc/group # para guardar presionar ctrl+x ctrl+s, para salir ctr+x, ctr+c www-data:x:33:asterisk # ejecutamos el comando find para ubicar el archivo de configuracion de apache find /etc/apache2/ -type f | xargs grep Group # 30 editamos el archivo de apache sudo emacs /etc/apache2/apache2.conf #en emacs para buscar, presionar Ctrl+s e introducir un patron de busqueda en este caso por ejemplo www # 31 cambiar el usuario y grupo de www-data a asterisk User www-data Group www-data # cambiar por User asterisk Group asterisk # guardamos para guardar es presionar ctrl+x ctrl+s, para salir ctr+x, ctr+c # 32 cambiamos los permisos para el directorio de sesiones de PHP sudo chown -R asterisk /var/lib/php5 # 33 edicion de php para aumentar el tamano de archivos que se suben al servidor web y modificamos los siguientes valores sudo emacs /etc/php5/apache2/php.ini upload_max_filesize = 32M max_execution_time = 120 max_input_time = 120 # 34 creamos un directorio para la instalacion de los paquetes de Asterisk sudo mkdir /usr/src/asterisk cd /usr/src/asterisk # 35 libreria o drivers para tarjetas line PRI sudo tar zvxf ~/asterisk/libpri-1.4.1.tar.gz # 36 librerias o drivers para tarjetas ZAPTEL sudo tar zvxf ~/asterisk/zaptel-1.4.5.1.tar.gz # 37 El PBX Asterisk sudo tar zvxf ~/asterisk/asterisk-1.4.13.tar.gz # 38 utilerias de asterisk(cdr, rep music on hold. etc) sudo tar zvxf ~/asterisk/asterisk-addons-1.4.4.tar.gz # 39 archivos de IVR por default sudo mkdir asterisk-sounds cd asterisk-sounds sudo tar zvxf ~/asterisk/asterisk-core-sounds-en-ulaw-current.tar.gz sudo tar zvxf ~/asterisk/asterisk-extra-sounds-en-ulaw-current.tar.gz sudo tar zvxf ~/asterisk/asterisk-moh-freeplay-ulaw.tar.gz # 40 compilacion de PRI cd /usr/src/asterisk/libpri-1.4.1 sudo make & sudo make install # 41 compilacion de los drivers de Zaptel para el funcionamiento de la tarjeta FXO cd /usr/src/asterisk/zaptel-1.4.5.1 sudo make clean sudo make sudo make install sudo make config # 42 compilacion de Asterisk cd /usr/src/asterisk/asterisk-1.4.13 sudo make clean sudo ./configure sudo make sudo make install sudo make samples sudo make progdocs # 43 compilacion de Utilerias de Asterisk cd /usr/src/asterisk/asterisk-addons-1.4.4 sudo make sudo make install # 44 Copiamos todos los archivos de sonidos descomprimidos previamente al directorio por default de sonidos de asterisk sudo cp -rf /usr/src/asterisk/asterisk-sounds/* /var/lib/asterisk/sounds/ # 45 reiniciamos el servidor web apache sudo /etc/init.d/apache2 restart # 46 Editamos el archivo de configuracion de Asterisk sudo emacs /etc/asterisk/asterisk.conf # cambiamos el directorio de RUNASTERISK=/var/run # a RUNASTERISK=/var/run/asterisk # 47 asignamos los permisos sudo chown -R asterisk:asterisk /var/run/asterisk # 48 Iniciar Asterisk para poder hacer la instalacion de FreePBX sudo asterisk start # Verificar que Asterisk se haya inicido ps aux | grep asterisk root 14992 0.2 1.7 22044 7752 ? Ssl 07:14 0:00 asterisk start # continuamos con la instalacion de FreePBX cd /usr/src/freepbx-2.3.1/ # Instalamos los paquetes para gestion de bases de datos en PHP sudo pear install db # si no encontrara el paquete db, bajarlo de internet e instalarmo manualmente: sudo pear install db.17.0.0.tgz sudo mkdir /var/www/asterisk/ sudo mkdir /var/www/asterisk/cgi-bin sudo chown asterisk:asterisk /var/www/asterisk sudo ./install_amp # Despues de ejecutar install_amp pedira los valores para crear el archivo de configuracion. # En primer lugar introducir el usuario de la base de datos que se creo previamente [asteriskuser] asterisk # Introducir el password de l usuario de la base de datos para asterisk que se creo Enter your PASSWORD to connect to the 'asterisk' database: [amp109] 4st3r1sk #Introducir el nombre del servidor de la base de datos, si esta de forma local intoducir localhost de lo contrario introducir la IP o nombre de dominio del servidor de base de datos Enter the hostname of the 'asterisk' database: [localhost] localhost #Introducir el nombre de usuario del administrador que se usara como admin del AMI de Asterisk Enter a USERNAME to connect to the Asterisk Manager interface: [admin] asterisk # Password del usuario admin de AMI, importante para conectar aplicaciones terceras a Asterisk Enter a PASSWORD to connect to the Asterisk Manager interface: [amp111] 4st3.r1sk # Ruta de instalacion del Servidor de Asterisk Enter the path to use for your AMP web root: [/var/www/html] /var/www/asterisk #Dirección IP del servidor de Voz sobre IP Enter the IP ADDRESS or hostname used to access the AMP web-admin: [xx.xx.xx.xx] 192.168.1.2 # Password para poder operar FOP Enter a PASSWORD to perform call transfers with the Flash Operator Panel: [passw0rd] 4st3r1sk.01 #Solo teclear enter para aceptar la opcion por default Use simple Extensions [extensions] admin or separate Devices and Users [deviceanduser]? [extensions] #Solo teclear enter para aceptar la opcion por default Enter directory in which to store AMP executable scripts: [/var/lib/asterisk/bin] #Solo teclear enter para aceptar la opcion por default Enter directory in which to store super-user scripts: [/usr/local/sbin] # si marcara algun error el script de install_amp revisar usuarios de base de datos, librerias de php y de mysql, reiniciar apache y peardb, php-db # en caso de que tuviera un error al ejecutar FreePBX puede reconfigurarlo pero previamente eliminar el archivo de configuracion en /etc/amportal.conf # 49 creamos la carpeta donde se almacenaran los sonidos del IVR sudo mkdir /var/lib/asterisk/sounds/custom # 50 configuramos los permisos para el directorio de Asterisk sudo chown -R asterisk:asterisk /var/lib/asterisk/ # Paramos previamente la ejecucion de asterisk ps aux | grep asterisk root 14992 0.0 1.7 22524 7892 ? Ssl 07:14 0:00 asterisk start sudo kill -s 9 14992 #Editamos el archivo siguiente y agregamos una linea como la que se menciona sudo emacs /etc/default/asterisk RUNASTERISK=yes # 51 ejecutamos amportal sudo amportal start # verificamos que se haya ejecutado correctamente amportal sudo ps aux | grep asterisk # y deberiamos ver algo parecido root 15759 0.0 0.1 3864 736 pts/2 S 07:30 0:00 /bin/bash/usr/sbin/safe_asterisk -U asterisk -G asterisk asterisk 15764 2.0 1.9 22436 8552 pts/2 Sl 07:30 0:00 /usr/sbin/asterisk -f -Uasterisk -G asterisk -vvvg -c asterisk 15811 0.0 0.1 1752 496 pts/2 S 07:30 0:00 sh/var/www/asterisk/panel/safe_opserver asterisk 15812 14.0 1.8 11072 8340 pts/2 S 07:30 0:00 /usr/bin/perl -w/var/www/asterisk/panel/op_server.pl # 52 Abrir en un navegador de preferencia Firefox la direccion del servidor Asterisk por ejemplo que el servidor corra en una IP 192.168.1.2 http://192.168.1.2/asterisk/admin/ # Por default no nos pedira un password, pero hay que ir a administradores y cambiar el nombre de usuario y password del administrador # Nos desconectamos del servidor web de FreePBX # 53 Posteriormente editamos el archivo amportal.conf y cambiamos el valor de AUTHTYPE a database sudo emacs /etc/amportal.conf AUTHTYPE=database # 54 Volvemos a entrar al servidor de FreePBX y ahora nos pedira un login y password, introducir los configurados login:admin password:4st3r1sk #Ahora tenemos habilitado El conmutador de Voz Sobre IP Asterisk #Y el administrador Web de Asterisk FreePBX. # 55 Ir a la opcion de "Module Admin", seleccionar Check Update Online y descargar modulos de administracion de Asterisk necesarios, se requiere conexion a internet # 56 Si no estuviera habilitado el Panel, ir al directorio de instalacion de freepbx, copiar los archivos al directorio web, cambiar permisos, reiniciar freepbx cd /usr/src/freepbx-2.3.1 sudo cp -rf amp_conf/htdocs_panel/* /var/www/asterisk/panel sudo chown asterisk.asterisk /var/www/asterisk/ Puedes consultar la versión en ingles de la instalación de Asterisk sobre Ubuntu Server en la siguiente URL: http://phylevn.mexrom.net/index.php?page/Install_Asterisk_And_FreePBX_In_Ubuntu_Linux |