Problemas de som com Realtek HDA

realtek-high-definition-audio-drivers
Para quem usa Ubuntu e tem o “azar” de ser contemplado com uma placa de som Realtek High Definition Audio, vai ouvir alguns ruídos e falhas de som, com os Kernels mais recentes 4.x.

Uma alternativa que podem tentar via consola para resolver este problema (não é 100% garantido) é a seguinte:

Editar o ficheiro /etc/pulse/default.pa:
sudo nano /etc/pulse/default.pa

Procurar a linha (com o atalho Ctrl+W) que tem a seguinte informação:
load-module module-udev-detect

Adicionar “tsched=0” no fim da linha. Deverá ficar:
load-module module-udev-detect tsched=0
Salvar e terminar sessão, ou reiniciar.

Acesso seguro

wolf

Quando temos um servidor público, seja o sistema operativo que for, temos de tomar precauções para acessos indevidos e temos de estar sempre atentos a tentativas de intrusão. Podem dizer que ninguém tem interesse no vosso servidor particular mas não se esqueçam que há máquinas que varrem os IP de todo o mundo na procura de potenciais vitimas. O objectivo pode não ser roubar dados mas tornar a máquina “zombie” para ataques a terceiros.

No caso de Linux em geral e Ubuntu em particular, por norma acedemos à nossa máquina por SSH. Este protocolo é bastante seguro na sua essência, no entanto há algumas precauções a tomar.

  1. Password – É a chave  da vossa casa. Uma password forte, com 12 ou mais caracteres, letras e números. Há programas que geram palavras especiais mas podem sempre escolher uma frase vossa e acrescentar uns números.
  2. Autenticação com chave encriptada. Um método muitas vezes ignorado mas bastante seguro. Na prática geramos um par de chaves (pública e privada) e guardamos a pública no servidor. e a privada no nosso PC. Já perceberam que só entra quem tiver a chave privada do respectivo par. Este método é teoricamente imune aos ataques de brute-force. Tem a desvantagem de que se perdermos a chave privada…
  3. Usar o failt2ban. Podem ver um artigo aqui.
  4. Alterar a porta de acesso SSH. By default, a porta de acesso SSH é a 22. É onde os scanners de IP públicos costumam “bater á porta”. O objectivo não é entrar logo mas sim saber se o servidor X tem a porta 22 à escuta.
    É possível e devemos alterar a porta de acesso. Na consola editamos o seguinte ficheiro:
    nano /etc/ssh/sshd_config
    Vão encontrar o seguinte logo no início:
    # What ports, IPs and protocols we listen for
    Port 22
    Agora é só alterar o 22 para outro número, de preferência acima de 1024 e no máximo 65535. Garantam que o numero da porta em causa não coincida com outra já em uso no vosso servidor.
    No fim é só salvar e reiniciar o serviço ssh:
    sudo service ssh restart
  5. Verificar se alguém anda a tentar entrar ou se já entrou.
    Para ver quem está ligado ao nosso servidor basta fazer o comando:
    who
    Para  ver as tentativas falhadas:
    grep sshd.*Failed /var/log/auth.log | less  ( para sair carregar na tecla Q )
    Para ver as tentativas sem autenticação  (comum nos scanners de IP ):
    grep sshd.*Did /var/log/auth.log | less  ( para sair carregar na tecla Q )

Há outros métodos de protecção mais complexos mas na minha opinião estes são essenciais para dormir mais descansado.

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!

Ubuntu 16.04 no Raspberry

A Canonical suporta oficialmente o Ubuntu no Raspberry Pi 2 (também disponibilizam uma imagem para o Raspberry 3)!

Podem fazer download da imagem aqui para o vosso Pi 🙂

Como instalar? Na consola do nosso Ubuntu e já com o cartão SDCard do Raspberry inserido verificamos o path para o cartão (que deverá ser /dev/mmcblk0) com o seguinte comando:
lsblk

Em seguida fazemos download da imagem:
cd /tmp
wget http://cdimage.ubuntu.com/ubuntu/releases/16.04/release/ubuntu-16.04-preinstalled-server-armhf+raspi2.img.xz

E instalamos no cartão:
xzcat ubuntu-16.04-preinstalled-server-armhf+raspi2.img.xz | sudo dd of=/dev/mmcblk0

Esta imagem é para um cartão de 4Gb. Podem preencher o resto do cartão com recurso ao GPARTED. Se não o tiverem basta instalar com sudo apt-get install gparted.

No primeiro arranque autentiquem-se com username ubuntu e password ubuntu. Vai ser solicitada a alteração para uma nova password.

A instalação do Ubuntu no Raspberry traz algumas vantagens relativamente ao Debian das quais destaco o Kernel mais recente e pacotes de instalação mais actuais. Isto pode ser útil em algumas situações. Experimentem!

Wifi na linha de comandos

wireless-wlan0

É muito fácil obter informações da rede wifi a que estamos ligados, na linha de comandos.

Começamos por usar o comando ifconfig para saber o IP e nome da interface. No exemplo temos a interface wlan0.

Em seguida usamos o comando iwconfig para obter informação sobre a ligação actual, como o nome da rede, sinal, frequência, entre outros.

Podemos também usar o comando iwlist wlan0 freq para saber mais informação detalhada sobre a frequência que estamos a usar.

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.

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.