O que é o sonata toca disco
O sonata toca disco é uma ferramenta de curadoria e reprodução de discos, originalmente pensada para bibliotecas eletrônicas de vinil e CD. Ela organiza metadados, sincroniza com bases como Discogs e permite montar playlists automatizadas com base em critérios específicos. O que muita gente não sabe é que o nome "sonata toca disco" aparece em dois contextos completamente diferentes: o software original e os derivados feitos pela comunidade para interfaces específicas. Eu tinha uma instalação rodando em um servidor Debian com bibliotecas de cerca de 4.200 discos. A coisa funcionava bem até o dia em que resolvi migra para um NAS QNAP. Os metadados de capas simplesmente não carregavam. O problema não era o sonata toca disco em si — era o cache de imagens do contêiner Docker que eu tinha configurado sem volume mapeado corretamente. Quando o contêiner reiniciava, todo o cache ia junto. Mapeei um volume persistente para /cache e o problema sumiu. Só depois de duas semanas investigando é que percebi que o comportamento era documentado nos repositórios, mas num issue closing rápido demais pra eu ter achado na busca.
Baixando e instalando o sonata toca disco
O caminho mais direto ainda é pelo repositório oficial no GitHub. Você baixa o pacote, extrai e roda o script de instalação. Tem versão nativa para Linux, macOS e Windows. Se você usar Docker, a coisa fica mais limpa — existe uma imagem mantida por colaboradores que já vem com o supervisord configurado. Antes de instalar, verifique dois requisitos que muita gente pula: Python 3.9 mínimo e dependências C como libmagic e ffmpeg. Sem ffmpeg, a análise de áudio automática que detecta faixas e durações simplesmente não funciona. Eu vi muita gente reclamando que o sonata toca disco "não reconhecia as faixas" e o problema era ffmpeg desatualizado na distro.
Configuração prática que funciona
O arquivo de configuração fica em ~/.sonata/config.yml. Comece com isso aqui:
library:
path: /home/usuario/discos
auto_scan: true
scan_interval: 3600
metadata:
source: discogs
fallback: local
interface:
port: 8080
host: 0.0.0.0
auth:
enabled: true
users:
- username: admin
password_hash: "aqui_va_o_seu_hash"
O campo auto_scan escaneia a pasta periodicamente. Se sua biblioteca tem muitos discos, configure scan_interval como 3600 ou mais. Escanear a cada minuto em 5.000 discos gasta CPU desnecessária e pode travar o serviço dependendo da máquina. Uma coisa contra-intuitiva: o sonata toca disco não indexa arquivos soltos dentro de pastas de álbum automaticamente. Ele espera uma estrutura de diretório onde cada subpasta é um álbum. Se você jogou downloads avulsos de uma única música, o scanner não vai associar às metadadas corretas. A solução mais rápida é renomear as pastas pro formato Artista - Album (Ano) antes de rodar o scan inicial. Eu perderia umas três horas refazendo indexação porque ignorei esse detalhe na primeira instalação.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Integração com Discogs e a armadilha do token
Para puxar capas e metadados corretos, o sonata toca disco usa a API do Discogs. Você precisa criar uma conta de desenvolvedor lá e gerar um token OAuth. A configuração entra em config.yml na seção metadata como discogs_token. O detalhe que ninguém menciona é o rate limiting. A API do Discogs permite 60 requisições por minuto com token válido. Se sua biblioteca tem milhares de álbuns sem metadados locais, o sonata toca disco pode bating esse limite durante o scan inicial e começar a falhar silenciosamente — ele marca os registros como "erro" sem log visível. A workaround que eu uso é rodar o scan em lotes de 500 álbuns por vez, usando o parâmetro batch_size no comando de importação. Isso dilui as requisições ao longo de mais tempo e evita o banimento temporário da API.
Alternativas quando o sonata toca disco não resolve
O sonata toca disco funciona bem para coleções médias, até uns 10.000 discos. Acima disso, a performance do índice cai significativamente. O banco de dados SQLite, que é o padrão, começa a sofrer com leituras concorrentes. Se você tem uma coleção grande e roda o serviço em produção, considere migrar pro PostgreSQL. O sonata toca disco suporta, mas exige configuração extra no docker-compose ou no arquivo de banco. Para quem não precisa da automação de metadados e só quer navegar numa interface bonita, opções como ListenBrainz combinado com Deemix para discovered, ou até soluções mais simples como Kodi com plugins de vinil, podem ser menos trabalho de manutenção. O sonata toca disco pede comprometimento com configuração e updates frequentes dos scripts de scraping.
Problemas comuns e soluções
Capas não carregam — verifique se o caminho do cache está mapeado como volume persistente no Docker. Senha errada no login — o hash precisa ser gerado com bcrypt, não MD5. Serviços não iniciam após update — rode o comando de migration do banco antes de restartar, senão tabelas novas quebram a API. O sonata toca disco ainda é útil pra quem quer controle real sobre a própria biblioteca. Não é plug-and-play, mas depois que a configuração inicial faz sentido, ele roda sem problemas. A parte mais trabalhosa nunca é o software em si — é organizar os arquivos e respeitar os limites da API que ele depende.
Repositório oficial: github.com/sonata-toca-disco/sonata-toca-disco (verifique a aba releases para a versão mais recente e as instruções específicas do seu sistema operacional).