NTP Server no Raspberry

ntp-server

Uma boa função para  o nosso Raspberry é ser um servidor NTP na nossa rede local.
A sua configuração é bastante simples

Começamos por actualizar o sistema:
sudo apt-get update 
sudo apt-get dist-upgrade

Garantimos que o nosso Raspberry está na zona correcta:
sudo dpkg-reconfigure tzdata
(Escolher Europa e depois Lisboa)

Instalamos o NTP:
sudo apt-get install ntp

Editamos o ficheiro de configuração:
sudo nano /etc/ntp.conf

Primeiro comentamos os servidores existentes:
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
# pool 0.ubuntu.pool.ntp.org iburst
# pool 1.ubuntu.pool.ntp.org iburst
# pool 2.ubuntu.pool.ntp.org iburst
# pool 3.ubuntu.pool.ntp.org iburst

# Use Ubuntu’s ntp server as a fallback.
# pool ntp.ubuntu.com

Em seguida acrescentamos os portugueses:
# Servidores portugueses
server 2.pt.pool.ntp.org
server 1.europe.pool.ntp.org
server 0.europe.pool.ntp.org

Logo a seguir permitimos pedidos NTP apenas na nossa rede local:
# Permitir apenas a rede local
restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap
(Ajustar a rede para a vossa rede local)

Salvamos o ficheiro e reiniciamos o serviço NTP:
sudo service ntp restart

Verificamos o estado:
ntpq -p

Deveremos obter uma mensagem assim:
==============================================================================
+2.pt.pool.ntp.o 194.117.9.136 3 u 37 64 1 26.271 0.666 0.001
*1.europe.pool.n 81.2.117.235 2 u 36 64 1 55.100 1.474 0.001
+0.europe.pool.n 192.33.96.102 2 u 40 64 1 74.266 2.486 0.001

E pronto! Não esquecer de abrir a porta 123 UDP caso usemos uma firewall.

Grub boot

grub

Linux em geral e Ubuntu em particular usam o Grub para definirem e arrancarem o S.O. em condições. Permite arrancar com vários kernel diferentes ou até com distribuições Linux diferentes. O Grub também aceita outros S.O. como por exemplo o Windows. Caso o Windows já esteja instalado no nosso disco ao instalarmos o Ubuntu, este  vai detectar e guardar um cantinho no Grub para podermos continuar a usar o nosso Windows. Por omissão o Grub assume o Linux pelo qual foi configurado mas a ordem pode ser alterada!

Vamos olhar para a imagem. O Grub vai escolher a primeira linha sempre que arrancamos o PC mas podemos alterar.
No nosso Ubuntu abrimos um terminal e editamos o ficheiro seguinte:

sudo nano /etc/default/grub

Alteramos a linha GRUB_DEFAULT=0 para GRUB_DEFAULT=saved

Guardamos o ficheiro com Ctrl+x e Enter, Enter

Actualizamos as alterações no Grub:

sudo update-grub

E agora sim, podemos definir qual a linha que queremos para padrão no arranque. Basta contar de cima para baixo e a primeira de cima é a linha 0. Na figura o Windows é a 5. Basta executar no terminal:

sudo grub-set-default 5

Reiniciem e experimentem. Era a linha ao lado? Não faz mal, basta executar apenas o último comando com o numero correcto.

 

Pidgin tooltip

logo.text-big

Quem me conhece (informaticamente falando)  sabe que sou defensor do uso de software open-source, mesmo quando uso Windows ou OSX. O Pidgin é um programa que serve como cartão de visita do mundo open-source. Permite ter uma ou mais contas de conversação online, com o mesmo ou com protocolos diferentes. De origem já suporta bastantes protocolos mas podem acrescentar mais alguns (Lync ou Skype, entre outros). Podem ver a lista e instruções aqui. Funciona em qualquer sistema operativo, com maior ou menor dificuldade de instalação mas para Windows e distribuições Debian & família é super fácil instalar. Sem grande dificuldade tenho 2 contas de Skype, Lync, 2 contas de Google, Facebook e IRC, tudo num só sítio e ligadas com um único clique.

No meu Ubuntu de trabalho há (havia…) no entanto uma coisa que que sempre me irritou. Quando passo o rato por cima dos contactos, aparece sempre um balão de detalhes da conta (tooltip) horrível e desproporcional:

pidgin

Apesar de não haver uma opção directa para modificar ou desactivar este balão é muito fácil desactivar. Na consola criamos ou editamos o seguinte ficheiro:
nano ~/.purple/gtkrc-2.0

e acrescentamos a seguinte linha no fim do documento:
gtk-enable-tooltips = 0

Salvar com um Ctrl+X e reiniciamos o Pidgin. Acabaram-se os balões desproporcionais.

HTOP

htop_graph

Conhecem?

Há vários monitores de sistema na consola de Linux, mas de todos o que mais gosto é o htop. Corre em qualquer Linux recente. Para instalar em Debian/Ubuntu basta executar sudo apt-get install htop

Para executar na consola escrevemos sudo htop 🙂

Observem a informação que este programa dá. Não esqueçam que estão numa consola. Fabuloso, não é?
As opções estão no menu na parte de baixo da janela. Podem começar por alterar o ordenamento dos processos. Cliquem em F6, escolham MEM% e cliquem no Enter. Para eliminar um processo basta escolher um (com as setas) e carregar no F9.

Para sair carregar a tecla F10 🙂

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 🙂

Copiar e colar na consola

linux-shell

Em linux, a consola é um dos maiores bichos-papões e muita gente evita sempre que pode. No entanto é aí que tudo acontece!
Como quase tudo em Linux podemos personalizar e configurar a consola para melhor a usar. Há no entanto muitas configurações e teclas de atalho pré-definidas.
Uma das coisas que mais usamos em Windows é o famoso copiar-colar (Ctrl+C, Ctrl+V). Pois na consola em Linux este comando também existe mas com uma pequena diferença:

Copiar – Ctrl+Shift+C

Colar – Ctrl+Shift+V

Experimentem! Podem também alterar os atalhos  destes comandos mas não aconselho pois podem interferir com outros existentes.

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! 🙂

MySQL na CLI


MySQL é um sistema de gestão de base de dados, que usa a linguagem SQL. Parceiro inseparável de qualquer aplicação minimamente complexa executada a partir de um browser, é bastante popular  no conjunto LAMP. Há outros sistemas do género como o MariaDB (fork do MySQL), PostgreSQL, Microsoft SQL Server, entre outros.
Muitas vezes encontro aplicações que usam um acesso ao MySQL com a password root para acesso a uma base de dados… Para além de inseguro e altamente perigoso, deixa-me de cabelos em pé 🙂
No caso do Microsoft SQL Server, temos uma consola gráfica toda bonita para criar e gerir bases de dados.
No caso do MySQL ou instalamos o phpMyAdmin ou então temos a linha de comandos…
Quando estamos a instalar uma qualquer aplicação que usa o sistema LAMP, tipo WordPress, Webmin, Owncloud, etc, temos de configurar uma base de dados. Para isso devemos criar uma só para o que estamos a instalar e com direitos limitados sobre o resto do sistema. Assim, mesmo que descubram os acessos não deverão pôr em causa a segurança do resto do sistema. Como criar? Na consola começamos por entrar na consola MySQL:

mysql -u root -p

Vai ser pedida a password de admin do MySQL (definida na instalação do MySQL)
Vão ficar na CLI do MySQL:

mysql>

Não esqueçam que no fim de qualquer comando tem de terminar a linha com um ponto e virgula. No fim de cada linha cliquem no Enter.
Vamos então criar um utilizador local e definir a palavra-passe:

mysql> CREATE USER ‘utilizador‘@’localhost’ IDENTIFIED BY ‘123456789‘;

Alterem as palavras a bold para o que quiserem.
Agora vamos criar a base de dados:

mysql> CREATE DATABASE 123_nome;

Alterem a palavra a bold para o que quiserem.
Em seguida damos privilégios totais de administração desta nova base de dados para o novo utilizador:

mysql> GRANT ALL PRIVILEGES ON 123_nome.* TO ‘utilizador‘@’localhost’;

Mais um Enter e temos a configuração feita! Falta então aplicar o que fizemos:

mysql> FLUSH PRIVILEGES;

E pronto, podemos usar este utilizador na nossa aplicação, sem pôr em causa a segurança de outras bases de dados.
Para sair da CLI do MySQL executem o comando:

mysql> quit