Selfhosted Opensource alternative to Webex, ou quem quer ter o seu próprio sistema de netmeetings?

Olá a todos,

Este é um post que tenho vindo a adiar por falta de tempo para o fazer, mas que surgiu de uma necessidade de um antigo Cliente onde estive.

Este Cliente, necessitava de uma alternativa cost effective a ferramenta de video conferencia da Cisco Webex  e quem me conhece sabe que iria preferir utilizar uma versão selfhosted preferencialmente opensource.

Na altura (no inicio de 2016) pesquisei e descobri uma alternativa que me pareceu estável, com ecossistema de desenvolvimento vivo e apoiada por um nome muito familiar no nosso meio: O Apache OpenMeetings.

 

 

O Apache OM é um software opensource que é brilha no para treino em b-learning / online training, web conference, quadro colaborativo e edição documental.

Este software é baseado num numero de ferramentas opensource como a framework OpenLaszlo RIA e o Red5 Media Server

A comunicação, a semelhança do webex, decorre numa sala de reuniões virtual e está disponível traduzido em 31 línguas distintas, e vem carregado de opções interessantes:

  • Comunicação Audio.
  • Video Conferencia.
  • Sistema de backup de conferencias.
  • Sistema de moderação e votos.
  • Gravação de reuniões.
  • Partilha de ecrã.
  • Edição em colaboração de documentos.
  • Chat e partilha de quadro de apresentação.
  • Gestão granular de utilizadores e salas de reunião.Para uma leitura mais aprofundada recomendo estes links:  1 e 2

Neste caso particular e devido a belicosidade das dependências do software iremos utilizar CentOS 6 / RHEL 6 num container LXC para conseguir um time to market mais rápido:

Após a instalação e update do sistema operativo iremos instalar as dependências do software:

# yum install wget gcc-c++ unzip zlib-devel libjpeg-devel freetype-devel giflib-devel ghostscript ImageMagick sox gedit wget

Nota: Garantir que o libreoffice está instalado.

Em seguida iremos configurar a nossa base de dados que irá alimentar o OpenMeetings:

# yum install mysql-server mysql
# service mysqld  start

Configuramos a nossa password de root do MySQL:

#mysqladmin -u root password “passwordl33t”

Criaremos em seguida a base de dados de suporte, com o nome de openmeetings e um utilizador com o mesmo nome, com uma password especifica:

 # mysql -u root -p
mysql> CREATE DATABASE openmeetings DEFAULT CHARACTER SET ‘utf8’;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE USER ‘openmeetings‘@’localhost’ IDENTIFIED BY ‘openmeetings‘;
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON openmeetings.* TO ‘openmeetings’@’localhost’;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye

Em seguida é importante garantir que a versão do Java instalado não está acima da 1.7

# java -version
java version “1.7.0_131”
OpenJDK Runtime Environment (rhel-2.6.9.0.el6_8-x86_64 u131-b00)
OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)

Iremos agora configurar as dependências da nossa aplicação:

Nota: É IMPORTANTE que as versões sejam coerentes entre as apresentadas e upgrades possíveis. Este post foi testado com as versões apresentadas.

Em primeiro lugar iremos instalar o lame que irá comprimir o audio em mp3 das nossas conferencias.

# curl -L -O http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
# tar -xvf lame-3.99.5.tar.gz
# cd lame-3.99.5
# ./configure –libdir=/usr/lib –bindir=/usr/bin  
# make
# make install

Após iremos instalar as swftools que são necessárias para suportar ficheiros de formato .swf.

#cd /opt
# wget http://www.swftools.org/swftools-2013-04-09-1007.tar.gz
# tar -xvf swftools-2013-04-09-1007.tar.gz
# cd swftools-2013-04-09-1007
# ./configure –libdir=/usr/lib –bindir=/usr/bin
# make
# make install

Instalar em seguida o Jodconverter que é utilizado para conversão de vários formatos de ficheiros Office:

# cd /opt
# wget http://jodconverter.googlecode.com/files/jodconverter-core-3.0-beta-4-dist.zip
# unzip jodconverter-core-3.0-beta-4-dist.zip

Instalar o ffmpeg que é defacto a ferramenta de conversão para streams de audio e video:

# wget http://ffmpeg.org/releases/ffmpeg-1.1.1.tar.gz
# tar -xvf ffmpeg-1.1.1.tar.gz
# cd ffmpeg-1.1.1
# ./configure –libdir=/usr/lib –bindir=/usr/bin –enable-libmp3lame –disable-yasm
# make
# make install

Descarregar e configurar o JAVA MySQL Connector que irá fazer a ponte entre o nosso openmeetings e a base de dados MySQL de backend:

# wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.0.8.tar.gz
# tar -xvf mysql-connector-java-5.0.8.tar.gz

Finalmente instalaremos o nosso openmeetings (versão 3.07):

# mkdir /openmeetings && cd /openmeetings
# wget http://ftp.cixug.es/apache/openmeetings/3.0.7/bin/apache-openmeetings-3.0.7.zip
# unzip apache-openmeetings-3.0.7.zip

Em seguida copiar o ficheiro .jar que obtivemos no download do conector de mysql para o diretório openmeetings/webapps/openmeetings/WEB-INF/lib.

# cd ~/mysql-connector-java-5.0.8
# cp mysql-connector-java-5.0.8-bin.jar  /openmeetings/webapps/openmeetings/WEB-INF/lib

Após, ir a /openmeetings/webapps/openmeetings/WEB-INF/classes/META-INF/ e fazer um backup do ficheiro persistence.xml.

# cd /openmeetings/webapps/openmeetings/WEB-INF/classes/META-INF/
# cp persistence.xml persistence.xml.backup_rku

Esmagar o ficheiro persistence.xml com o ficheiro mysql_persistence.xml:

# cp mysql_persistence.xml persistence.xml

Em seguida editar o ficheiro persistence.xml  e configurar utilizador e password da ligação ao MySQL que instalamos anteriormente:

#vi persistence.xml
 
<property name=”openjpa.ConnectionDriverName” value=”org.apache.commons.dbcp2.BasicDataSource” />
<property name=”openjpa.ConnectionProperties”
value=”DriverClassName=com.mysql.jdbc.Driver
, Url=jdbc:mysql://localhost:3306/openmeetings?autoReconnect=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;cha$
, MaxActive=100
, MaxWait=10000
, TestOnBorrow=true
, poolPreparedStatements=true
, Username=openmeetings
, Password=openmeetigns” />
<property name=”openjpa.jdbc.SynchronizeMappings” value=”buildSchema” />
<property name=”openjpa.Log” value=”DefaultLevel=WARN, Runtime=INFO” />
Ok, now you are very close to finalize Apache Openmeetings server configuration.

Navegar para o diretório /openmeetings e executar o script red5.sh:

# cd /openmeetings
# ./red5.sh

Finalmente e após o script executar ativar o servidor de http de backend, e garantir que o mesmo arranque on-boot.

# service httpd start
# chkconfig httpd on

Finalmente podemos ir a nossa webgui (a correr na porta 5080) e configurar a app em si e configurar de uma forma totalmente straight forward.


  Como é possível ver, toda a configuração é bastante simples, bastando apenas garantir que as credenciais que configuramos inicialmente batem certo com as que iremos utilizar dentro da aplicação.

Finalmente estamos prontos para utilizar esta excelente aplicação:

Nota: Relembro que É IMPORTANTE que as versões sejam coerentes entre as apresentadas e upgrades possíveis. Este post foi testado com as versões apresentadas.

Concluindo este post, esta ferramenta apresentada tem funções empresariais, perfeitamente corporativas, é apoiado por uma das melhores documentações que tenho visto nos últimos temos, bem a imagem dos outros projetos que a Apache Foundation fomenta.

Em termos de suporte, existem mecanismos de suporte pago, com SLA associado caso seja um pré requisito vosso e caso prefiram um formato totalmente gratuito, um sistema aberto de bugtrack habitualmente rápido nas suas respostas caso algum problema venha a surgir.

Irá certamente poupar custos em relação a plataformas publicas de conferencia (como o webex), e sobretudo aumentará de uma forma considerável a segurança da vossa informação e o controle sobre a mesma.

Caso tenham alguma duvida, estou como sempre disponível para vos auxiliar.
Sabem onde me podem encontrar.

Até ao próximo post!

Um abraço!
Nuno