Guacamole - Acesso remoto de qualidade

Guacamole é uma aplicação web HTML5 que fornece acesso a ambientes de desktop usando protocolos de desktop remoto (como o VNC ou RDP). Escrito em JavaScript e usando apenas HTML5 e outros padrões, a parte do cliente do Guacamole requer nada mais do que um navegador moderno ou dispositivo habilitado para web ao acessar qualquer um dos desktops. Historicamente, Guacamole era um cliente de VNC HTML5, e antes disso, um cliente Telnet JavaScript chamado RealMint ( “RealMint” é um anagrama para “terminal”). Neste post utilizaremos o Debian 8 64 bits e servidor tomcat 7.

Neste post realizaremos a baixa do pacote diretamente do site do projeto, assim como, sua instalação e configuração. Acompanhe os passos abaixo.

Instalação

Inicialmente precisamos instalar o servidor tomcat7, segue comando de instalação.

# apt-get install tomcat7

Após instalar o servidor  Apache Tomcat, baixaremos o source do Guacamole Server.

# wget -c http://sourceforge.net/projects/guacamole/files/current/source/guacamole-server-0.9.9.tar.gz

Descompactando o arquivo baixado, com o comando abaixo:

# tar -xzvf guacamole-server-0.9.9.tar.gz

Agora instalaremos as dependências necessárias:

# apt-get install build-essential libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev libossp-uuid-dev

Após instalar as dependências, entre na pasta do Guacamole Server que foi descompactada:

# cd guacamole-server-0.9.9

Iniciaremos agora a configuração, compilação e instalação do Guacamole Server :

# ./configure --with-init-dir=/etc/init.d/
# make && make install
# ldconfig

Finalizamos por aqui o Guacamole Server.

Guacamole Cliente

Ao concluir a instalação do Guacamole Server, partiremos para a configuração do Guacamole cliente, onde temos dois métodos de configurar:

Método 01

Para começar baixe o source do Guacamole cliente:

# wget -c http://sourceforge.net/projects/guacamole/files/current/source/guacamole-client-0.9.9.tar.gz

Descompacte o arquivo baixado com o comando abaixo:

# tar -xzvf guacamole-client-0.9.9.tar.gz

Acesse o arquivo descompactado:

# cd guacamole-client-0.9.9

Agora para compilar será necessário instalar a ferramenta de compilação para projetos java, o Maven e também o Java JDK. Execute o comando abaixo:

# apt-get install maven openjdk-7-jdk

Após a instalação do Mave, execute o comando abaixo para iniciar a compilação.

# mvn package

Após a compilação, copie o arquivo guacamole-0.9.9.war, gerado pela compilação para a pasta webapps do Tomcat. Execute o comando abaixo:

# cp guacamole/target/guacamole-0.9.9.war /var/lib/tomcat7/webapps/

Método 02

No primeiro método precisamos compilar o source do Guacamole cliente para gerarmos o binário guacamole-0.9.9.war, agora neste método baixaremos a aplicação web guacamole-0.9.9.war disponibilizado pelo projeto. Execute o comando abaixo para realizar o download.

# wget -c http://sourceforge.net/projects/guacamole/files/current/binary/guacamole-0.9.9.war

Copie ou mova o arquivo baixado para a pasta Webapps do Tomcat, segue comando:

# cp guacamole-0.9.9.war /var/lib/tomcat7/webapps/guacamole.war

Pronto! Esse foi o segundo método, fácil não? Agora precisamos criar a pasta de configurações do Guacamole, execute o comando abaixo:

# mkdir /etc/guacamole

Acesse a pasta criada e crie o arquivo guacamole.properties, onde definiremos: Porta, Localização dos jars e arquivo xml de permissão de acesso.

# cd /etc/guacamole/
# touch /etc/guacamole/guacamole.properties

Abra o arquivo:

# vim /etc/guacamole/guacamole.properties

E adicione o conteúdo abaixo:

# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port: 4822
# Location to read extra .jar's from
lib-directory: /var/lib/tomcat7/webapps/guacamole/WEB-INF/classes
# Authentication provider class
auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider
# Properties used by BasicFileAuthenticationProvider
basic-user-mapping: /etc/guacamole/user-mapping.xml

Precisamos criar uma pasta oculta chamada .guacamole em que linkaremos com o arquivo de configuração guacamole.properties para que o tomcat tenha acesso as configurações. Segue os comandos:

# mkdir /usr/share/tomcat7/.guacamole/
# ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat7/.guacamole/

Agora configuraremos o acesso de usuários e conexões remota aos hosts. Crie o arquivo user-mapping.xml com o comando abaixo:

# touch /etc/guacamole/user-mapping.xml

Abra o arquivo criado:

# vim /etc/guacamole/user-mapping.xml

E adicione o conteúdo abaixo:

<user-mapping>
<authorize username="jackson" password="123">
<!-- First authorized connection -->
<connection name="VNC">
<protocol>vnc</protocol>
<param name="hostname">192.168.1.110</param>
<param name="port">5901</param>
<param name="password">123456</param>
</connection>
<!-- Second authorized connection -->
<connection name="RDP">
<protocol>rdp</protocol>
<param name="hostname">192.168.1.111</param>
<param name="port">3389</param>
<param name="password">123456</param>
</connection>
</authorize>
</user-mapping>

Observe no conteúdo adicionado anteriormente, temos na segunda linha o usuário e senha que terá acesso pelo navegador e na TAG os hosts que será acessado remotamente. Precisamos das bibliotecas na pasta /lib, execute o comando abaixo para criar links de acesso:

# ln -s /usr/local/lib/libguac.so\* /lib
# ln -s /usr/local/lib/libguac-client-vnc.so\* /lib/

E por fim, inicie o Tomcat e o Guacamole:

# /etc/init.d/tomcat7 start
# /etc/init.d/guacd start

Acesse agora o Guacamole pelo navegador http://ipdoseuservidor:8080/guacamole/, troque o ipdoseuservidor conforme ip do seu servidor, mas mantenha a porta 8080.  Ao acessar será solicitado o usuário e senha, que foram definidos no arquivo user-mapping.xml.

Veja na imagem abaixo as conexões existentes:

Quando conectado um vez, um thumbnail ficará disponível nas conexões recentes (Acho muito legal isso!). Para adicionar mais hosts, adicione-o no arquivo user-mapping.xml fornecendo uma nova tag

<conection name="host">
.

Bom pessoal é isso, caso tenha alguma dúvida deixe nos comentários. Para conhecer mais sobre o projeto e novas funcionalidades acesse http://guacamole.incubator.apache.org.