Raspberry chat encrypted


Todos precisamos de vez em quando de uma ferramenta para uma conversa rápida, anónima e sem grandes configurações. Ao navegar pela Internet encontrei vários serviços de chat que me ofereciam tudo isso mas houve um que me agradou mais.
O ChatCrypt é um serviço de chat simples e directo.

Escolhemos um nome para a sala, um utilizador e uma palavra-chave. É aberta uma nova janela de chat.
Cada pessoa que quiser entrar só tem de colocar o nome da sala e palavra-passe correctas. Quem tentar entrar na sala sem ter a password correcta, não vai conseguir ler o que os restantes membros escrevem.

Isto porque, de acordo com os autores do chat a encriptação ocorre antes da nossa mensagem sair do navegador que estamos a usar, utilizando para isso o algoritmo AES-256 no modo CTR com uma palavra-passe especificada pelo utilizador.
Os criadores foram ainda mais longe e permitem que possamos usar este serviço numa pagina externa à do serviço, como por exemplo numa página gerida por nós.
Lembrei-me logo do Raspberry 🙂

Num Raspbian criado de fresco apenas tive que instalar o Apache:
sudo apt-get install apache2

Depois Criei um ficheiro dentro da pasta /var/www/html/
nano /var/www/html/chat.html

Inseri o seguinte conteúdo:

https://www.chatcrypt.com/iframe.php

Salvei o ficheiro e acedi ao raspberry:
http://ip_do_raspberry/chat.html

Experimentem!

 

Rocket Chat

raspberry-logo

Rocket Chat é um serviço de conversação online, mais uma fantástica pérola do mundo open-source.

Destaco (entre muitos) os seguintes serviços:

  • Conversação online
  • Video-chamada
  • Envio de ficheiros
  • Mensagens de voz

Ao nível de cliente é suportado pelos principais sistemas operativos Linux, Windows e OSX. Também tem cliente nativo para Android e IOS. Podem ver uma demonstração aqui.

Ao nível de servidor, obviamente pode ser instalado num Linux. Vamos usar o nosso Raspberry? 🙂

Para o efeito vou usar um Raspberry Pi 2, com um cartão SD 8GB classe 10.
O sistema operativo é o Ubuntu server, instalado de fresco e actualizado.

Primeiro actualizamos e instalamos algum software adicional:
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install git curl graphicsmagick python build-essential

Vamos agora instalar e configurar a nossa base de dados, usando para o efeito o Mongo:
sudo apt-get install mongodb

Iniciamos a configuração do nosso Mongo:
mongo admin

Configuramos o administrador (alterem o “admin” e “1234“) :
db.createUser({ user: “admin”, pwd: “1234”, roles: [“userAdminAnyDatabase”] })
auth = true
setParameter = enableLocalhostAuthBypass=0

Configuramos a base de dados e o seu administrador para o nosso chat:
use chat_db
db.createUser({ user: “user”, pwd: “1234”, roles: [“readWrite”] })
exit

Em seguida obtemos o METEOR para o ARM:
cd /tmp
git clone –depth 1 https://github.com/4commerce-technologies-AG/meteor.git
meteor/meteor -v

Hora para tomar um café 🙂

No fim do processo vamos então criar uma pasta onde o nosso Rocket chat vai ser instalado:
sudo mkdir /opt/chat
cd /opt/chat
sudo curl https://cdn-download.rocket.chat/build/rocket.chat-pi-develop.tgz -o rocket.chat.tgz
sudo tar zxvf rocket.chat.tgz

Movemos para a nossa nova pasta o Meteor:
sudo mv /tmp/meteor /opt/chat/

E agora instalamos as dependências e finalmente o nosso chat:
cd bundle/programs/server
/opt/chat/meteor/dev_bundle/bin/npm install
cd /opt/chat/bundle

Agora, numa só linha:
PORT=3000 ROOT_URL=http://raspberry_IP:3000 MONGO_URL=mongodb://user:1234@localhost:27017/chat_db /opt/chat/meteor/dev_bundle/bin/node main.js

Após o processo entramos na página do nosso chat:
http://ip_do_raspberry:3000 (Podem alterar o numero da porta caso desejem)

Registem um utilizador que será automaticamente Admin do sistema.
Vão a Administration -> Email -> SMTP e configurem uma conta para envio de email.

E pronto! Temos o nosso Rochet.Chat a postos para a conversa. Podem instalar o cliente da Rocket.Chat ou usar a plataforma WEB.

Vamos agora arranjar um scrit para arrancar com o nosso chat server de uma forma mais fácil. Há várias maneiras de fazer isto pelo que fica aqui uma bastante fácil.  Vamos criar um ficheiro com o nome server.conf
cd /opt/chat/bundle
nano server.conf

Vamos inserir a seguinte informação:
 #!/bin/bash
export PORT=3000
export ROOT_URL=http://raspberry_IP
export MONGO_URL=mongodb://user:1234@localhost:27017/chat_db
/opt/chat/meteor/dev_bundle/bin/node main.js

Guardamos e damos permissões de executável:
chmod +x server.conf

Agora arrancamos com o nosso script com a ajuda do screen:
screen
cd /opt/chat/bundle
./server.conf

Após uns minutos temos o nosso servidor novamente no ar.
Para sair da sessão do screen carreguem as teclas Ctrl+a+d
Para voltar à sessão escrevam na consola:
screen -r
Mais informações do screen podem ver aqui.

Não esqueçam que esta instalação é básica e há questões relacionadas com segurança que deverão ser levadas em conta. Passwords fortes e uma firewall é o primeiro caminho a percorrer antes de abrir o nosso chat ao mundo. Outras opções serão apresentadas em futuros artigos.

Cumprimentos!

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