SparkWeb chat online

ignite_dl_spark

Um dos artigos do meu blog mais visitados é sem dúvida o Raspberry social server, que permite ter varias contas IM online simultaneamente, com um único login. No entanto a Ignite tem mais uns projectos interessantes para o nosso Raspberry, dos quais destaco o SparkWeb.

SparkWeb é uma simples página de Chat, suportada pelo servidor Openfire.

Começamos? 🙂 Embora pra consola

Precisamos de um servidor Ubuntu ou Debian, (testei com 1GB Ram). No caso do Raspberry2 já vem com Debian na imagem oficial Raspbian. Os comandos seguintes vão funcionar tanto em Ubuntu como em Debian.

Vemos se o sistema está totalmente atualizado
sudo apt-get update && sudo apt-get dist-upgrade
e reiniciamos o sistema.

Verificamos se temos o Java7 instalado:
java -version
Caso não esteja instalado executamos:
sudo apt-get install openjdk-7-jre-headless

De seguida instalamos o Apache
sudo apt-get install apache2

Criamos uma pasta onde vamos realizar alguns Downloads:
mkdir downloads
cd downloads

Descarregamos o Openfire:
wget http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3.10.2_all.deb -O openfire_3.10.2_all.deb
e instalamos:
sudo dpkg -i openfire_3.10.2_all.deb

Descarregamos o SparkWeb:
wget http://www.igniterealtime.org/downloadServlet?filename=sparkweb/sparkweb_0_9_0.zip -O sparkweb_0_9_0.zip
descompactamos e colocamos no sítio:
unzip sparkweb_0_9_0.zip && sudo cp sparkweb/* /var/www/html/
e por fim corrigimos permissões:
sudo chown -hR www-data:www-data /var/www/html

Agora podemos configurar o nosso servidor Openfire via web:
http://ip_da_maquina:9090

Escolhemos a linguagem preferida:
Capture01Escolhemos o nome do domínio e criamos uma chave de encriptação
Capture02Decidimos que tipo de base de dados vamos usar:
Capture03Escolhemos o tipo de autenticação:
Capture04Definimos a conta de admin
Capture05E terminamos a configuração. Simples, não?
Capture06Autenticamo-nos
Capture07Na consola de admin vamos a Servidor  > Configurações do Servidor > Registro&Login e desactivamos o Login anónimo
Capture08 Em seguida criamos um ou mais utilizadores
Capture09Vamos a Grupos e criamos um
Capture10Na aba Conferência criamos uma nova SalaCapture11Vamos a Plugins > Plugins disponíveis e instalamos o Client Control 
Capture12Agora vamos a Servidor > Gerenciamento de cliente > Marcadores… e adicionamos a sala que criámos na aba Conferência. Não esquecer de adicionar todos os utilizadores e o Auto-ingressar:
Capture13E pronto, já podemos usar a nossa sala de chat via web, via http://ip_do_servidor/SparkWeb.html
Capture20Autenticamo-nos e deveremos entrar automaticamente na sala criada:
Capture21E pronto! Para o nosso servidor ficar diponível para o mundo basta reencaminhar as portas TCP 80 e 5222 no nosso router. Neste caso o IP a usar será o nosso IP externo ou um endereço dinâmico tipo no-ip.com. Já podemos convidar os nossos amigos e divertirmo-nos por uma boas horas 🙂

Algumas considerações finais:
– O Setup apresentado tem apenas o mínimo de configurações para o objectivo apresentado, não sendo no entanto o ideal para um ambiente de utilização intensa.
– Há mais algumas configurações na consola de admin que vocês devem explorar. Caso queiram há algumas alterações que podem fazer no ficheiro /var/www/html/SparkWeb.html, ao nível do IP e porta de comunicação.
– Podem usar um cliente para se ligarem, tipo Pidgin ou Spark.
– Por fim, há outros sistemas mais recentes e mais completos mas também mais complexos para implementar, Este sistema é simples e prático e com algum conhecimento pode ser bem robusto para um ambiente de produção. E corre perfeitamente num Raspberry2 🙂

Cumprimentos linuxianos

Anúncios

Raspberry Openfire Social Server

Com o passar dos anos todos vamos acumulando várias contas de conversação on-line. Os mais “antigos” (como eu) terão começado no IRC, depois no MSN, Google talk e mais recentemente no Facebook chat.

Bom, isto dá uma dor de cabeça na hora de configurar um novo pc ou telemóvel, para além de ter que lembrar palavras-passe e usar vários programas. E porque não ter uma única conta em que as várias contas de chat já estão configuradas e na hora de se configurar um novo dispositivo basta uma simples configuração? Muitos dirão: “Isso já há!” Temos o EBuddy ou comercialmente o fantástico Trillian. É verdade mas isso obriga a manter as nossas contas nas mãos de terceiros, o que de certo modo põe a nossa privacidade em risco. E se tivéssemos um servidor em casa que fizesse o mesmo?

Quando olho para o meu Raspberry Pi surge-me logo o seguinte pensamento: “O que vou tentar fazer hoje contigo?” Pois bem, desta vez o meu RasPi ficou social 😀

Há uma pérola no Open-Source de seu nome OpenFire que nos vai ajudar nesta missão!

Este projecto é válido para qualquer máquina e sistema compatível com OpenFire mas parto do princípio que o vão fazer num Raspberri Pi Mod. B, com o mais recente Raspbian. O baixo consumo do RasPi, tamanho pequeno e razoável performance tornam-no o equipamento ideal para o efeito. Também presumo que vão ter um serviço de DNS dinâmico configurado e pelo menos a porta 5222 aberta no router para o vosso RasPi.

Começamos então por desinstalar o Java da Oracle caso esteja instalado (no Raspbian mais recente está!):

sudo apt-get purge oracle-java7-jdk

Em seguida instalamos o Java-JRE:

sudo apt-get install default-jre

Por fim fazemos download do pacote de instalação do OpenFire:

wget -O openfire_3.8.2.deb  http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3.8.2_all.deb

E instalamos:

sudo dpkg -i openfire_3.8.2.deb

… Já está instalado! Vamos configurar?

Temos  que aceder por browser ao nosso RasPi. Abrimos o navegador e escrevemos:

http://raspberry_ip:9090

openfire

Se tudo correu bem vamos encontrar uma página onde escolhemos a linguagem de configuração Tem Português Brasil que foi a minha escolha. Nas páginas seguintes vamos configurar o servidor. Podem usar os valores que são apresentados por defeito em caso de dúvida.

Posso-vos dizer que no meu RasPi, após a ultima página (onde defini a palavra-passe do admin) tive que aguardar uns bons 20 minutos. Altura para um café 😛

Por fim deparamo-nos com a seguinte página:

OpenFire1

Como configurar?

OpenFire1

1 – Configurar o utilizador (tab Usuários/Grupos) e se for para mais que um utilizador convém criar um grupo também para que possam conversar directamente (quem quiser mais protecção pode até encriptar a conversa)

2 – Ir ao tab Plugins e ativar o Kraken IM Gateway

3 – Ir ao tab Servidor e no sub-tab  Gateways realizar duas tarefas:

a) Nos Transports activar os protocolos pretendidos:

OpenFire2

b) Nos Registrations adicionamos as nossas contas sociais:

OpenFire3

usuário (JID) – Utilizador criado no ponto 1
gateway – Protocolo pretendido
usuário – Utilizador da conta externa (Gmail, Facebook, etc)
senha – Palavra-passe da conta externa
apelido – Nome a apresentar para a conta externa (nickname)

E pronto! Podemos ligar-nos ao nosso servidor com um IM-client. O protocolo usado será o XMPP.

Relativamente a portas do router que este servidor usa serão:
TCP 7777 – IM file transfer
TCP 7443 – SSL HTTP Bind
TCP 7070 – HTTP Bind
TCP 5269 – S2S port
TCP 5223 – SSL XMPP Jabber
TCP 5222 – TLS XMPP Jabber
TCP 9090 – Gestão Backoffice
TCP 9091 – Gestão Backoffice SSL
TCP 3478-3479 – STUN port
TCP 1935 – Red5 RTMP port
TCP,UDP 3000-3039 – RTP port
TCP,UDP 5060-5099 – SIP ports

A mais importante (essencial mesmo!) será a 5222. A porta 7777 será necessária se quiserem trocar ficheiros com os outros contactos. Não aconselho mais nenhuma a não ser que precisem mesmo 🙂

Para desktop costumo usar o Pidgin (Em Linux, Windows ou OSX). Para o Android uso o Xabber mas podem usar qualquer um que suporte o protocolo XMPP.
Como configurar?
Fácil, Adicionam uma conta XMPP, no campo de utilizador escrevem o criado_no_ponto1@DNS_dinamico e respetiva palavra passe. Por exemplo, eu criei um utilizador joao e o DNS dinâmico é mensageiro.dyndns.org. No nome de utilizador coloco joao@mensageiro.dyndns.org. 
Após alguns segundos o programa vai perguntar se aceitam o certificado e os vossos contactos começarão a aparecer!