Instalación de Asterisk y FreePBX en Ubuntu / Debian

Marzo 6th, 2010

Esta es una traducción de la guía que publiqué en distintos medios para instalar Asterisk en Debian / Ubuntu.

Estos procedimientos fueron probados en Hardy Heron, Intrepid Ibex, Jaunty Jackalope (un paso agregado al final), Karmic Koala y en Debian Lenny.

Antes de instalar, cosas para tener listas

Instalar el servidor con el método de preferencia. Se puede marcar LAMP cuando se instalen los paquetes. Esto agrega al Linux el Apache, MySQL y PHP. Entramos al servidor y nos cambiamos al super-usuario

sudo su

Para estar seguros acerca de MySQL y PHP hacer esto

apt-get install php5-mysql libapache2-mod-php5 mysql-server

Puede que haga falta configurar apache apropiadamente, o al menos asegurarse de que el php5 está habilitado. En Intrepid Ibex, Jaunty o Krmic esto no hace falta:

a2enmod php5

Para que funcione la localización editar /etc/php5/apache2/php.ini and modify as follow (leny/sid):

; PHP's built-in default is text/html
default_mimetype = "text/html"
;default_charset = "ISO-8859-1"
default_charset = "utf8"

La última línea fuerza la página de caractéres en utf8 para las páginas php  (sobreescribe la página de caracteres del apache).

De http://www.freepbx.org/trac/wiki/UbuntuServer

Tuve problemas con otros sitios php i18n php y esta modificación funcionó para ellos

Otros elementos de configuiración que deberías cambiar en el archivo Php.ini para hacer feliz al FreePBX.

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 100M      ; Maximum amount of memory a script may consume (16MB)

Instalar Asterisk

apt-get install asterisk asterisk-mysql asterisk-mp3 php-db php5-gd php-pear sox curl

No hay razón para instalar zaptel en kernels 2.6 o superiores porque el dispositivo de timing lo provee el kernel a menos que, por supuesto estemos usando una placa que lo requiera. Ztdummy ya no es necesario.

En Karmic se instalará la versión 1.6 de Asterisk, en las demás la versión 1.4.

Yo instalé además estos sonidos y avisos en español

apt-get install asterisk-prompt-es asterisk-sounds-extra

Hay dos aproximaciones para resolver el problema de los permisos, uno es agregar el grupo asterisk al usuario www-data que es el usuario por defecto del apache.

1. Mantener el usuario as www-data

adduser www-data asterisk

De esta forma, FreePBX da un error copiando /usr/share/asterisk/bin/agi-bin. Cambiamos el dueño del archivo de esta forma

chown www-data.asterisk -R /usr/share/asterisk

Después de instalar FreePBX hace falta cambiar el usuario en amportal.conf. Esto está en la sección “Instalación de FreePBX”.

Salteamos a la sección 3.

2. Cambiar el apache para que funcione con el usuario asterisk. Esta solución es la más fácil si en este servidor sólo tendremos funcionando el Asterisk.

Editar el archivo /etc/apache2/envvars y cambiar el usuario a asterisk.

#export APACHE_RUN_USER=www-data
#export APACHE_RUN_GROUP=www-data
export APACHE_RUN_USER=asterisk
export APACHE_RUN_GROUP=asterisk

Si uno cambia del método 1 al 2, quedan archivos a nombre de un usuario distinto y pueden aparecer erroes. Se puede borrar los archivos de la sesión en /var/lib/php5 o cambiar el dueño de los archivos a asterisk.

3. Reiniciar el Apache

apache2ctl graceful

Para hacer que se inicie el servidor FOP, cambié el shell por defecto para el usuario asterisk que estaba puesto en false:

usermod -s /bin/bash asterisk

Por lo que entendí, el shell predeterminado para los deribados Debian es el Dash, y para toda esta implementación se espera el Bash como shell.

En /usr/sbin/safe_asterisk cambié la variable BACKGROUND que estaba en 0 a 1.


Instalación de FreePBX

Bajar el FreePBX de http://www.freepbx.org

cd /tmp
wget http://mirror.freepbx.org/freepbx-2.5.1.tar.gz
cd /usr/src
tar xvfz /tmp/freepbx-2.5.1.tar.gz
cd freepbx-2.5.1

Lo probé también con la versión 2.6 sin problemas, me falta el 2.7 que recién salió.

Preparar la base de datos. Si tu instalación tiene clave de root para el mysql, como lo pide cuando se instala, entonces tendrás que agregar la opción ‘-p’ en todos los comandos que empiezan con mysql. Por ejemplo, el primer comando sería “mysqladmin create asterisk -p”. Cuando lo pide, poner la contraseña adecuada:

mysqladmin create asterisk
mysqladmin create asteriskcdrdb
mysql asterisk < SQL/newinstall.sql
mysql asteriskcdrdb < SQL/cdr_mysql_table.sql

mysql

GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';
flush privileges;
quit

MUY IMPORTANTE ANTES DE INSTALAR FREEPBX: Hacer una copia de /etc/asterisk/modules.conf.  El FreePBX reescribe el archivo y estropea la instalación de Asterisk. Al reiniciar el Asterisk después de instalar el FreePBX, el Asterisk se cierra sin ningún mensaje.

cp /etc/asterisk/modules.conf ~/asterisk-modules.conf

Comenzar la instalación de freepbx:

./install_amp

Pongo la lista de preguntas para contestar, lo demás puede quedar con sus valores por defecto

AMPWEBROOT=/var/www/freepbx

OJO: Si ponemos FreePBX en un subdirectorio, el panel puede no funcionar correctamente en las páginas administrativas. Subí el error en FreePBX y lo corrigieron, pero no me acuerdo en qué versión.

Hay dos formas de hacerlo andar

1. Arreglar el error

Tocar el archivo /var/www/freepbx/admin/views/panel.php

// where it reads
//       '<iframe width="97%" height="600" frameborder="0" align="top" src="../../panel/index_amp.php?context='.$deptname.'"></iframe>'.
// you should erase one step back in the uri, as it shows here
         '<iframe width="97%" height="600" frameborder="0" align="top" src="../panel/index_amp.php?context='.$deptname.'"></iframe>'.

Vamos al paso 3.

2. Crear un servidor virtual y acceder a la instalación desde otra dirección http://freepbx

Si tienes acceso al dns, o al archivo hosts de tu computadora puedes agregar una entrada para identificar a tu servidor en el Apache. Editar el archivo /etc/apache2/sites-available/freepbx y poner esto.

################# Named VirtualHosts
<VirtualHost *:80>

    ServerName freepbx
    ServerAlias freepbx

    ServerAdmin yourname@yourdomain.com
    ErrorLog /var/log/apache2/freepbx.error.log
    CustomLog /var/log/apache2/freepbx.access.log combined

    DocumentRoot /var/www/freepbx
    <Directory /var/www/freepbx>
        Options Indexes FollowSymLinks MultiViews
        Order allow,deny
        AllowOverride All
        Allow from all
    </Directory>

    <Directory /var/www/freepbx/admin>
        AuthType Basic
        AuthName "Restricted Area"
        AuthUserFile freepbx-passwd
        Require user admin
    </Directory>

</VirtualHost>

##################################################################

Hacemos un vínculo simbólico (bah, un symlink) para que esté disponible

ln -s /etc/apache2/sites-available/freepbx /etc/apache2/sites-enabled/099-freepbx

y agregamos un archivo de accesos si lo deseamos

htpasswd -c /etc/apache2/freepbx-passwd admin

3. Reiniciamos el Apache

/etc/init.d/apache2 restart

Ahora recuperamos la copia de seguridad que hicimos de modules.conf

cp ~/asterisk-modules.conf /etc/asterisk/modules.conf

Si se nos ha olvidado hacer una copia de seguridad, podemos acudir a /var/cache/apt y buscamos por ahí el archivo que viene en el paquete. O también podemos deshabilitar las librerías que impiden que el asterisk funcione. Para deshabilitar una librería podemos agregar estas líneas en /etc/asterisk/modules.conf antes de la directiva global.

noload =>app_directory.so
noload =>res_adsi.so

La directiva autoload cargará automáticamente cualquier cosa que esté en el directorio de las librerías (/usr/lib/asterisk/modules) descontando las que figuren expresamente para no ser cargadas. En Ubuntu Hardy Heron, también debemos deshabilitar

noload => app_voicemail_imap.so
noload => app_voicemail_odbc.so

De http://www.voip-info.org/wiki/view/Asterisk+modules

app_directory.so => (Extension Directory)<BR> res_adsi.so: Resource for ADSI applications. See http://www.voip-info.org/wiki/view/ADSI

Si mantuvimos al Apache corriendo como www-data agregamos estas líneas al final de /etc/amportal.conf

AMPASTERISKUSER=www-data
AMPASTERISKWEBUSER=www-data
AMPASTERISKGROUP=asterisk

Para iniciar todo esto al final de todo, agregamos estas líneas en /etc/rc.local antes del exit 0.

/usr/local/sbin/amportal start
exit 0

Opcional: Asterisk se inicia por su cuenta después de la instalación por paquetes. Si deseas correr el Asterisk bajo safe_asterisk y administrado por amportal, deshabilita el asterisk de esta manera

update-rc.d -f asterisk remove

Agregamos un symlink y cambiamos los permisos para hacer que las grabaciones del sistema estén disponibles para los IVRs, o preatendedores y menúes.

ln -s /var/lib/asterisk/sounds/custom /usr/local/share/asterisk/sounds/
chown -R asterisk:asterisk /usr/local/share/asterisk/
chmod -R 755 /usr/local/share/asterisk/

/usr/share/asterisk y subdirectorios deben pertenecer por el usuario y el grupo asterisk o aparecen errores en el FreePBX acerca de permisos en el abi-bin. Podemos verificar los permisos

$ ls -l /usr/share | grep asterisk
drwxr-xr-x   8 asterisk asterisk 4096 2009-02-11 22:59 asterisk

Si no aparece como arriba, se arreglan así

$ sudo chown -R asterisk:asterisk /usr/share/asterisk

Si usas Ubuntu 9.04 (Jaunty Jackalope) o Karmic Koala necesitarás agregar las siguientes líneas en /etc/apache2/httpd.conf:

DocumentRoot /var/www

y reiniciar apache

apache2ctl restart

Podemos encontrar la interfaz del servidor en http://ip-del-servidor/freepbx.

Para la versión 1.6 de Asterisk hay que revisar el archivo /etc/asterisk/manager.conf o crear un archivo en /etc/asterisk/manager.d/admin.conf y revisar que los permisos de escritura y lectura están completos para el usuario admin

read =  system,call,log,verbose,command,agent,user,config,originate,read,write
write = system,call,log,verbose,command,agent,user,config,originate,read,write

Las versiones en inglés las publiqué en Ubuntu y en FreePBX

https://wiki.edubuntu.org/installingFreepbx

http://www.freepbx.org/trac/wiki/UbuntuServerIntrepid

También lo puse en los foros

http://ubuntu-ky.ubuntuforums.org/showthread.php?p=8298193

Steliosv agregó unas líneas de configuración para el Asterisk 1.6 que copio abajo, voy a agregarlas en las páginas anteriores.

Re: Installing FreePBX on Intrepid Ibex

since i was greatly helped by this post i thought i’d add that if you upgrade to asterisk 1.6 you need to create a new anything.conf file in order for freepbx (2.5.x) to work. i created the file /etc/asterisk/manager.d/admin.conf with the contents

[admin]
secret = password
read = system,call,log,verbose,command,agent,user,config, originate,read,write
write = system,call,log,verbose,command,agent,user,config, originate,read,write

for googling reference this fixes the error in

/var/log/asterisk/messages

manager.c: 127.0.0.1 tried to authenticate with nonexistent user ‘admin’

and

manager.c: 127.0.0.1 failed to authenticate as ‘admin’

and then this following link helped me figure the problem out.

http://www.n3ncy.com/UNIX/Debian/Asterisk-1.6x.htm

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Ubuntu Netbook Remix

Marzo 2nd, 2010

Mi suegra adorada tiene una netbook Asus EeePc 900. Cada tanto venía con su computadora en la mano con el mismo diagnóstico: no se conecta a la red wi-fi. No era un problema técnico, la computadora no tenía ningún problema: simplemente el administrador de redes que viene con esa versión de Xandros es bastante incómodo y muy poco intuitivo. Botón derecho, lista de redes, conección, conectar. A pesar de que la red estaba guardada no la retoma automáticamente cuando aparece disponible. Continue reading »

Escritorio Perfecto

Febrero 26th, 2010

Es un tema que vuelve siempre. Intensos debates. Que le pongo esto, que le saco aquello. Todos los sistemas operativos han tratado de redefinir el bendito escritorio, y francamente, NO ME GUSTA NINGUNO.

Qué es el escritorio:

  • Un lugar para ver la aplicación que uno está manejando,
  • tener y acceder a otras aplicaciones que uno también maneja,
  • tener una idea de qué cosas UNO está haciendo,
  • tener una idea de qué cosas LA COMPUTADORA está haciendo o necesita hacer,
  • tener un área para ver qué OTRAS cosas están sucediendo,
  • y tener un mecanismo para poder integrar todas estas cosas para que -de algún modo- trabajen juntas.

Todo esto tiene que poder verse al mismo tiempo, un poco antes o un poco después, en una zona o en otra, de a cachos o todo junto. No es NADA fácil hacer un escritorio que deje contentos a todos y por eso les paso a contar lo que yo experimenté en cáda aspecto del bendito escritorio.

Continue reading »

Servidor en casa

Febrero 18th, 2010

Hoy estaba hablando con un amigo al que considero un “power user”. Es músico y le gusta dedicarse a su música y a su familia, pero tiene una innegable vocación por embrollarse con las computadoras. Tiene una computadora de escritorio, una laptop y un router wi-fi para conectarse con Internet. Todo con Windows. Una combinación letal y realmente poco recomendable. Si algún hacker penetra la red wi-fi se mete, además, en la red privada de la casa. De terror.

Continue reading »

Internet Antisocial

Febrero 2nd, 2010

Internet me a convertido en un ser antisocial. Antes lo era, en algún grado. Ahora voy bordeando los peligrosos precipicios que me convertirían en un ogro pero, por suerte, esta vez no estoy sólo.

Continue reading »

Por qué el iPad no será un éxito

Enero 27th, 2010
Apple TV at the Macworld 2007
Image via Wikipedia

La primera razón por la que creo que los iPad no serán un éxito es porque no son una gran innovación sino una idea extendida, un iPod Touch más grande. Apple nos tiene acostumbrados a mejores cosas. Es un lindo aparato pero me parece que tiene el mismo destino que el Apple TV: a menos que la idea se mejore no será un éxito.

Continue reading »

Me pregunto si ya es tiempo de decirlo…

Diciembre 21st, 2009

Estaba viendo los nuevos chips de Intel y pensaba para mis adentros: otro ladrillo para nuestra pared… y para cuándo les contaremos a las personas lo que realmente estamos haciendo? Es que los Geeks dirigimos la tecnología para cumplir con nuestros planes y, claro está, siempre lo hacemos con beneficios residuales para que el resto del público nos financie. Continue reading »

Ubuntu Karmic Koala… ojo con el server!

Diciembre 18th, 2009
Servers designed for Linux

Image via Wikipedia

Desde hace un tiempo que quiero escribir esta entrada pero, por una cosa o por la otra, no he podido hacerlo. Apenas salido el Karmic Koala lo instalé en tres servidores con resultados dispares. De hecho, en dos de tres tuve que volver a instalar una versión anterior.

Cómo servidor LAMP me pareció muy interesante, sobre todo por la versión 2.6.31 del kernel tiene muchas cosas mejoras en la sección de la red, el filesystem y las placas de video… esas cosas que no son necesarias en un servidor, pero bueno, las mejoras están. De hecho, estoy ya usando la versión 2.6.31 para mis computadoras de escritorio aun cuando no tengo Karmic y es un placer para mis placas de video Intel que andan muy bien. Continue reading »

Energía solar… será por lo menos accesible?

Septiembre 22nd, 2009
GAINESVILLE, FL - APRIL 15:  Wayne Irwin, who ...
Image by Getty Images via Daylife

Desde hace un montón sueño con tener una casa alimentada con energía solar. Por lo menos pensando en alimentar algunos subsistemas que pueden funcionar bien con energía eléctrica. De hecho, una de las cosas que se tienen que hacer más accesibles son los paneles de distribución eléctrica que permiten tomar electricidad de la fuente más barata. Existen, pero son imposibles de caros y están pensados solamente para grandes industrias. Una de las condiciones más importantes para un hogar normal que tiene acceso a un sistema conectado de electricidad es poder elegir entre distintas fuentes. Continue reading »

Más dolor para los fans de Star Trek

Septiembre 21st, 2009
Star Trek
Image via Wikipedia

Hace unos días tuve la desgracia de ver la última película de Star Trek. Una terrible pena ver que otra vez se ha recurrido a un viaje temporal que hace un personaje para encontrarse en su pasado para enderezar las cosas en una trama que por lo menos es floja. Continue reading »