Índice do diárioDockup / nota de campo
Note / self-host-navidrome

Como fazer self-host do Navidrome em 2026: mounts de música, scans e apps Subsonic

Um guia prático para fazer self-host do Navidrome, cobrindo Docker, portas, dados persistentes, TLS, segurança, backups e as falhas que impedem o uso em produção. Em 2026.

Se você já tentou fazer self-host do Navidrome, provavelmente conhece bem este estado frustrante: a UI aparece, mas os scans não encontram arquivos porque o caminho de música do host foi montado incorretamente. Recriar o container raramente resolve um desacordo entre URLs, estado e dependências.

Este passo a passo usa um critério concreto de conclusão — fazer o scan de uma biblioteca de música read-only, verificar metadados e artwork, reproduzir uma faixa por meio de um cliente Subsonic e salvar uma playlist. Cada escolha de configuração é avaliada com base nesse critério, e não apenas em um badge verde do container.

Faça backup do estado que o Navidrome não consegue recriar

Defina o recovery point e o recovery time do Navidrome em termos do banco de dados do Navidrome, do cache de artwork, das playlists e da biblioteca de música original. Monte /data antes do bootstrap, grave dados de exemplo inofensivos e substitua o container para provar que esse caminho é realmente persistente. Um named volume resolve a persistência entre redeploys; ele não resolve um comprometimento nem a perda do servidor.

Prepare um ambiente de restore limpo, use a mesma versão fixada da aplicação e prove que usuários, playlists, histórico de reprodução e metadados retornam, e que o mesmo cliente Subsonic reproduz uma faixa conhecida. Registre os comandos, os ajustes de ownership e o tempo decorrido. O guia de backup é um padrão útil: um backup só é confiável depois do restore, não depois do upload.

Inicie o Navidrome sem ocultar as partes móveis

Use o container como um runtime substituível, não como a fonte da verdade.

docker run -d \
  --name navidrome \
  --restart unless-stopped \
  -p 127.0.0.1:4533:4533 \
  -v navidrome-data:/data \
  -v /srv/music:/music:ro \
  -e ND_BASEURL=/ \
  deluan/navidrome:latest

Confirme o requisito local antes de expor o serviço: um mount read-only da biblioteca de música e dados de aplicação com permissão de escrita. Inspecione o usuário do container, os caminhos com permissão de escrita e o listener associado antes de expô-lo. Execute a ação completa — fazer o scan de uma biblioteca de música read-only, verificar metadados e artwork, reproduzir uma faixa por meio de um cliente Subsonic e salvar uma playlist — e salve a referência exata da image que produziu o resultado.

Escolha a menor topologia viável para o Navidrome

Comece pelo network namespace do Navidrome: o web listener dele é a porta 4533, não uma porta do host copiada de um tutorial para laptop. O requisito do runtime local é um mount read-only da biblioteca de música e dados de aplicação com permissão de escrita. Registre isso ao lado da image e da porta para que um host substituto receba a mesma capacidade local.

Depois que o requisito for atendido, execute o cenário completo — fazer o scan de uma biblioteca de música read-only, verificar metadados e artwork, reproduzir uma faixa por meio de um cliente Subsonic e salvar uma playlist. Registre logs e métricas do tempo de scan da biblioteca, CPU de transcoding, cache de artwork, streams concorrentes e throughput de disco. Essas evidências formam a primeira arquitetura conhecida como funcional e tornam testáveis as migrações posteriores entre o compute da Dockup e um servidor conectado.

TLS é fácil; URLs geradas não são

Defina ND_BASEURL ao servir a partir de um subpath; caso contrário, prefira um host HTTPS dedicado. Envie o hostname escolhido para a porta 4533 do container, encaminhe o host original e o esquema HTTPS e evite publicar uma segunda origem direta.

Teste o Navidrome a partir de um cliente externo limpo. Separe uma falha de ingress do limite conhecido da aplicação — os scans não encontram arquivos porque o caminho de música do host foi montado incorretamente. Um erro de certificado, DNS ou 502 pertence ao routing; uma requisição que chega ao Navidrome e falha depois pertence ao estado da aplicação, à capacidade ou ao requisito de suporte. O guia de TLS para custom domain aborda o primeiro grupo.

Cinco verificações mais fortes do que o health do container

Antes da chegada de usuários reais, crie uma release worksheet para o Navidrome. Ela deve indicar a image fixada, a porta 4533, a origem canônica, os caminhos persistentes e o responsável por um mount read-only da biblioteca de música e pelos dados de aplicação com permissão de escrita. Anexe o resultado esperado desta transação: fazer o scan de uma biblioteca de música read-only, verificar metadados e artwork, reproduzir uma faixa por meio de um cliente Subsonic e salvar uma playlist.

Use a worksheet depois de uma substituição normal e de um restore limpo. O recovery só é aceito quando usuários, playlists, histórico de reprodução e metadados retornam, e o mesmo cliente Subsonic reproduz uma faixa conhecida. Colete também um resource trace curto cobrindo o tempo de scan da biblioteca, CPU de transcoding, cache de artwork, streams concorrentes e throughput de disco; mantenha-o junto da release para que futuras mudanças de capacidade sejam comparadas com a mesma workload.

Inclua uma falha controlada: envie uma entrada inofensiva próxima ao limite de recurso ou formato associado a este boundary: os scans não encontram arquivos porque o caminho de música do host foi montado incorretamente. Confirme que o Navidrome reporta o problema no boundary correto, restaure a condição válida e execute novamente a transação. Isso verifica a visibilidade dos erros, não apenas o sucesso, e impede que uma interface com aparência saudável oculte um worker, callback ou conexão de banco de dados quebrado.

Logs que respondem à próxima pergunta

Use fazer o scan de uma biblioteca de música read-only, verificar metadados e artwork, reproduzir uma faixa por meio de um cliente Subsonic e salvar uma playlist como smoke test do Navidrome após cada deployment. As métricas de suporte são o tempo de scan da biblioteca, CPU de transcoding, cache de artwork, streams concorrentes e throughput de disco; crie alertas quando esses recursos se aproximarem de um ponto que degrade a ação do usuário.

O principal risco de mudança é que as migrações do banco de dados do Navidrome e o comportamento do scanner devem ser testados enquanto os arquivos de música originais permanecem intactos. Uma release segura começa com um snapshot que possa ser restaurado e valida qualquer mudança de estado irreversível antes de mover o tráfego. Quando os scans não encontrarem arquivos porque o caminho de música do host foi montado incorretamente, mantenha o container com falha tempo suficiente para ler sua configuração e o primeiro erro.

Não dê ao Navidrome acesso ao host inteiro

Feche a janela de bootstrap assim que existir o primeiro administrador confiável. A armadilha concreta do Navidrome é montar a biblioteca de música com permissão de escrita sem um motivo; o boundary mais seguro é montar a música como read-only, proteger as contas e expor apenas o serviço de streaming, não a biblioteca do host.

ND_BASEURL é configuração, não um secret; mantenha seu valor explícito enquanto protege as credenciais separadas usadas pelo Navidrome. A rede privada deve transportar as credenciais das dependências, e as roles dentro do Navidrome devem conceder a menor ação útil. Mantenha bodies sensíveis de requests e respostas de providers fora dos logs de rotina.

Mantenha o Navidrome explícito enquanto a Dockup cuida do routing

Routing, certificados, substituição de serviços e storage conectado são alvos razoáveis de automação. A Dockup cuida disso para o Navidrome e pode provisionar o banco de dados gerenciado relacionado ou conectar-se a serviços no servidor do próprio cliente.

O que ela não deve inventar é a trust policy do Navidrome. Depois do deployment, defina ND_BASEURL ao servir a partir de um subpath; caso contrário, prefira um host HTTPS dedicado, aplique este boundary — monte a música como read-only, proteja as contas e exponha apenas o serviço de streaming, não a biblioteca do host — e verifique o resultado deste cenário: fazer o scan de uma biblioteca de música read-only, verificar metadados e artwork, reproduzir uma faixa por meio de um cliente Subsonic e salvar uma playlist. O resultado é uma infraestrutura de um clique com um acceptance test específico da aplicação.

Perguntas frequentes

O que o Navidrome precisa para um deployment em produção?

Faça o routing do container do Navidrome na porta 4533 por meio de uma única origem HTTPS. O requisito do runtime local é um mount read-only da biblioteca de música e dados de aplicação com permissão de escrita. Não considere o Navidrome pronto até conseguir fazer o scan de uma biblioteca de música read-only, verificar metadados e artwork, reproduzir uma faixa por meio de um cliente Subsonic e salvar uma playlist.

Quais dados do Navidrome devem entrar no backup?

Persista /data e inclua o banco de dados do Navidrome, o cache de artwork, as playlists e a biblioteca de música original no mesmo recovery manifest. Um restore limpo do Navidrome só é aprovado quando usuários, playlists, histórico de reprodução e metadados retornam, e o mesmo cliente Subsonic reproduz uma faixa conhecida.

O Navidrome precisa de HTTPS atrás de um reverse proxy?

Use HTTPS para a origem pública do Navidrome e mantenha a porta 4533 na rota interna. Aplique corretamente a configuração do Navidrome: defina ND_BASEURL ao servir a partir de um subpath; caso contrário, prefira um host HTTPS dedicado. Para o Navidrome, o HTTPS protege credenciais ou conteúdo de usuários em trânsito e mantém consistente o comportamento do cliente sensível à origem.

Como testar um upgrade do Navidrome?

Restaure o estado atual do Navidrome em um deployment isolado, aplique a versão candidata e repita sua acceptance transaction. Dê atenção especial ao fato de que as migrações do banco de dados do Navidrome e o comportamento do scanner devem ser testados enquanto os arquivos de música originais permanecem intactos. Mantenha a image anterior do Navidrome até que os limites de data-migration e rollback sejam compreendidos.