Nesse artigo vou documentar como instalar um servidor Subsonic em um Raspberry Pi para poder fazer o backup de suas músicas e de quebra, poder ouvi-las de qualquer lugar que tenha uma conexão de Intenet, inclusive no seu celular. É como ter seu próprio Last.FM, Pandora ou Spotify.
Muito provavelmente você já ouviu falar do
Raspberry Pi, um computador com processador ARM (o mesmo utilizado nos celulares) do tamanho de um cartão de crédito e com baixo consumo de energia. O Raspberry Pi custa apenas 35 dólares e foi criado por uma fundação ligada a Universidade de Cambridge, no Reino Unido, para incentivar o conhecimento relativo à programação para crianças e jovens. Pela versatilidade e baixo custo, o computadorzinho tem sido utilizado para muitos outros fins além deste.
Já o Subsonic é um software servidor de som e gerenciador de músicas escrito em Java, que por ser software livre (GPL 2), pode ser utilizado livremente. É com ele que iremos acessar as nossas músicas pela Internet. O Subsonic é muito rico em recursos sendo inclusive capaz de realizar transcoding (conversão de formato durante o streaming). Para saber mais, visite o
site do projeto.
Conheci o programa quando fui editor da extinta Ubuntu Magazine e tive que instalar o programa para tirar os screenshots em Português, pois o artigo estava originalmente em inglês. Fiquei com muita vontade de ter o aplicativo rodando, mas a necessidade de um servidor físico dificultava um pouco as coisas.
Contudo, com o surgimento do Raspberry Pi, tudo ficou mais fácil e após brincar um pouquinho com ele, instalando o XBMC e um servidor web, resolvi dar uma função definitiva para o computadorzinho como o responsável pelo backup dos meus arquivos e meu servidor de música.
 |
Tela da interface web do Subsonic |
Ingredientes
Você vai precisar de:
- 1 Raspberry Pi completo: com fonte e cartão de memória.
- 1 HD portátil (opcional)
- 1 Hub USB com alimentação (opcional)
- intimidade com o terminal e SSH é altamente recomendável.
Se a sua biblioteca de músicas couber em um cartão SD, muito bom; mas caso necessite ligar um HD portátil, será preciso adquirir um hub USB alimentado, ou seja, com fonte, ou um HD que já inclua cabo de alimentação. Isso porque a alimentação de 5V do Raspberry Pi não dá conta de fornecer energia para um dispositivo como o HD e assim que você conectá-lo a saída USB o sistema será desligado.
 |
RaspberryPi rev. B |
|
Não vou descrever aqui como instalar o sistema operacional no Raspberry, pois há muita documentação sobre
isso. Escolhi o Raspbian por estar mais habituado à distribuições Debian e por ser uma ótima escolha para um servidor.
Instalando o Java 8
Na primeira instalação que fiz, instalei o OpenJDK 7 na versão soft-float do Raspbian a partir dos repositórios e tudo funcionou muito bem. O único problema ocorria caso fosse necessário realizar transcoding para o streaming. Nesse momento a música ficava picotada, pois o Raspberry não dava conta de processar tudo ao mesmo tempo.
Isso acontecia porque o Java 7 não oferece suporte ao ABI (application binary interface) do ARMv6 e para instalá-lo era preciso utilizar uma versão do sistema operacional que não fazia uso dos registradores de ponto flutuante, o que diminuia muito o desempenho do sistema. Uma explicação mais detalhada pode ser encontrada na
wiki do Raspbian.
Contudo, eu li que a versão 8 do Java oferecia esse suporte e poderia ser instalada em uma versão hard-float do sistema e resolvi instalar tudo de novo. O resultado foi muito bom, pois tanto o consumo de memória, quanto de CPU se reduziram muito, sendo que os problemas durante o transcoding também foram sanados.
Apesar do OpenJDK ser a implementação Java padrão a partir da versão 7, não consegui achar uma forma de baixar uma versão 8 dele e acabei baixando a versão da Oracle a partir deste
link. É preciso baixar em um outro computador e transferir via sftp, por exemplo, pois há a necessidade de aceitar a licença antes.
Uma vez baixado o pacote tar para a versão ARM, faça a instalação descompactando o arquivo baixado com o tar no diretório /opt com o comando:
sudo tar xvfz arquivobaixado.tar.gz -C /opt
Em seguida, crie o link simbólico para o diretório descompactado:
sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.8.0/bin/java" 1
sudo update-alternatives --set java /opt/jdk1.8.0/bin/java
e com o editor de texto da sua preferência, abra o arquivo
/etc/environment
e crie a seguinte variável de ambiente:
JAVA_HOME="/opt/jdk1.8.0"
e em seu arquivo
~/.bashrc
insira:
export PATH=$PATH:$JAVA_HOME/bin
Dê um reboot no seu Raspberry e teste se está tudo funcionando ao digitar
java -version
no terminal. Na sequência iremos instalar o Subsonic
Instalação do Subsonic
Para instalar o Subsonic, basta baixar o pacote para Debian/Ubuntu da seção Download do site do
subsonic.org e instalar com
sudo dpkg -i pacote.deb
Por padrão o Subsonic roda como usuário root, porém, por questões de segurança, isso é altamente desaconselhável. Vamos criar um usuário seguro para a execução do aplicativo e adicioná-lo ao grupo audio:
sudo adduser --no-create-home --disabled-password --disabled-login subsonic-user
sudo adduser subsonic-user audio
Agora precisamos atualizar as configurações do programa para utilizar esse usuário.
sudo vi /etc/default/subsonic
e mudamos a última linha para:
SUBSONIC_USER=subsonic-user
e reiniciamos o serviço digitando:
sudo /etc/init.d/subsonic restart
Após fazer isso podemos acessar a interface web do aplicativo na porta 4040.
Como você pode ver pelo aviso emitido pelo programa, é altamente recomendável que você troque a senha padrão de admin já no primeiro acesso.
Além disso, eu aconselho que você crie um outro usuário sem poderes administrativos para acessar o programa normalmente, reservando o acesso como admin exclusivamente para fins de manutenção. Neste caso, mesmo que a sua senha seja comprometida, não há a possibilidade de que um eventual invasor possa fazer muitos estragos.
O programa é muito fácil de usar e você pode encontrar mais informações sobre as configurações iniciais na
documentação.
Para que o transcoding funcione normalmente, instale o ffmpeg e o lame, pois a versão que vêm embutida no pacote de instalação do Subsonic não é compatível com a arquitetura ARM.
sudo apt-get install ffmpeg lame
sudo ln -fs /usr/bin/ffmpeg /var/subsonic/transcode
sudo ln -fs /usr/bin/lame /var/subsonic/transcode
Acesso móvel
Após a instalação você tem acesso por 30 dias a recursos acesso em dispositivos móveis, compartilhamento em redes sociais, seu próprio endereço DNS como por exemplo
seunome.subsonic.org. Depois disso é preciso pagar um plano
premium, que é bastante razoável e justo uma vez que oferece muitas vantagens ao mesmo tempo que estimula o desenvolvedor a continuar evoluindo o software.
Para ouvir as suas músicas através do celular basta instalar os
aplicativos disponíveis na loja de aplicativos do seu smartphone. Há versões para
Android, iPhone e Windows Phone.
Bônus
Como bônus, há algumas questões importantes que devem ser configuradas de maneira a aumentar a segurança e evitar problemas. Apesar de ser pequeno e possuir pouco poder computacional, o Raspberry Pi estará rodando um serviço que está exposto a toda Internet e caso sua segurança seja comprometida, um eventual invasor terá uma porta de entrada para a sua rede local.
A primeira providência é a configuração das permissões de arquivo das pastas onde estarão as suas músicas.
Certifique-se que o usuário subsonic-user tem acesso a elas, caso contrário não será possível adicioná-las à biblioteca do Subsonic. No meu caso, configurei toda a pasta com a músicas para pertencerem ao usuário pi e ao grupo audio do qual o subsonic-user faz parte.
Para aumentar a segurança da sua instalação, eu sugiro que você configure a montagem de seu HD portátil de forma a impedir a execução de executáveis maliciosos por parte de um eventual invasor. No meu caso acrescentei as seguinte linha ao meu arquivo
/etc/fstab
:
/dev/sda1 /media/cartola ext4 defaults,noexec,nosuid,nodev 0 2
Espero que você tenham gostado. Deixe seu comentário abaixo.
No próximo post eu escreverei sobre como configurar um servidor rsync para sincronizar as músicas de seu computador principal com o Raspberry Pi.