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&useUnicode=true&createDatabaseIfNotExist=true&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