O Navidrome é um servidor de música de código aberto que permite transmitir sua coleção de áudio pessoal de qualquer lugar. Ele dá liberdade para ouvir sua coleção de música em qualquer navegador ou dispositivo móvel. É como o seu Spotify pessoal!

Neste guia, veremos como colocar o Navidrome em funcionamento de forma segura usando o Podman no Fedora Linux. Melhor ainda: como o Navidrome publica imagens de contêiner oficiais multi-arquitetura (incluindo linux/amd64, linux/arm64 e linux/arm/v6/v7), esta configuração é bastante portátil. Se o seu hardware for um servidor x86 comum ou um Raspberry Pi baseado em ARM de baixo-p consumo, este passo a passo-t cobre os dois casos.

Para obter a imagem oficial do Navidrome Music Server, acesse:

deluan/navidrome – Docker Image

Usando as imagens oficiais de contêiner com Podman e Podman Compose

As imagens de contêiner estão disponíveis para as plataformas linux/amd64, linux/arm/v6, linux/arm/v7 e linux/arm64. Elas incluem tudo o que é necessário para executar o Navidrome.

[nico@stamfordbridge navidrome\]$ podman pull deluan/navidrome
✔ docker.io/deluan/navidrome:latest
Trying to pull docker.io/deluan/navidrome:latest…
Getting image source signatures
Copying blob 75c0824146ea done |
Copying blob 4f4fb700ef54 done |
Copying blob 4f4fb700ef54 done |
Copying blob e1dbf20ea67c done |
Copying blob 1cc3d825d8b2 done |
Copying config 0c9bad3bd7 done |
Writing manifest to image destination
0c9bad3bd7305815d56fe588a64f9172a8bb6aa2bfef3ad77e764c8694e7e860

Se o SELinux estiver habilitado no seu servidor Fedora Linux, adicione o contexto SELinux container_file_t aos diretórios Data e Music e ao conteúdo deles.

[nico@stamfordbridge navidrome]$ sudo semanage fcontext -a -t container_file_t  '/home/nico/navidrome/Data(/.\*)?'
[nico@stamfordbridge navidrome]$ sudo semanage fcontext -a -t container_file_t  '/home/nico/navidrome/Music(/.\*)?'

Aplique a política SELinux aos diretórios Data e Music.

[nico@stamfordbridge navidrome]$  sudo restorecon -R /home/nico/navidrome/Data
[nico@stamfordbridge navidrome]$  sudo restorecon -R /home/nico/navidrome/Music

Altere o proprietário de /home/nico/navidrome/Data e /home/nico/navidrome/Music para 1000.

[nico@stamfordbridge navidrome]$ podman unshare chown 1000:1000 /home/nico/navidrome/Data
[nico@stamfordbridge navidrome]$ podman unshare chown 1000:1000 /home/nico/navidrome/Music

Usando o podman-compose

Crie um arquivo podman-compose.yml com o conteúdo a seguir (ou adicione o serviço navidrome abaixo ao seu arquivo existente):

[nico@stamfordbridge navidrome]$ cat podman-compose.yml
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
user: 1000:1000 # should be owner of volumes
ports:
- "4533:4533"
restart: unless-stopped
environment:
# Optional: put your config options customization here. Examples:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
volumes:
- "/home/nico/navidrome/Data:/data"
- "/home/nico/navidrome/Music:/music:ro"

Inicie o contêiner do navidrome com podman-compose up -d.

[nico@stamfordbridge navidrome]$ podman-compose up -d

Observe que as variáveis de ambiente acima são apenas um exemplo e não são obrigatórias. Os valores do exemplo já são os padrões.

Usando a ferramenta de linha de comando podman

[nico@stamfordbridge navidrome]$ podman run -d - name navidrome - restart=unless-stopped - user $(id -u):$(id -g) -v /home/ec2-user/navidrome/Music:/music -v /home/ec2-user/navidrome/Data:/data -p 4533:4533 -e ND_LOGLEVEL=info deluan/navidrome:latest
c00c31d49ec5e0f0a0141aef9e2b69abf6a1b5f0604515bc7111f3e0ef398237
[nico@stamfordbridge navidrome]$ podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c00c31d49ec5 docker.io/deluan/navidrome:latest 9 seconds ago Up 9 seconds 0.0.0.0:4533->4533/tcp navidrome

Customização

  • O argumento de usuário deve, idealmente, refletir o UID:GID do proprietário da biblioteca de música, para evitar problemas de permissão. Para fins de teste, você pode omitir essa diretiva, mas, como regra geral, não se deve executar um contêiner de produção como root.
  • Lembre-se de alterar os caminhos dos volumes para apontar para os seus caminhos locais. /data é onde o Navidrome armazenará seu banco de dados e cache; /music é onde seus arquivos de música ficam armazenados.
  • As opções de configuração podem ser personalizadas com variáveis de ambiente conforme a necessidade. No podman-compose, basta adicioná-las à seção environment do arquivo YAML. Na CLI do podman, use o parâmetro -e. Exemplo: -e ND_SESSIONTIMEOUT=24h.
  • Se você quiser usar um arquivo de configuração com o Navidrome rodando no Podman, crie um arquivo de configuração navidrome.toml na pasta /data e defina a opção ND_CONFIGFILE=/data/navidrome.toml.