Se acabó el carnaval, y eso hora de volver al trabajo.
Hace cerca de un mes la institución donde laboro solicitó la evaluación de una herramienta para capacitación a distancia, pero con características muy especiales que debían incluir videoconferencia y presentaciones en tiempo real. Entonces solicitaron la instalación de una herramienta que se llama BigBlugButton (BBB).
BigBlugButton es una aplicación Web Open Source de Video Conferencia, VoIP, escritorio compartido y e-learning para educación a distancia. Es un programa realmente muy interesante, distribuido bajo licencia LGPL y que hace uso de proyectos varios como Asterisk, Flex SDK, Red5, MySQL y otros.
BigBlueButton ofrece algunas características interesantes y que le ubican en una categoría multipropósito, ya que por ejemplo los usuarios pueden subir archivos PDF o documentos de texto/hojas de cálculo, lo cual será muy útil para quienes estén realizando una presentación.
Para el uso de BigBlueButton hay 3 casos:
* Presentador, que puede subir presentaciones y compartir su escritorio
* Espectador, que no tiene autoridad en la videoconferencia y solo puede ver o chatear
* Moderador, que puede subir presentaciones, compartir su escritorio y aceptar o expulsar usuarios.
En esta oportunidad tocó configurar la herramienta para su evaluación y posible implementación para el área de capacitación de la organización. De la experiencia obtenida aqui resumo paso a paso su largo y poco complejo proceso de instalación y configuración.
Requerimientos
La configuración de este servicio requiere previa la instalación de varios programas adicionales, a saber:
* Apache Tomcat 6
* Nginx (servidor web)
* Mysql (base de datos)
* Swftools (utiidades para manipular archivos Flash)
* ActiveMQ (servicio de mensajería)
* Red5 (servicio RTMP)
* Asterisk y Konference (servicio para conferencia)
La instalación se llevó a cabo en una VM puesta en Xen 4, con Debian 6.0 en actual estatus de Estable.
Instalación y Configuración
Se prepara el servidor con las últimas actualizaciones en el sistema. Luego se procede paso a paso para la instalación de los paquetes necesarios.
1. Se instalan los Paquetes Necesarios:
aptitude install sudo build-essential mysql-server openjdk6-jdk jsvc tomcat6 imagemagick nginx openoffice.org libjpeg62-dev libjpeg62 libfreetype6-dev libfreetype6 libgif-dev libgif4 libungif4-dev libungif-bin libncurses5-dev libxml2-dev subversion
2. Instalación de Swftools:
cd /usr/src/ wget http://www.swftools.org/swftools-0.9.1.tar.gz tar -xvzf swftools-0.9.1.tar.gz cd swftools-0.9.1 ./configure make make install
3. Instalación de ActiveMQ:
cd /tmp wget http://apache.mirror.rafal.ca/activemq/apache-activemq/5.4.2/apache-activemq-5.4.2-bin.tar.gz tar zxvf apache-activemq-5.4.2-bin.tar.gz mv /tmp/apache-activemq-5.4.2 /usr/share/activemq chown -R root.root /usr/share/activemq
4. Instalación de Red5:
cd /tmp wget http://bigbluebutton.org/downloads/0.70/red5-0.9.1.tar.gz tar xvf red5-0.9.1.tar.gz mv /tmp/red5-0.9.1 /usr/share/red5 adduser --system --home /usr/share/red5/ --no-create-home --group --disabled-password --shell /bin/false red5
5. Se crean los archivos de bitácoras y se asignan los permisos necesarios:
touch /usr/share/red5/log/sip.log touch /usr/share/red5/log/video.log touch /usr/share/red5/log/bigbluebutton.log chown -R root.root /usr/share/red5 chown -R red5:adm /usr/share/red5/log/ chmod 755 /usr/share/red5/log/ chgrp red5 /usr/share/red5/webapps/ chmod 775 /usr/share/red5/webapps/ mkdir /var/log/bigbluebutton touch /var/log/bigbluebutton/bbb-web.log chown tomcat6:tomcat6 /var/log/bigbluebutton/bbb-web.log
Adicional, se copian los scripts de cada servicio y se definen en los niveles de inicio del sistema:
cd /usr/src/ wget http://bigbluebutton.org/downloads/0.71/init-scripts.tar.gz tar xzvf init-scripts.tar.gz mv activemq /etc/init.d/activemq mv red5 /etc/init.d/red5 chmod a+x /etc/init.d/activemq chmod a+x /etc/init.d/red5 update-rc.d activemq defaults update-rc.d red5 defaults
Aqui también se configura OpenOffice para iniciar como un servicio:
wget http://www.bigbluebutton.org/downloads/0.71/bbb-openoffice-headless cp bbb-openoffice-headless /etc/init.d chmod a+x /etc/init.d/bbb-openoffice-headless update-rc.d bbb-openoffice-headless defaults /etc/init.d/bbb-openoffice-headless start
6. Se instala y configura Asterisk con sus programas complementarios Dahdi y Konference:
Previo se prepara el sistema para la compilación de módulos:
aptitude install linux-headers-`uname -r`
Se crea un link a los headers del kernel que se tiene instalado en el servidor para que Dahdi consiga el kernel indicado:
cd /usr/src/
ln -s /usr/src/linux-headers-2.6.32.5-686 /usr/src/linux
Se descargn los fuentes de los programas a compilar en el sistema:
cd /usr/src wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.6.2.9.tar.gz wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/dahdi-linux-2.4.0.tar.gz wget http://github.com/jthomerson/AsteriskAudioKonf/tarball/master/
6.1. Instalación de Dahdi (este paso puede ser obviado):
tar -xvvzf dahdi-linux-2.4.0.tar.gz
cd /usr/src/dahdi-linux-2.4.0/drivers/dahdi/
Con el editor abra el archivo Kbuild, descomente la línea
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DUMMY) += dahdi_dummy.o
Y comente las lineas de abajo:
#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCT4XXP) += wct4xxp/ #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTC4XXP) += wctc4xxp/ #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTDM24XXP) += wctdm24xxp/ #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE12XP) += wcte12xp/ #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTDM) += wctdm.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_VOICEBUS) += voicebus/ #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCB4XXP) += wcb4xxp/ #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCT1XXP) += wct1xxp.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE11XP) += wcte11xp.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCFXO) += wcfxo.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_TOR2) += tor2.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_PCIRADIO) += pciradio.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_XPP) += xpp/ #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_JPAH) += dahdi_echocan_jpah.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_STEVE) += dahdi_echocan_sec.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_STEVE2) += dahdi_echocan_sec2.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_KB1) += dahdi_echocan_kb1.o #obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_ECHOCAN_MG2) += dahdi_echocan_mg2.o
Grabe el archivo y salga del editor. Ahora se compila el programa:
cd /usr/src/dahdi-linux-2.4.0
make && make install
6.2 Instalación de Asterisk:
cd /usr/src/ tar -xvvzf asterisk-1.6.2.9.tar.gz cd asterisk-1.6.2.9 ./configure make make install make samples
Copie el script de inicio de asterisk a /etc/init.d/:
cp contrib/init.d/rc.debian.asterisk /etc/init.d/asterisk
chmod +x /etc/init.d/asterisk
Con el editor de archivos, cambie las líneas 24, 25 y 26 para adaptar la configuración:
DAEMON=/usr/sbin/asterisk ASTVARRUNDIR=/var/run/asterisk ASTETCDIR=/etc/asterisk
6.3 Instalación de Konference:
cd /usr/src/ tar -xvvzf jthomerson-AsteriskAudioKonf-genconf_v1.0.3-27-g3f63305.tar.gz cd jthomerson-AsteriskAudioKonf-3f63305/konference
Antes de compilar, con el editor de texto abra el archivo Makefile y modifique la variable include:
ASTERISK_INCLUDE_DIR ?= /usr/include
Luego, grabe el archivo y compile:
make
make install
Descargue los archivos de configuración de Asterisk para bbb:
wget http://bigbluebutton.org/downloads/0.70/bbb_extensions.conf mv bbb_extensions.conf /etc/asterisk/ wget http://bigbluebutton.org/downloads/0.70/bbb_sip.conf mv bbb_sip.conf /etc/asterisk/bbb_sip.conf echo "#include \"bbb_extensions.conf\"" >> /etc/asterisk/extensions.conf echo "#include \"bbb_sip.conf\"" >> /etc/asterisk/sip.conf echo "load => app_konference.so" >> /etc/asterisk/modules.conf
Modifique el valor enabled a “yes” en el archivo /etc/asterisk/manager.conf
7. Configuracion de nginx para servir bbb:
cd /usr/src/ wget http://bigbluebutton.org/downloads/0.70/nginx-bigbluebutton.conf cat nginx-bigbluebutton.conf | sed "s/192.168.0.211/<LA-IP-DEL-SERVIDOR>/" > /etc/nginx/sites-available/bigbluebutton
Se habilita la configuración de bigbluebutton con nginx:
ln -s /etc/nginx/sites-available/bigbluebutton /etc/nginx/sites-enabled/bigbluebutton
Modifique el hash bucket size para nginx
sed -i ‘s/http {/http {\n server_names_hash_bucket_size 64;/’ /etc/nginx/nginx.conf
8. Instalación y configuración del conjunto de aplicaciones que conforma BBB:
cd /usr/src/ wget http://bigbluebutton.org/downloads/0.71/bigbluebutton.tar.gz tar xzvf bigbluebutton.tar.gz cp /usr/src/bigbluebutton/bigbluebutton.war /var/lib/tomcat6/webapps/bigbluebutton.war
Por seguridad, necesita generar un GUID. Puede usar un generador en línea de GUID ubicado en http://www.somacon.com/p113.php, luego guarde la GUID en un sitio a mano pues se requiere para la configuración del bbb.
Paso siguiente es editar el archivo /var/lib/tomcat6/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties y cambiar estas opciones:
* La ruta donde esta ubicado el swfTools (el directorio donde pdf2swf está ubicado, en este caso /usr/local/bin/)
* La ruta donde se encuentra ubicado imageMagick (usualmente /usr/bin )
* El sitio donde se ubica el ejecutable binario de ghostScript (/usr/bin/gs)
* La dirección IP del valor bigbluebutton.web.serverURL=http://<LA-IP-DEL-SERVIDOR>
* Definir el valor beans.dynamicConferenceService.securitySalt con el valor de la GUID que generó recientemente (i.e. beans.dynamicConferenceService.securitySalt=<SU-GUID>)
Se crea el directorio /etc/bigbluebutton y alli se crea el archivo nopdfmark.ps con el siguiente contenido:
%!
/pdfmark {cleartomark} bind def
Luego es necesario crear una base de datos. Se ingresa a la consola de Mysql y se añade una base de datos con los permisos correspondientes:
mysql -u root -p create database bigbluebutton_dev; grant all on bigbluebutton_dev.* to 'bbb'@'localhost' identified by 'secret'; commit; quit
Se reinicie el servicio Tomcat6
/etc/init.d/tomcat6 restart
Se crea el directorio para Cargar Presentaciones:
mkdir /var/bigbluebutton
chown -R tomcat6:adm /var/bigbluebutton
chmod -R 777 /var/bigbluebutton
Instale las aplicaciones del BBB:
tar xzvf bigbluebutton-webapps.tar.gz
mv bigbluebutton /usr/share/red5/webapps/
Instale bbb-deskshare-app:
tar xzvf deskshare.tar.gz
mv deskshare /usr/share/red5/webapps/
Instale bbb-video-app:
tar xzvf video.tar.gz
mv video /usr/share/red5/webapps/
Instale bbb-voice-app:
tar xzvf sip.tar.gz
mv sip /usr/share/red5/webapps/
En este punto, modifique el archivo de configuración /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties para que apunte a su servidor SIP (i.e. FreeSWITCH o Asterisk). Se asume que es el mismo servidor, pero puede ser cualquier servidor configurado con VoIP para BigBlueButton. Defina la dirección IP del servidor SIP en el parámetro sip.server.host
Instale bbb-default en el directorio donde será servido vía web:
tar xzvf bbb-default.tar.gz
mv bigbluebutton-default /var/www
En este punto, modifique el archivo de configuración /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties para que apunte a su servidor SIP (i.e. FreeSWITCH o Asterisk). Se asume que es el mismo servidor, pero puede ser cualquier servidor configurado con VoIP para BigBlueButton. Defina la dirección IP del servidor SIP en el parámetro sip.server.host
echo "<%! // This is the security salt that must match the value set in the BigBlueButton server String salt = \"<SU-GUID>\"; // This is the URL for the BigBlueButton server String BigBlueButtonURL = \"http://<LA-IP-DEL-SERVIDOR>/bigbluebutton/\"; %>" > /var/lib/tomcat6/webapps/bigbluebutton/demo/bbb_api_conf.jsp
Por último instale bbb-client:
tar xzvf client.tar.gz
mv client /var/www/bigbluebutton
Haga los cambios en el archivo de referencias del cliente de la dirección IP 192.168.0.x por la dirección IP del servidor, tal como lo muestra este ejemplo:
sed -i 's/192.168.0.[0-9]*/<LA-IP-DEL-SERVIDOR>/g' /var/www/bigbluebutton/client/conf/config.xml
9. Instale bbb-conf:
Descargue e instale el archivo bbb-conf, un script que sirve de ayuda para la configuración de BigBlueButton. Para instalar el script bbb-conf, haga lo siguiente:
wget http://github.com/bigbluebutton/bigbluebutton/raw/master/bigbluebutton-config/bin/bbb-confsed -i 's/conf.dist/conf/g' bbb-conf mv bbb-conf /usr/local/bin chmod a+x /usr/local/bin/bbb-conf
Finalmente se chequea que la instalación quedó bien con el comando bbb-conf -c
Y para terminar, se reinician todos los servicios instalados:
/etc/init.d/nginx restart
/etc/init.d/activemq restart
/etc/init.d/asterisk restart
/etc/init.d/red5 restart
/etc/init.d/tomcat6 restart
Desde una estación de trabajo ya puede acceder al servidor, colocando en el navegador web la url del servidor:
http://<LA-IP-DEL-SERVIDOR>

Estas son unas pruebas realizadas (las imágenes cortesía del sujeto gordo del video de abajo)
Notas al final de la configuración:
Esta receta se hizo siguiendo el howto publicado en la wiki para la instalación de BBB en Debian Squeeze. Fue conveniente hacer unas modificaciones mínimas para la instalación de la versión más reciente (0.71) y en la forma como son instalados algunos de los programas, todo esto teniendo como experiencia previa la instalación de los servicios en Debian Lenny y BBB versión 0.70. Por otro lado, el howto original no deja claro, por ejemplo cuando se decida instalar Asterisk o FreeSwitch como servidor SIP, cuales archivos deben ser modificados.
Curiosamente, luego de la instalación puede que no funcione el módulo de conversación, como me pasó a mi. Como lo solucioné? El bbb-conf me da la respuesta cuando me indica que el bbb-voice-asterisk no se encuentra instalado. Revisando el archivo /usr/share/red5/webapps/bigbluebutton/WEB-INF/red5-web.xml en las últimas línea está la solución:
<!– NOTE: Change bbb-voice-freeswitch.xml to bbb-voice-asterisk.xml if you want to use Asterisk –>
<!– <import resource=”bbb-voice-freeswitch.xml” /> –>
<import resource=”bbb-voice-asterisk.xml” />
Hice el cambio en los valores tal como lo indica el archivo y listo.
Espero sea de utilidad.
http://j.mp/hDo4wh
