Subsonic

Hoje em dia uso Jellyfin e Plex

Subsonic é um servidor de mídia open source capaz de fazer streaming de toda sua biblioteca de músicas e vídeos para qualquer celular ou computador conectado à internet. Ele funciona como o VLC, mas possui várias features extras, como fazer transcode em tempo real e fazer scrobble para o Last.fm.

Acesse a demonstração para ter uma ideia melhor: http://www.subsonic.org/pages/demo.jsp

O Subsonic é multiplataforma, pois é feito em java. Ele pode ser instalado de forma independente (standalone) ou como um Web Application Archive. Aqui usei a forma standalone por ser mais simples.

  1. Instale todas as dependências

    julio@julio-acer ~ $ sudo pacman -S jre lame ffmpeg flac
    
  2. Baixe e instale o subsonic disponível no AUR

  3. Edite o script de inicialização

    julio@julio-acer ~ $ sudo vim /var/subsonic/subsonic.sh
    SUBSONIC_HOME=/var/subsonic
    SUBSONIC_HOST=0.0.0.0
    SUBSONIC_PORT=4040
    SUBSONIC_HTTPS_PORT=0
    SUBSONIC_CONTEXT_PATH=/
    SUBSONIC_MAX_MEMORY=200
    SUBSONIC_PIDFILE=
    SUBSONIC_DEFAULT_MUSIC_FOLDER=/media/externo/Musicas
    SUBSONIC_DEFAULT_PODCAST_FOLDER=/var/music/Podcast
    SUBSONIC_DEFAULT_PLAYLIST_FOLDER=/var/playlists
    export LC_CTYPE=en_US.UTF-8
    
    quiet=0
    

    Em SUBSONIC_HOST deixe 0.0.0.0 mesmo, assim você terá acesso a partir de qualquer computador. Mude para 127.0.0.1 se você apenas quiser acesso local.

    O HTTPS_PORT não é necessário, mas você pode configurar como SUBSONIC_HTTPS_PORT=4041. Você também precisará configurar o SSL.

    Inseri a última linha com um export, pois tive problemas com pastas e arquivos acentuados e isso resolveu o problema. Outras possíveis variáveis a serem exportadas podem ser vistas em $ locale.

  4. Se, na etapa acima, você deixou a pasta de música padrão. Crie um link simbólico em /var/music para a pasta de músicas no seu HD. Exemplo:

    julio@julio-acer ~ $ sudo ln -s /media/externo/Musicas/ /var/music/
    

    De qualquer forma, posteriormente você poderá adicionar pastas de músicas e vídeos pela interface web.

  5. Execute o script que você acabou de editar

    julio@julio-acer ~ $ sudo /var/subsonic/subsonic.sh
    Started Subsonic [PID 7635, /var/subsonic/subsonic_sh.log]
    
  6. Acesse http://localhost:4040 e troque a senha padrão por uma mais segura

  7. Settings:

    • Music folders: Defina as pastas de música a serem acessadas
    • General: Defina a pasta de playlists, linguagem, tema e as mensagens
    • Advanced: Configure o LAME
    • Personal: Configurações do usuário, como avatar e conta no lastfm
    • Users: Crie novos usuários, edite suas permissões e altere sua senha. Além do admin, recomendo criar outro usuário com menos permissões, para seguir o princípio da menor permissão.
    • Players: Defina os players e os transcodes
    • Network: NÃO maque a opção “Automatically configure your router to allow incoming connections to Subsonic”, pois vamos abrir a porta manualmente.

    Marque “Access your server over the Internet using an easy-to-remember address.” e coloque um usuário qualquer (jbsilva é o meu). Você poderá usar essa conta gratuitamente por 30 dias, depois desse prazo você deve doar 10 euros ou usar um serviço externo como o DynDNS (explicação abaixo).

    Abra a página do roteador (10.0.0.1 aqui).

    Em LANSetup, reserve o IP 10.0.0.2 para o computador rodando o Subsonic.

    Em Port Forwarding, clique em Add Custom Service e preencha com os seguintes dados:

    Service Name: Subsonic
    Service Type: TCP/UDP
    Starting Port: 4040
    Ending Port: 4040
    Server IP Adress: 10.0.0.2
    

    Teste as configurações, verificando se o roteador redirecionou a porta 4040 para seu computador.

    Exemplo: http://189.19.170.215:4040/ e http://jbsilva.subsonic.org devem mostrar a tela de login do Subsonic.

    • Transcoding: Adicione comandos para conversão entre formatos.
    • Internet TV/radio: Adicione links para stream de TV/rádios online.
    • Podcast: Configura o download de podcasts
    • Search: Configura a atualização do index para buscas
  8. Crie um link simbólico para cada programa utilizado para transcodes:

    julio@julio-acer ~ $ sudo ln -s /usr/bin/lame /var/subsonic/transcode/
    julio@julio-acer ~ $ sudo ln -s /usr/bin/flac /var/subsonic/transcode/
    julio@julio-acer ~ $ sudo ln -s /usr/bin/ffmpeg /var/subsonic/transcode/
    

iPhone

Como o player em flash da interface web não funciona no iPhone, a melhor solução é instalar algum App.

Só encontrei Apps gratuitos para Android, para iPhone encontrei dois por $4.99: iSub e Z-Subsonic.

Aqui comentarei sobre o iSub que eu baixei por ser mais popular e o iSub lidar melhor com os álbuns e capas, pelos reviews que li. Quem sabe algum dia eu teste o Z-Subsonic. Se quiser um tutorial para configurar o Z-Subsonic, o próprio desenvolvedor criou um: http://blog.intulon.com/?p=8

Configurar o iSub é bem simples.

  1. Baixe o App da AppStore e abra-o

  2. Clique em Settings -> Servers

  3. Adicione um novo servidor

    Se usar o do próprio subsonic é só colocar http://jbsilva.subsonic.org, sem a porta.
    Mas se usar o dynDNS configurado como no tutorial que linkei no próximo tópico, também inclua a porta.
    Eg.: http://jbsilva.dyndns.org:4040 ou http://casa.juliobs.com:4040/

  4. Em settings » settings, ative o scrobble para o Last.fm e limite o bitrate da conexão 3G.

DNS Dinâmico

Após 30 dias você não conseguirá acessar seus arquivos pelo endereço fornecido pelo Subsonic (http://jbsilva.subsonic.org).
Você terá que fazer uma doação de pelo menos 10 euros ao Subsonic, acessar seu computador diretamente pelo IP ou utilizar um serviço de DNS dinâmico para associar o IP dinâmico do seu computador a um endereço estático.

Criei um post explicando todo o processo para criar e configurar um hostname no DynDNS. Clique AQUI para acessá-lo.


Julio Batista Silva
Julio Batista Silva
Engenheiro de Dados

Eu sou um engenheiro de computação apaixonado por ciência, tecnologia, fotografia e idiomas. Atualmente trabalhando como Engenheiro de Dados na Alemanha.

comments powered by Disqus