7 jun 2010

Instalación de OpenMeetings en Debian Etch

Algunas de las características de OpenMeetings:

* Permite realizar conferencias de audio y/o video, organizadas en salas públicas y privadas.
* Cualquiera de los participantes que oficie de moderador pueden mostrar el escritorio de su computadora, lo cual es muy útil para el uso en cursos a distancia.
* Permite importar casi todo tipo de documentos e imágenes (.tga, .xcf, .wpg, .txt, .ico, .ttf, .pcd, .pcds, .ps, .psd, .tiff, .bmp, .svg, .dpx, .exr, .jpg, .jpeg, .gif, .png, .ppt, .odp, .odt, .sxw, .wpd, .doc, .rtf, .txt, .ods, .sxc, .xls, .sxi, .pdf)
* Contiene una pizarra donde lo que se escribe y/o dibuja el moderador es visualizado por los participantes.
* Soporta numerosos idiomas e incluso posee una herramienta para editar las traducciones que vienen por defecto.
* Se puede enviar invitaciones a otros usuarios por correo electrónico para que formen parte de una conferencia.

Luego de instalarlo y probarlo en varias condiciones puedo afirmar que OpenMeetings supera ampliamente las características de DimDim. Y como si fuera poco, sólo requiere en los clientes un navegador que soporte Flash 9 y tenga Java instalado (además de una WebCam y/o un micrófono)



En la siguiente figura pueden observar como se ve una videoconferencia con dos participantes:



Noten que también los participantes están visualizando también un documento de Word.

En la siguiente imágen pueden ver la pizarra en acción:



Empezando...

Lo que sigue lo he probado ya en una máquina virtual y en varias máquinas físicas corriendo Debian Etch sin entorno gráfico.


Aunque no lo he probado aún, esta pequeña guía debería servir también bajo Ubuntu Server Edition o incluso en Ubuntu Desktop con las diferencias del caso.

Elegí usar como base de datos MySQL aunque OpenMeetings acepta Postgress.

1) Instalación de Sun Java Development Kit

Como OpenMeetings necesita de Sun Java Development Kit vamos a tener que habilitar los repositorios de la rama non-free de Debian. Para ellos editamos el archivo sources.list:

# pico /etc/apt/sources.list

Agregamos non-free a alguno de los repositorios que figuran allí al final de la línea. En mi caso quedó:

deb http://ftp.debian.org/debian/ etch main stable non-free

La dirección puede ser distinta en el caso de uds, dependiendo del lugar desde donde prefirieron obtener los paquetes de Debian en el momento de la instalación.

Actualizamos el listado de paquetes:

# apt-get update

Instalamos finalmente Sun Java Development Kit:

# apt-get install sun-java5-jdk

Finalizando la instalación se nos presentará el acuerdo de licencia de usuario final (EULA) de Sun la cual debemos aceptar.


2) Instalación de MySQL

OpenMeetings utiliza una base de datos para mantener información de usuarios, direcciones de correo electrónico, salas de reuniones, etc.

Para instalar MySQL ejecutamos:

# apt-get install mysql-server

Antes de seguir, asignamos una clave al usuario root de MySQL:

# mysqladmin -u root password 'pon_tu_clave_aqui'

donde 'pon_tu_clave_aqui' es la clave elegida.

Imagino que no eligieron la misma clave que el usuario root del sistema, que tiene una cantidad de caracteres aceptable y que guardarán la clave bajo siete llaves (como mínimo)

Asegurado el usuario root de MySQL, creamos una base de datos y un usuario con permisos para gestionarla.

# mysql -p -u root

Ingresamos la clave recién cambiada para root y nos encontraremos en la consola de MySQL. Allí creamos la base de datos ingresando:

mysql> CREATE DATABASE openmeetings DEFAULT CHARACTER SET 'utf8';

Con este comando creamos la base de datos llamada "openmeetings" pero el nombre puede ser cualquier otro.

Ahora creamos un usuario con todos los permisos para la base de datos recién creada:

GRANT ALL PRIVILEGES ON openmeetings.* TO 'openmeetings'@'localhost' IDENTIFIED BY 'rstallman' WITH GRANT OPTION;

En este caso llamé "openmeetings" al usuario también. La clave de dicho usuario en el ejemplo es "rstallman". Sean libres de cambiar estos datos.

Salimos de la consola de MySQL con:

mysql> quit

O también:

mysql> \q


3) Instalación de Xvfb

Estamos en un servidor que debería no tener instalado ningún entorno gráfico. Pero necesitaremos de OpenOffice que requiere de uno para correr. La solución a este conflicto es utilizar Xvfb (X Virtual FrameBuffer) el cual no es más ni menos que un servidor X11. La diferencia de los otros servidores X11 es que este en particular no muestra nada en pantalla, llevando todas las operaciones gráficas en memoria.

Nota: Como comenta Kunthar, a partir de OpenOffice 2.3 ya no es necesario instalar Xvfb. Esto deberían tenerlo en cuenta aquellos que piensan instalar OpenMeetings en otras distribuciones como por ejemplo Ubuntu que ya tiene esa versión de OpenOffice. Sin embargo, para Debian Etch, donde la versión de OpenOffice es 2.0.4.9 debemos instalar Xvfb.

Ahora que los he convencido, instalamos Xvfb:

# apt-get install xvfb

Para poder correr el servidor X requiere de un juego de fuentes. Así que, si no quieren renegar más adelante, la instalamos ahora:

# apt-get install xfonts-base

Otro punto importante es que Xvfb requiere de xauth pero Debian no incluye esta dependencia del paquete xvfb. No se si es un bug o que pero lo cierto es que perdí mucho tiempo intentando levantar el Xvfb sin errores.

La aplicación xauth sirve para que el cliente se pueda autenticar con un servidor X y viene dentro del paquete xbase-clients:

# apt-get install xbase-clients

Para probar que Xvfb está bien instalado podemos correr el siguiente comando:

# Xvfb :1 -screen scrn 800x600x16

Este comando levanta al servidor de X escuchando conexiones como servidor 1, con una profundidad de 16 bits, un ancho de 600 píxeles y un alto de 800 píxeles.

Luego de algunos mensajes el servidor debería estar levantado. Para volver al intérprete de comandos pulsamos Ctrl+C.


4) Instalación de OpenOffice

OpenOffice es necesario para la conversión de los formatos de documentos Word y Excell a los propios de este paquete de oficina.

Para instalarlo:

# apt-get install openoffice.org

Tarda bastante la instalación de este paquete. Aquí es donde se torna aburrida la instalación.

Una vez terminada debemos editar el archivo Setup.xcu ubicado en el directorio de OpenOffice:

# pico /usr/lib/openoffice/share/registry/data/org/openoffice/Setup.xcu

Buscamos la línea que contiene e insertamos justo debajo las siguiente lineas:


socket,host=localhost,port=8100;urp


Esto es para que OpenOffice escuche desde localhost conexiones por el puerto 8100 mediante el protocolo remoto UNO (urp). Por allí, OpenMeetings se comunicará con OpenOffice para la conversión de documentos que suban los usuarios de las conferencias.

5) Instalar ImageMagick

ImageMagick es un conjunto de herramientas que permiten manejar, modificar y convertir imágenes entre más de 100 formatos distintos.

Para instalarlo, simplemente ejecutamos:

# apt-get install imagemagick


6) Instalación de SWFTools

SWFTools son un grupo de herramientas de Código abierto para crear y manipular archivos SWF, el formato utilizado por el software de animación Adobe Flash (anteriormente Macromedia Flash).

Como SWFTools está en los repositorios de la versión inestable de Debian (llamada Sid) vamos a bajar el paquete y compilarlo. Otra opción sería editar de nuevo /etc/apt/sources.list y cambiar “etch” por “sid” para luego ejecutar un apt-get update y finalmente apt-get install swtools.

Pero antes, vamos a instalar algunas librerias y herramientas que son utilizadas por SWFTools.

# apt-get install gs-gpl libart-2.0-2 libt1-5 libungif4g

En el momento de escribir esta entrada la última versión de SWFTools era la 0.8.1.1. Hay varios lugares donde está disponible el paquete para Debian.

Elijamos un lugar donde bajar el paquete. En mi caso, en el directorio /root:

# cd /root

Bajamos allí el paquete .deb:

# wget http://ftp.it.debian.org/debian/pool/main/s/swftools/swftools_0.8.1-1_i386.deb

Y lo instalamos:

# dpkg -i swftools_0.8.1-1_i386.deb

Borramos el paquete de instalación:

# rm swftools_0.8.1-1_i386.deb


7) Instalación de Red5

Red5 es un servidor Open Source para entregar contenido en streaming en Flash. Para ello utiliza el protocolo RTMP (Real Time Messaging Protocol) con lo cual se puede transmitir contenido en tiempo Real.

Bajamos el paquete .deb de Red5 versión 0.6.3 que es la que soporta a OpenMeetings 0.5 Final:

# wget http://dl.fancycode.com/red5/0.6.3/debian/red5_0.6.3-1_all.deb

Y ahora lo instalamos:

# dpkg -i red5_0.6.3-1_all.deb

Borramos el paquete de instalación:

# rm red5_0.6.3-1_all.deb


8) Instalación de Openmeetings

Finalmente, llegó la hora de instalar Openmeetings. Como el paquete de instalación viene comprimido con zip, instalamos unzip para descomprimirlo:

# apt-get install unzip

Nos movemos al directorio donde red5 mantiene las aplicaciones web:

# cd /usr/lib/red5/webapps

Descargamos el paquete de instalación de Openmeetings. La versión en este momento es la 0.5 Final como ya había comentado:

# wget http://openmeetings.googlecode.com/files/openmeetings05Final.zip

Descomprimimos:

# unzip openmeetings05Final.zip

Esto crea el directorio "openmeetings" donde esta la estructura y archivos necesarios para correr la aplicación.

Borramos el archivo comprimido:

# rm openmeetings05Final.zip

Cambiamos de directorio:

# cd /usr/lib/red5/webapps/openmeetings/jod

Damos permisos de ejecuación a los archivos de dicho directorio:

# /usr/lib/red5/webapps/openmeetings/jod /# chmod +x *.sh

Cambiamos al directorio "conf" donde se guardan los archivos de configuración de OpenMeetings.

# cd /usr/lib/red5/webapps/openmeetings/conf

Para usar MySQL como base de datos renombramos:

# cp mysql_hibernate.cfg.xml hibernate.cfg.xml

Editamos hibernate.cfg.xml recién generado:

# pico hibernate.cfg.xml

Buscamos la línea con el comentario .

openmeetings
rstallman jdbc:mysql://localhost/openmeetings

Reiniciamos el servicio de red5:

# /etc/init.d/./red5 restart

Si no hemos obtenido ningún mensaje de error en la consola, podemos seguir adelante. El siguiente paso consiste en abrir nuestro navegador y dirigirnos a:

http://mi-ip:5080/openmeetings/install

donde en "mi-ip" va la dirección IP de nuestro servidor OpenMeetings. Deberían ver una página como la siguiente:



Muy bien, hay que entrar en el enlace "continue with STEP 1".

La página del paso 1 consiste en un formulario como el de la siguiente figura:



El formulario está organizado en secciones:

a) Userdata: Allí hay que definir el nombre de usuario, clave y dirección de correo para un usuario que por defecto tendrá privilegios de administrador dentro de la aplicación.

b) Organisations (Domains): Para que un usuario pueda entrar a OpenMeetings necesita (ademas de un nombre de usuario y una clave) estar asociado a una organización. Una organización es una conjunto de usuarios que comparten los mismos intereses. Los usuarios asociados a una organización no pueden entrar en las salas de conferencias de otra. Sólo pueden encontrarse los miembros de distintas organizaciones en las salas públicas.

Las organizaciones pueden ser empresas a las que le brindamos el servicio de conferencias o distintas areas dentro de una empresa, por ejemplo.

Por último, cada usuario puede perteneces a más de una organización.

En mi ejemplo, definí una organización llamada "administradores", que será la que tendrá en principio el usuario "admin".

c) Configuration: Aquí se configuran algunos parámetros básicos de funcionamiento de la aplicación.

* Allow self-registering: Habilita o deshabilita la posibilidad que las personas se registren si no tienen un usuario en OpenMeetings llenando un formulario en la página de inicio de la aplicación. En mi caso, lo he deshabilitado ya que quiero tener el control de los usuarios que ingresen.

* Send Email to new registered Users: Define si se envía o no un e-mail de notificación cuando se registra un usuario nuevo.

* New Users need to verify their Email: Define si se envía o no un e-mail cuando se registra un usuario nuevo para verificar su dirección electrónica.

* Mail Referer: Dirección de correo electrónico con la que salen los e-mails generados por OpenMeetings.

* SMTP-Server, SMTP-Server Port, SMTP-Username, SMTP-Userpass: Indican el servidor de correo saliente SMTP, el puerto TCP donde atiende el mismo, el usuario y clave para el envío de correos, respectivamente.

* Default Language: El idioma por defecto de la aplicación.


d) Converters: Aquí se configura la ubicación de las herramientas de conversiones SWTools e ImageMagick. En nuestro caso, no es necesario agregar los paths ya que por defecto quedan en variables de entorno del sistema.

Luego de completar el formulario pulsamos el botón "INSTALL". Esto inicia el proceso de instalación, configuración y de generación de las tablas necesarias en la base de datos. Pasados unos minutos (no más de 2 o 3 minutos) deberíamos ver una página con el siguiente mensaje:




Lamentablemente durante la instalación no se nos informa si hubo errores. Tampoco se muestra el avance en la instalación o que es lo que está ocurriendo. Este es un punto débil de OpenMeetings. Así que, si luego de un par de minutos no llegamos a esta página, debemos suponer algo anduvo mal. Si es así tendríamos que revisar el archivo hibernate.cfg.xml en primer instancia para ver si el nombre de la base de datos, el usuario y clave son las correctas. Una vez confirmado esto, podríamos entrar a la consola mysql para ver si al menos se han creado las tablas en la base de datos.

Y si todo ha ido bien, podríamos entrar a la aplicación haciendo click en el enlace "Enter the Application" o ingresando en nuestro navegador

http://mi-ip:5080/openmeetings/install

donde reemplazamos "mi-ip" por la dirección IP del servidor OpenMeetings. Veremos la página de ingreso a OpenMeetings:




Una vez allí ya podemos ingresar el usuario y clave que hemos elegido en el proceso de instalación para empezar a probar. Sin embargo, vamos a tener problemas a la hora de subir archivos de la familia Office. Aún nos queda un detalle por retocar.

Levantando el servicio de OpenOffice

Deje este punto para el final para no complicar más las cosas y no sumar puntos de falla. Si no existieron problemas hasta ahora, nos quedaría levantar el servicio de OpenOffice.

Si sólo estamos haciendo las primeras pruebas con OpenMeetings tal vez lo mejor es ejecutar desde la consola (todo en una sola línea):

# xvfb-run --server-args='-screen 0 800x600x16' -a /usr/lib/openoffice/program/soffice -headless -nologo -norestore

Si ya estamos seguros que todo está funcionando correctamente, es necesario que ese comando se ejecute en forma automática. Yo lo coloqué en el script de arranque de red5:

# cd /etc/init.d

Primero hacemos una copia de seguridad del archivo original:

# cp red5 red5.old

Editamos el archivo:

# pico red5

Buscamos la función que levanta el servicio de red5 la cual se llama d_start(). Justo debajo del comienzo de la función agregamos:

xvfb-run --server-args='-screen 0 800x600x16' -a /usr/lib/openoffice/program/soffice -headless -nologo -norestore &
sleep 5

Ahora, buscamos la función d_stop() que es la encargada de bajar el servicio de red5. Justo debajo de la linea d_stop() agregamos:

pkill soffice.bin
pkill xvfb-run

Con esto garantizamos que cuando levante el servicio red5 también se levante el de OpenOffice.

Luego, con:

./red5 start

Reiniciamos el servicio.


Consejos y recomendaciones

a) Activando los logs en red5

El servidor red5 por defecto no genera logs. Para activar los logs editamos el archivo log4j.properties.

# pico /usr/lib/red5/conf/log4j.properties

Cambiamos la primera línea por:

log4j.rootCategory=ERROR, FLOG

y luego reiniciamos red5.

b) Buscando errores

Podemos leer el archivo de logs de OpenMeetings como:

tail -f /usr/lib/red5/openmeetings.log

También pordemos ejecutar desde nuestro navegador:

http://mi-ip:5080/openmeetings/maindebug.lzx.lzr=swf8.swf

que es un aplicación que nos proporcionará información valiosa acerca de errores que podemos tener.

c) Acceso desde Internet

Si se desea que nuestros usuarios puedan acceder desde Internet a OpenMeetings tendremos que asegurarnos que estén abiertos en nuestro firewall los puertos TCP 1935 y el 5080. El puerto 1935 se utiliza para las solicitudes RTMP (Real-Time Messaging Protocol) y el 5080 para las solicitudes http.


Si el tiempo me lo permite, voy a probarlo en otras plataformas y escribiré al respecto.


Enlaces


OpenMeetings:

http://code.google.com/p/openmeetings/

Foro de usuarios:
http://groups.google.com/group/openmeetings-user

Foro de desarrolladores:
http://groups.google.com/group/openmeetings-dev

No hay comentarios: