Evolution

Quem trabalha com Linux no meio empresarial tem sempre dificuldade em encontrar uma boa alternativa ao Outlook para o email corporativo quando o servidor é exchange. As alternativas são poucas, com muitos truques para funcionar e a fiabilidade e performance não é muita quando comparada com o Outlook. Os clientes de email “clássicos” mais conhecidos em Linux são o Thunderbird e o Evolution. Este último sempre foi considerado muito pesado e lento pelo que o “rei” tem sido o Thunderbird, principalmente graças à comunidade que o suporta.

Durante alguns anos trabalhei com Thunderbird mas… recentemente experimentei o Evolution, com o add-on para exchange. A simplicidade com que configurei a minha conta corporativa, o desempenho e fiabilidade que fui encontrando dia após dia convenceram-me e não olhei para trás.

Para configurar o Evolution em Ubuntu basta instalar os seguintes pacotes:
sudo apt-get install evolution evolution-ews

Em seguida podem abrir o Evolution e a primeira janela deverá aparecer assim:
Aqui podem inserir o vosso nome e emailNo server type escolhem “Serviços web do Exchange”, inserem o username de domínio, o URL do exchange (perguntem ao admin da vossa empresa caso não saibam) e cliquem em “Fetch URL”.  Deverá pedir a palavra-passe:Em seguida podem ajustar algumas opções e fazer a sincronização da GAL (lista de emails do domínio)E terminam com o nome que querem dar à caixa de correio Podem concluir o setup. Se tudo correu bem vão começar a aparecer os vossos emails, contactos, agendas e tarefas.

Para configurar ou alterar mais opções (assinaturas, out-of-office, etc) podem sempre ir a Editar->Preferências

Não tenho dúvidas em afirmar que este é actualmente o melhor cliente de email para exchange. Sem grandes complicações ficamos com tudo o que o Outlook nos oferece, seja email, contactos, agenda ou tarefas (recursos partilhados também funcionam).

Não esquecer de predefinir o Evolution como ferramenta de email e calendário nas definições do vosso sistema.

Thunderbird no Exchange

thunderbird

Se há aplicação onde a Microsoft é rainha é na aplicação cliente de e-mail para servidores Exchange, o Outlook.
Em Linux não temos muitas alternativas para usar em pleno as potencialidades do Exchange, não tanto no acesso ao e-mail mas sobretudo quando queremos usar os serviços corporativos de agenda ou livro de endereços de email.
Em resumo, enquanto não temos o Office da Microsoft nativo para Linux ou usamos o ambiente via navegador (webmail) ou… bom temos como salvação o todo-poderoso Thunderbird.

Para nos ligarmos ao email basta um acesso IMAP. As configurações dependem de como o administrador de sistemas definiu os acessos mas vamos partir do princípio que o nosso domínio é papimigas.com e o acesso ao servidor exchange é exchange.papimigas.com. A conta a configurar é utilizador@papimigas.com.
No Thunderbird adicionamos uma nova conta:
thunder1Clicamos em Continue e clicamos novamente em Manual config.
Preenchemos os campos necessários:
thunder2Ao clicar em Done deveremos ter acesso ao nosso email.

Para ter acesso ao calendário e livro de contactos corporativo começamos por instalar o add-on lightning.
No Thunderbird vamos a tools->Add-ons e procuramos por lightning
thunder3No fim temos de reiniciar o Thunderbird.
Em seguida instalamos o add-on exchangecalendar que podemos obter nesta página. Depois de feito o download, para o instalarmos voltamos a tools->Add-ons e clicamos em Extensions. Clicamos na roda dentada e escolhemos Install add-on from file:
thunder5No aviso que nos aparece é seguro prosseguir e clicamos em Install:
thunder6No fim temos de reiniciar novamente o Thunderbird.
Já com tudo o que precisamos instalado e activo clicamos em Events and Tasks -> Calendar. Em seguida clicamos com o botão direito do rato conforme a figura e escolhemos New Calendar:
thunder4Escolhemos a opção On the Network:
thunder7Na janela seguinte escolhemos a opção Microsoft Exchange:
thunder8Em seguida escrevemos o nosso nome e escolhemos a nossa conta de email:
thunder9Agora inserimos o url do nosso exchange e a nossa autenticação:
thunder10Muita atenção ao Server URL. Deverá respeitar o modelo https://caminho_do_exchange/ews/exchange.asmx
No fim verificar a configuração clicando em Check server and mailbox. Deverá aparecer uma caixa a solicitar a palavra-passe. Não esqueçam de seleccionar a caixa para guardar a palavra-passe.

Se a palavra-passe não for aceite é porque os campos Username e Domain name não estão de acordo com as configurações no servidor. Podem ter que fazer alguns ajustes, do género escrever só o nome de utilizador e sem nome de domínio, o email completo no campo do utilizador, etc. Isto vai depender da configuração no lado do servidor pelo que não desistam à primeira e perguntem ao vosso admin de domínio qual a forma de se ligarem.

Com o calendário configurado falta o acesso ao livro de endereços, também conhecido por GAL.
Para o configurar vamos a Tools->Address Book. Clicamos em Add Exchange contact folder:
thunder11Preenchemos os campos necessários:
thunder12Mais uma vez testem no fim os dados inseridos. Se tudo correr bem já podem aceder à lista global de contactos da empresa.

Algumas configurações importantes podem ser ajustadas indo a Edit->Preferences->Calendar

Há outros programas em Linux que também se ligam a um Exchange server mas na minha opinião nenhum funciona tão bem como o Thunderbird 🙂

bash-completion

Quando usamos a nossa consola em Linux temos um ajudante fabuloso que nos completa os comandos. Pomos esse ajudante em acção ao carregar a tecla TAB  depois de escrevermos as primeiras letras dos comandos que pretendemos inserir.

E quando não temos esse ajudante activo? Muito fácil. Na consola escrevemos:

sudo apt-get update && sudo apt-get install bash-completion

No fim copiamos para o nosso perfil:

cat /etc/skel/.bashrc >> ~/.bashrc

Fazer logout e da próxima vez já temos o nosso bash auto-complete activo 🙂

O comando History

Para quem não conhece, o comando “history” é um verdadeiro salva-vidas na administração de sistemas linux. Permite saber os comandos inseridos por ordem de execução, repetir comandos ou aproveitar parte deles.
Para testarem basta escrever na consola
history
history

Há várias opções mas destaco três:
1- history | grep “xpto”
Este comando é bastante útil quando queremos procurar um comando que contenha uma determinada palavra ou expressão
2- history 10
Para ver os últimos 10 comandos (podem usar o número que quiserem)
3- export HISTTIMEFORMAT=”%F %T”
Por predefinição o comando history não vem com a data e hora de execução. Mas é possível activar isso com este comando.

Como em qualquer comando, podem sempre ver as opções disponíveis acrescentando a flag –help ou ver o manual com man history.

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!

Espaço livre em disco

hard-drive

Por vezes encontramos uma máquina Linux que por qualquer motivo está sem espaço livre no(s) disco(s). Como detectar qual o directório responsável por tal efeito?
Há várias abordagens possíveis mas fica aqui uma dica por onde começar.

Executar os comandos como root ou com sudo antes do comando.

Primeiro vamos para a raiz do nosso Linux com um cd / e executamos o comando df -h (df de disk free).
Vamos ter uma listagem de todas as nossas partições e respectivo espaço total, ocupado e livre.

Em seguida executamos o comando du -sh * (du de disk utility),
Este comando é fantástico, dá-nos o espaço ocupado por cada pasta. Vemos qual é a pasta com maiores dimensões, entramos nela com o comando cd nome_da_pasta e voltamos a executar du -sh *
Em cada sub-pasta que entramos este comando apresenta apenas o conteúdo dessa sub-pasta.

E pronto, quando encontrarmos o “culpado” do espaço ocupado basta (re)mover o que está a mais.

Mesmo que não tenham o disco cheio experimentem!

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

VPN PPTP com UFW

UFW

UFW é um must-have em linux, nas distribuições baseadas em Debian&Ubuntu.

É uma firewall descomplicada, para quem não quer ou não pode perder muito tempo. De fácil instalação e configuração, funciona com qualquer desktop-environment. Podem ver a instalação e configuração básica aqui.

Desde o Kernel 3.18 que com a firewall ativa a ligação VPN PPTP não funciona. Mas é fácil contornar a situação. Na consola abrimos o seguinte documento:

sudo nano /etc/ufw/before.rules

Procurem as seguintes linhas e acrescentem a última, a bold:

# quickly process packets for which we already have a connection
-A ufw-before-input -m state –state RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -m state –state RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-input -p 47 -j ACCEPT

Um restart à firewall:

sudo /etc/init.d/ufw restart

E pronto, já temos VPN 🙂

SSH ao Raspberri

Um dia destes ao falar com um amigo meu que tinha comprado um raspberry, perguntei todo entusiasmado o que já tinha feito quando ele triste me responde que “dá muito trabalho escrever o comboio de comandos que aparecem nos artigos!”
Bom, sei que isto parece estranho de dizer mas os maluquinhos de Linux são tão preguiçosos como os outros e fazem tudo para facilitar a vida no dia-a-dia!
Para  acedermos a um Raspberry e inserir os comandos que vemos na Internet não precisamos de escrever no teclado local. Podemos fazer isso com um “copiar & colar”, a partir do nosso computador pessoal, usando para isso um protocolo de nome SSH. Aliás, podemos fazer tudo como se tivéssemos ligados directamente ao Raspberry desde que este esteja ligado pelo menos com o cabo de rede, no mesmo Router onde o nosso computador pessoal está ligado. A única informação que precisamos é de saber qual o IP do nosso Raspberry. Para isso basta ver no arranque do nosso Raspberry o IP:
raspberry_piNeste caso é o IP 192.168.1.15.

Também é possível ver com o comando ifconfig:
raspberry_pi1Neste caso é o IP 192.168.1.70

Assim, já temos como aceder ao nosso Raspberry. Vamos imaginar que o IP do nosso Raspberry é o 192.168.2.100 e que o utilizador é o “pi“.
Em Linux ou em OSX abrimos uma consola e escrevemos “ssh pi@192.168.2.100“. Se o sistema conseguir chegar ao nosso Raspberry, vai ser pedida a password (por defeito é Raspberry). E pronto, é como se estivéssemos ligados directamente no nosso Raspberry!

Em Windows podemos usar um programa muito simples mas poderoso, de nome Putty. O programa não exige instalação e é um só ficheiro.
putty-defaultNo hostname escrevemos o IP do nosso Raspberry e clicamos em Open. Abre-se uma janela de consola onde inserimos o utilizador e password. E pronto! Já podemos copiar os comandos dos milhares de projectos que há pela Internet para o nosso Raspberry, sem ter que os escrever. Para “colar” no Putty basta clicar com o botão direito do rato na consola.

Bons projectos! 🙂

Raspberry & Cloud

Recebi há dias a mais recente versão do Raspberry Pi! Mais potente e melhor equipado, o novo Raspberry 2 Modelo B destaca-se da anterior versão por ter um ARMv7 Quad core @ 900MHz, 1GB RAM, entre outras caracteristicas. O fabricante garante 6x mais performance relativamente à versão anterior.

Com a minha habitual euforia de brinquedo novo na bancada, tive que decidir qual o primeiro projeto para testar o bicho…
Dispensa apresentações. É das melhores senão a melhor solução open-source para a nossa “nuvem” privada. Já vai na versão 8.

Vamos então para o nosso plano de trabalho:
HARDWARE
1 Raspberry com cartão microSD de 8GB Classe 10
1 Pen ou Disco externo USB para armazenamento de dados
SOFTWARE
Sistema operativo Raspbian
Instalação de LAMP (Apache + MySQL + PHP)
Instalação e configuração inicial do ownCloud

Vou partir do princípio que o raspberry está com a versão Raspbian instalada, configurada e atualizada. O site do Raspberry tem bons tutoriais para esse efeito.

1- Preparação da PEN/HDD USB com o seguinte comando:
sudo fdisk -l
Na resposta deverá aparecer alguma coisa tipo:
Device Boot           Start         End           Blocks      Id  System
/dev/sda1   *        2048    30297215    15147584    c  W95 FAT32 (LBA)
Poderá aparecer sdb, sdc, etc. No meu caso é uma PEN USB de 16GB.
Vamos formatar  o nosso /dev/sda1 com EXT4, um formato nativo de Linux:
sudo mkfs.ext4 /dev/sda1
Em seguida criamos a pasta onde a informação da nossa nuvem vai ficar guardada e montamos a nossa PEN/HDD USB:
sudo mkdir /cloud
sudo mount /dev/sda1 /cloud
Podem alterar o nome da pasta /cloud para o que quiserem.
Damos as permissões corretas à pasta criada (para depois o ownCloud funcionar bem):
sudo chown www-data:www-data /cloud
Para tornar este mount permanente fazemos o seguinte:
sudo nano /etc/fstab
Deverá aparecer a seguinte informação:
proc                       /proc           proc    defaults                 0       0
/dev/mmcblk0p1  /boot            vfat    defaults                 0       2
/dev/mmcblk0p2  /                   ext4    defaults,noatime  0       1
É só acrescentar:
/dev/sda1              /cloud       ext4    defaults               0       2

Pronto, o nosso raspberry já pode reiniciar.

2- Vamos configurar agora o nosso raspberry como um servidor LAMP (Apache + MySQL + PHP) e instalar o necessário para a nossa “nuvem” pessoal:
sudo apt-get install apache2 mysql-server php5 php-pear php5-mysql php5-gd php5-curl
Na instalação do MySQL o sistema vai pedir-nos para definirmos uma password de root (não tem nada a haver com o root de sistema).

3- Vamos tornar o nosso MySQL mais seguro:
sudo mysql_secure_installation
Caso tenham dúvidas vejam um bom exemplo aqui.
Vamos aproveitar para criar um utilizador MySQL e a base de dados para o ownCloud:
mysql -uroot -p
Insiram a password definida na instalação do MySQL. Criamos primeiro o utilizador:
CREATE USER ‘username’@’localhost’ IDENTIFIED BY ‘password’;
Alterem o username e a password para o que quiserem. Não esqueçam os ‘ e o ; no fim! Agora vamos criar a base de dados e dar permissões ao user criado:
CREATE DATABASE cloud_db;
GRANT ALL PRIVILEGES on cloud_db.* to username@localhost;
FLUSH PRIVILEGES;
exit
Podem (e devem) alterar o nome da cloud_db para o que quiserem.
E pronto. Vamos para a etapa seguinte!

4- Vamos agora ativar o SSL. Começamos por gerar uma chave:
sudo mkdir /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 1001 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
Podem alterar os dias para o numero que quiserem. Respondam às perguntas seguintes. Por fim, vamos editar o ficheiro seguinte:
sudo nano /etc/apache2/sites-available/default-ssl
Logo por baixo de ServerAdmin coloquem
ServerName nome_da_maquina.com:443
O nome nome_da_maquina.com é o FQDN. Em caso de dúvida coloquem server.lan.
Mais abaixo, alterem o caminho dos certificados:
SSLCertificateFile    /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Salvamos o ficheiro e finalizamos com os seguintes comandos:
sudo a2ensite default-ssl
sudo a2enmod ssl

sudo service apache2 reload
Podem testar abrindo o browser no https://ip_do_raspberry

5- Descarregamos a versão mais recente do ownCloud (à data deste post), descompactamos o ficheiro e copiamos para a pasta www:
wget https://download.owncloud.org/community/owncloud-8.0.0.tar.bz2
tar -xvf owncloud-8.0.0.tar.bz2
sudo rm  /var/www/*
sudo cp owncloud/* /var/www/ -r

Corrigimos as permissões:
sudo chown -hR www-data:www-data /var/www/
(este comando permite ao apache ter controlo total da pasta do ownCloud)

Vamos então configurar o ownCloud:
https://ip_do_raspberry
Se tudo correu bem vão encontrar o seguinte ecrã, onde poderão criar um utilizador de administração e inserir a informação previamente criada:
E pronto, já podem começar a configurar a vossa nuvem pessoal!Podem começar por configurar as opções gerais, no menu de administração:
Boa nuvem! 🙂