Ir al contenido principal

OpenMeetings en Debian

Artículo tomado de http://liberamemoria.blogspot.com/



Instalando OpenMeetings 0.7 RC 2 en Debian Lenny

Mucho ha pasado desde mi último post y mucho más desde aquel en que hablaba de OpenMeetings.

Aprovechando la salida de Debian 5.0 (Lenny para los amigos) y de OpenMeetings 0.7 RC 2 reescribí dicho tutorial.

Entre las mejoras notables de la nueva versión de OpenMeetings encontramos:

  • Se puede incrementar el número de participantes en las salas desde la Administración hasta 1000 usuarios.
  • Las ventanas de vídeo de los participantes se puede redimensionar.
  • Desde el menú de Administración se puede expulsar usuarios.
  • Se puede autenticar usuarios por LDAP.
Como en el tutorial anterior, partimos de una instalación estándar de Debian Lenny sin entorno gráfico.

1) Instalación de Sun Java Development Kit

Vamos a tener que habilitar los repositorios de la rama non-free de Debian Lenny. 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.us.debian.org/debian/ lenny main non-free
[...]
deb http://security.debian.org/ lenny/updates main non-free
[...]

Las direcciones puede ser distinta a las de uds, dependiendo de la elección de los repositorios que hicieron cuando instalaron Debian Lenny.

Actualizamos el listado de paquetes:

# apt-get update

Ahora si, instalamos Sun Java Development Kit:

# apt-get install sun-java6-jdk

Durante la instalación se nos presentará el acuerdo de licencia de usuario final (EULA) de Sun:


Luego de leer la licencia pulsamos Aceptar y finalmente se nos consultará si estamos de acuerdo con los términos de la misma:


Pulsando sobre el botón se continúa con el proceso instalación.


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. En el presente caso usamos MySQL.

Para instalar MySQL ejecutamos:

# apt-get install mysql-server

Se nos preguntará por una clave para el usuario root que gestiona MySQL. Así que elegimos una buena clave y la ingresamos:


Por último, volvemos a ingresar la clave por si acaso en la primera instancia teníamos los dedos super ateridos:


Ahora vamos a crear una base de datos y un usuario con permisos para gestionarla.

# mysql -p -u root

Ingresamos la clave de root de MySQL 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 hemos creado una base de datos llamadaopenmeetings pero el nombre puede ser cualquier otro.

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

mysql> 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

OpenOffice es necesario para la conversión de documentos en formatos, como por ejemplo, los de Microsoft Office. De esta manera, los usuarios reunidos en una sala virtual de Openmeetings pueden subir y compatirlos.

Un problema que se presenta es que OpenOffice require de un servidor X ya que es una aplicación gráfica.Los que han seguido mi anterior tutorial saben que en Debian Etch lo solucionábamos instalando el paquete Xvfb (X Virtual FrameBuffer). El Xvfb es un servidor X11 donde las operaciones gráficas se realizan en memoria.

Desde la versión de OpenOffice 2.4 esto ya no es necesario. Por suerte, en Debian Lenny esa es la versión disponible desde los repositorios oficiales.

Debemos instalar el paquete openoffice.org-headless para desentendernos definitivamente del servidor X:

# apt-get install openoffice.org-headless

Ahora si, instalamos el resto de los paquetes (todo en una sola línea):

# apt-get install openoffice.org-writer openoffice.org-calc openoffice.org-impress openoffice.org-draw openoffice.org-math


4) Instalando OpenOffice como servicio

Vamos a crear un script para que el servicio de OpenMeetings se levante cada vez que arranque nuestro servidor de OpenMeetings.

Creamos un archivo llamado openmeetings en /etc/init.d:

# pico /etc/init.d/openoffice

Ahí escribimos (o copiamos y pegamos) lo siguiente:

#!/bin/bash
# openoffice.org headless server script
#
# chkconfig: 2345 80 30
# description: headless openoffice server script
# processname: openoffice
#
# Author: Vic Vijayakumar
# Modified by Federico Ch. Tomasczik
#
OOo_HOME=/usr/bin
SOFFICE_PATH=$OOo_HOME/soffice
PIDFILE=/var/run/openoffice-server.pid

set -e

case "$1" in
start)
if [ -f $PIDFILE ]; then
echo "OpenOffice headless server has already started."
sleep 5
exit
fi
echo "Starting OpenOffice headless server"
$SOFFICE_PATH -headless -nologo -nofirststartwizard -accept="socket,host=127.0.0.1,port=8100;urp" & > /dev/null 2>&1
touch $PIDFILE
;;
stop)
if [ -f $PIDFILE ]; then
echo "Stopping OpenOffice headless server."
killall -9 soffice && killall -9 soffice.bin
rm -f $PIDFILE
exit
fi
echo "Openoffice headless server is not running."
exit
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0

Le damos permisos de ejecución a este archivo:

# chmod 0755 /etc/init.d/openoffice

Generamos los enlaces a nuestro pequeño script:

# update-rc.d openoffice defaults

Iniciamos el servicio:

#/etc/init.d/openoffice start

No deberíamos ver ningún mensaje de error luego de esto.

Como primera comprobación (más adelante veremos otra), veremos si en el puerto 8100 está el servicio de OpenOffice levantado:

# netstat -an | grep 8100

Y tendríamos que encontrar algo como esto:

tcp 0 0 127.0.0.1:8100 0.0.0.0:*
LISTEN 2467/soffice.bin

Muy bien, el servicio de OpenOffice está levantado (soffice.bin es el ejecutable) escuchando en el puerto 8100 peticiones por127.0.0.1.


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).

Antes que nada, vamos a instalar algunas librerias y herramientas que son requeridas por SWFTools.

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

Como SWFTools no está disponible en Debian Lenny (pero si en los repositorios de la versión inestable de Debian, llamada Sid) vamos a tener que bajar el paquete.

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-2.1_i386.deb

Y lo instalamos:

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

Borramos el paquete de instalación:

# rm swftools_0.8.1-2.1_i386.deb

Bueno, ya falta menos...


7) Instalando Red5

Red5 es un servidor de código abierto escrito en Java que sirve para entregar contenido de audio y/o video en streaming. Para ello utiliza el protocol RTMP (Real Time Messaging Protocol)con lo cual se puede transmitir contenido en tiempo Real.

Desde la versión 0.7 RC 1 OpenMeetings tenemos dos opciones de descarga: una que incluye a Red5 y otra que no. Yo opté por la que sí trae a Red5, asi que sin mayores demoras bajamos el archivo correspondiente:

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

Perfecto, ya lo tenemos. Pero nos falta alguna herramienta para descomprimirlo:

# apt-get install unzip

Ahora si, lo descomprimimos:

# unzip openmeetings_0_7_rc2.zip

Luego de esto tendremos dos directorios nuevos: openmeetings_0_7_rc2 y __MACOSX.

Borramos el último ya que es para el sistema operativo de Apple.

# rm -r __MACOSX

El directorio que nos quedo (openmeetings_0_7_rc2) contiene tanto a Red5 como el querido OpenMeetings en su versión 0.7 RC 2. La movemos a un lugar un poco más conveniente. En mi caso, la muevo a /usr/lib/red5:

# mv openmeetings_0_7_rc2 /usr/lib/red5

Ahora, dentro de /usr/lib/red5 tenemos un script llamado red5.sh que permite levantar al servidor Red5. Le damos permisos de ejecusión:

# chmod +x *.sh

Como primera prueba, arrancamos Red5:

# /usr/lib/red5/red5.sh

Luego de unos segundos, cuando se calman los mensajes que inundan nuestra consola, si desde un navegador nos dirijimos ahttp://mi-ip:5080 (reemplazando mi-ip por la dirección IP del servidor) tendríamos que ver una página como esta:


Con Ctrl-C en la consola matamos al servidor de Red5.

Como todo funciona como se esperaba, borramos el archivo que bajamos:

# rm openmeetings_0_7_rc2.zip


8) Instalando Red5 como servicio

Es momento de crear un script de arranque para nuestro servidor Red5

Por cuestiones de seguridad, no vamos a permitir que Red5 (y por ende, OpenMeetings) corra con privilegios de root. Por lo tanto, cambiamos los permisos de todos los archivos:

# chown -R nobody /usr/lib/red5

Editamos un nuevo archivo en /etc/init.d:

# pico /etc/init.d/red5

Agregamos las siguientes líneas:

#! /bin/sh
#
# red5 red5 initscript
#
# Author: Simon Eisenmann .
#

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Red5 flash streaming server"
NAME=red5
RED5_HOME=/usr/lib/red5
DAEMON=$RED5_HOME/$NAME.sh
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

# Read config file if it is present.
if [ -r /etc/default/$NAME ]
then
. /etc/default/$NAME
fi

#
# Function that starts the daemon/service.
#
d_start() {
start-stop-daemon --start -c nobody --pidfile $PIDFILE \
--chdir $RED5_HOME --background --make-pidfile \
--exec $DAEMON
}

#
# Function that stops the daemon/service.
#
d_stop() {
start-stop-daemon --stop --quiet --pidfile $PIDFILE \
--name java
rm -f $PIDFILE
}

case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
restart|force-reload)
echo -n "Restarting $DESC: $NAME"
d_stop
sleep 1
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0

Le damos permisos de ejecución al script:

# chmod +x /etc/init.d/red5

Y finalmente, creamos los enlaces simbólicos para el arranque:

# update-rc.d red5 defaults

Probamos que levante Red5 con este script:

# /etc/init.d/red5 start

No deberíamos visualizar ningún error por la consola. Podemos ir de nuevo a nuestro navegador amigo para ver si se ve la página de inicio de Red5 o mediante el siguiente comando:

# netstat -nap | grep 5080

En ese caso, deberíamos observar en la consola algo como:

tcp6 0 0 :::5080 :::* LISTEN 14534/java


9) Algunos retoques a Red5

Y ya que estamos, vamos a cambiarle algunas cosas a Red5. Este punto es totalmente opcional.

Se habrán dado cuenta que con Red5 vienen una serie de ejemplos que se pueden acceder desde la página de inicio. No es muy vistoso ni muy seguro tener esto a la vista de todos. Así que los borramos...

# rm -r /usr/lib/red5/webapps/installer
# rm -r /usr/lib/red5/webapps/root/*

En /usr/lib/red5/webapps/root podemos crear nuestro propio index.html para que sirva de página de inicio de Red5. Pero eso queda fuera de este tutorial ya que no soy diseñador.


10) Instalando OpenMeetings 0.7 RC 2

OpenMeetings ya está prácticamente instalado. Su directorio está en /usr/lib/red5/webapps/openmeetings. Solo nos quedan un par de cosas.

Cambiamos a dicho directorio:

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

Editamos el archivo hibernate.cfg.xml donde se configura el acceso a la base de datos ya creada.

# pico conf/hibernate.cfg.xml

Buscamos las siguientes líneas:


root


Lo cambiamos por:


openmeetings
rstallman


Donde cambiamos openmeetings por el nombre del usuario que le asignamos a la base de datos y rstallman por su clave.

Ahora le damos permisos de ejecución a los scripts que se encuentran en la carpeta jod, que son los responsables (junto con OpenOffice) de las conversiones de documentos:

# chmod +x jod/*.sh

Reiniciamos el servicio de red5:

# /etc/init.d/red5 restart

Antes de continuar, vamos a comprobar a esta altura si es posible convertir documentos. Cambiamos de directorio:

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

En ese directorio vamos a encontrar un par de archivos de texto. Tomemos uno de ellos al hacer, por ejemplo README.txt y corramos el siguiente comando:

# java -jar jodconverter-cli-2.2.0.jar -f pdf README.txt

Deberíamos ver algo como:

25/02/2009 12:33:04 com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection connect
INFO: connected
25/02/2009 12:33:10 com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection disposing
INFO: disconnected

Ahora si volvemos a revisar el directorio vamos a encontrar un nuevo archivo README.pdf.

Si es así, la conversión fue exitosa y podremos convertir documentos en OM.

Lo borramos:

# rm README.pdf

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, como todo el mundo sospecha 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 pertenecer 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.
  • Default Font for Export: Las fuentes por defecto para los decumentos exportados.
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.

e) Cryp Type: Tipo de encriptación a utilizar para usuarios y sesiones.

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 1 o 2 minutos) deberíamos ver una página con el siguiente mensaje:


Durante la instalación no se nos informa si hubo errores ni se muestra el avance en la instalación. Para los ansiosos, lo mejor es entrar a la consola de MySQL (con el usuario root o el que le asignamos a la base de datos de OpenMeetings) y seleccionar la base de datos:

mysql> use openmeetings

Luego, verificamos si el proceso de instalación está creando las tablas en la base:

mysql> show tables;

Si luego de un par de minutos no llegamos a visualizar dicha página, debemos suponer algo anduvo mal. 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 y reiniciar el servicio de Red5.

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 a http://mi-ip:5080/openmeetings/, 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 crear nuevos usuarios y a probarlo.

Esta es la apariencia de OpenMeetings con dos usuarios conectados (el feo soy yo ;) a una de las salas de conferencias:



Lo que falta

Por defecto, OpenMeetings no tiene habilitada la opción de grabación de las conferencias ya que la misma está en fase beta de desarrollo.

Un poco por falta de interés de mi parte y otro por falta de tiempo no lo he activado. Pero prometo ver de que se trata. Luego lo compartiré con uds.


Enlaces

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

Foro de usuarios en inglés:
http://groups.google.com/group/openmeetings-user

Foro de desarrolladores en inglés:
http://groups.google.com/group/openmeetings-dev

Foro de usuarios en español:
http://groups.google.com/group/openmeetings-en-espanol

Comentarios

  1. Sigo todos los pasos sin que me de ningún error pero cuando pruebo la conexión http://mi-ip:5080 me dice que mi-ip rehusó la conexión y no me sale la página de red5
    ¿Falta algún paso?

    ResponderEliminar
  2. He vuelto a la carga con Debian Lenny y he visto que la instalación de red5 da el siguiente error:

    Starting Red5 (org.red5.server.Standalone)...
    Exception in thread "main" java.lang.NoClassDefFoundError: org.red5.server.Standalone
    at gnu.java.lang.MainThread.run(libgcj.so.90)
    Caused by: java.lang.ClassNotFoundException: org.red5.server.Standalone not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
    at java.net.URLClassLoader.findClass(libgcj.so.90)
    at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.90)
    at java.lang.ClassLoader.loadClass(libgcj.so.90)
    at java.lang.ClassLoader.loadClass(libgcj.so.90)
    at gnu.java.lang.MainThread.run(libgcj.so.90)

    ¿Alguna sugerencia para corregirlo?

    ResponderEliminar

Publicar un comentario

Debes estar registrado en el blog para poder enviar tus comentarios.

Entradas populares de este blog

Vulnerabilidad en Bluetooth -- BIAS

Será el fin de TCP con la llegada de HTTP/3

La  IETF (Internet Engineering Task Force)  ha  publicado  información sobre lo que será el nuevo protocolo de transferencia de hypertexto que tanto usamos a diario, cuando accedemos a sitios web. HTTP/3 ya no usará TCP nunca más. En su lugar se ejecutará sobre el protocolo QUIC. El protocolo QUIC fue elaborado conceptualmente por Google en 2012 y tiene como objetivo mejorar tanto la seguridad como el rendimiento ofrecido por  TCP - Transmission Control Protocol , sobre todo lo segundo. ¿Qué es Quic y sus diferencias con TCP?   Quick UDP Internet Connections, es un protocolo de capa de transporte que se basa en el multiplexado de conexiones UDP. De hecho, QUIC utiliza esta combinación: TCP + TLS + SDPY sobre UDP Esto lo hace con varias mejoras respecto a la actual implementación de TCP. La IETF ha estado desde 2016 trabajando a fondo con una versión global del protocolo alumbra do por Google, y finalmente ha sido este año cuando ha decidido incluirlo en la nueva versión HTTP/3.   Sin e

Zoom y sus vulnerabilidades

Leyendo acerca de todas las quejas en cuanto a brechas de seguridad que tiene Zoom la plataforma de videoconferencia que conocí hace unos años, pero que ahora debido a la necesidad de estar en casa debido al COVID19, la ha convertido en la herramienta que muchos usan para sus reuniones empresariales virtuales, sus llamadas privadas o incluso para las fiestas virtuales o noches de Netflix.   Solo precisar que no es la única herramienta que se tiene para tener este tipo de video conferencias, alternativas como WhatsApp (Vulnerable- Facebook de por medio.. hmm) o como Teams de Microsoft, Cisco Webex, Webex Meetings (se necesita pago) o  Jitsi , esta última es de uso gratuito también y con algunas mejoras en su seguridad realizadas hace poco, puede ser una plataforma para cubrir esta necesidad.   Si  la opción es usar Zoom, no esta de más revisar este  link  para tratar de asegurar esta aplicación y sentirse un poco más tranquilo, o también puede ver el siguiente video.   Aquí les comparto