Dijous, maig 21, 2026
APLICATIUS

Servidor de música a casa: instal·lar i configurar Jellyfin o Navidrome

Tenir un servidor de música autogestionat és útil quan tens una col·lecció local (FLAC, MP3, OGG, etc.) i vols accés des de qualsevol dispositiu, sense dependre de serveis externs. Les dues opcions més pràctiques avui dia per a això són Jellyfin i Navidrome. Són projectes madurs, mantinguts i amb diferències clares en objectius i funcionament.

Aquest article no és una comparativa general. És una guia tècnica enfocada en el que realment necessites saber per a instal·lar, configurar i usar Jellyfin o Navidrome amb una col·lecció pròpia.

¿Jellyfin o Navidrome? Decideix primer què necessites

Abans d’instal·lar res, convé tenir clara la funció que vols que compleixi el servidor.

AspecteJellyfinNavidrome
Funció principalStreaming multimèdia (pel·lícules, música, etc.)Música en format Subsonic
LleugeresaMitjanaAlta
InterfícieVisual, tipus NetflixMinimalista, tipus panell de control
Accés mòbilApp oficial i clients compatiblesAplicacions compatibles amb Subsonic (DSub)
TranscodificacióSuport completLimitada, ideal per a formats compatibles
AdministracióWeb completa, multicompteWeb bàsica, però funcional
DependènciesMoltes (FFmpeg, .NET, etc.)Binari únic (Go), sense dependències

Recomanació pràctica:

  1. Si ja fas servir Jellyfin per a vídeo, o vols una sola interfície per a tot: instal·la Jellyfin i afegeix música allà.
  2. Si només vols un servidor de música ràpid i sense pes: instal·la Navidrome.

Preparar el sistema

Funciona bé a qualsevol distribució, però els exemples aquí estan basats en Debian/Ubuntu i derivats. Si fas servir Arch, Fedora o Alpine, els passos canvien lleument però la lògica és la mateixa.

Crea un usuari de sistema per no córrer el servidor com a root.

sudo useradd -r -s /usr/sbin/nologin music

Crea els directoris necessaris:

sudo mkdir -p /srv/music/data
sudo mkdir -p /srv/music/music
sudo chown -R music: /srv/music

Assegura’t que la teva col·lecció estigui muntada (si està en un altre disc) abans d’iniciar el servei. Si no, fallarà en indexar.

Instalar Navidrome: servidor de música lleuger

Descarregar i preparar

Navidrome es distribueix com a binari estàtic. No necessita dependències.

cd /usr/local/bin
sudo wget https://github.com/navidrome/navidrome/releases/latest/download/navidrome-linux-amd64.tar.gz
sudo tar xvf navidrome-linux-amd64.tar.gz
sudo mv navidrome /usr/local/bin/
sudo chown root:root /usr/local/bin/navidrome

Crear servei systemd

Crea l’arxiu /etc/systemd/system/navidrome.service:

[Unit]
Description=Navidrome Music Server
After=network.target
 
[Service]
User=music
Group=music
ExecStart=/usr/local/bin/navidrome
WorkingDirectory=/srv/music
Restart=on-failure
EnvironmentFile=-/etc/default/navidrome
 
[Install]
WantedBy=multi-user.target
I l'arxiu /etc/default/navidrome:
ND_MUSICFOLDER="/srv/music/music"
ND_DATAFOLDER="/srv/music/data"
ND_PORT="4533"
ND_SCANSCHEDULE="1h"

Després:

sudo systemctl daemon-reexec
sudo systemctl enable --now navidrome

Navidrome quedarà corrent a http://localhost:4533.

Primer login

La primera vegada que accedeixis, et demanarà usuari i contrasenya per a crear el compte admin. Després d’això ja podràs pujar portades, canviar configuracions, etc.

Drecera útil: si no vols usuaris múltiples, desactiva el registre en la configuració per a evitar accessos públics.

Instal·lar Jellyfin: servidor multimèdia complet

Des de repositori oficial

wget -O jellyfin.gpg https://repo.jellyfin.org/jellyfin_team.gpg.key
sudo gpg --dearmor -o /usr/share/keyrings/jellyfin-archive-keyring.gpg jellyfin.gpg
 
echo "deb [signed-by=/usr/share/keyrings/jellyfin-archive-keyring.gpg] https://repo.jellyfin.org/debian bullseye main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
 
sudo apt update
sudo apt install jellyfin

(Reemplaça «bullseye» si fas servir una distròs diferent)

Configuració de música

Jellyfin no indexa música automàticament. Ves a http://localhost:8096, accedeix com a admin, i crea una biblioteca amb tipus «Music» apuntant a la teva carpeta:

/srv/music/music

Activa també l’ escaneig automàtic i la descàrrega de metadades. Això millora les caràtules, etiquetes, etc., però depèn dels noms d’arxiu.

Transcodificació

Jellyfin fa servir FFmpeg, així que si vas a reproduir des de dispositius amb formats no compatibles (com FLAC des d’iOS), convé instal·lar la versió correcta.

sudo apt install ffmpeg

Si fas servir targetes NVIDIA o AMD, pots configurar maquinari transcoding des del panell admin.

Notes sobre rendiment

En maquinari limitat (Raspberry Pi, VPS petits), Jellyfin pot fer servir més CPU que Navidrome. Si el sistema se satura, considera desactivar l’ anàlisi de loudness i la normalització de volum.

Integració amb clients mòbils

Navidrome

Compatible amb el protocol Subsonic. Funciona amb:

  1. DSub (Android)
  2. Substreamer
  3. Ultrasónico
  4. Aurial (iOS)

A l’app, només necessites:

  1. URL del servidor (ex: https://tuservidor:4533)
  2. Usuari i contrasenya
  3. Tipus de servidor: Subsonic compatible

Truc pràctic: si actives HTTPS (amb Caddy, Nginx o Traefik), les apps funcionen molt millor. Algunes apps no accepten connexions sense TLS.

Jellyfin

Té apps pròpies:

  1. Jellyfin Music (Android)
  2. Jellyfin (multimèdia general)
  3. Reprodueix també des del navegador mòbil

Per a apps que només gestionen àudio, Jellyfin continua sent una mica més pesat, però usable.

Configurar accés extern amb HTTPS

Cap de les dues eines exposa per defecte un certificat. Si vols accés fora de la LAN, fes servir un proxy invers amb HTTPS.

Exemple amb Nginx

server {
    listen 443 ssl;
    server_name musica.domini.com;
 
    ssl_certificate /etc/letsencrypt/live/domini.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domini.com/privkey.pem;
 
    location / {
        proxy_pass http://localhost:4533;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Recorda obrir el port 443 al firewall:

sudo ufw allow 443/tcp

I renovar els certificats amb cron o certbot.

Organització de la col·lecció: errors comuns que evitar

Ambdós servidors depenen del nom d’ arxius i carpetes per construir la biblioteca. Alguns errors freqüents:

  1. Encabir arxius individuals sense estructura → apareixeran com a «unknown album»
  2. Noms sense tags ID3 vàlides → no apareixen en la recerca
  3. Duplicats amb noms iguals → causen conflictes a la indexació

Estructura recomanada:

/srv/music/music/
├── Pink Floyd/
│   ├── The Wall/
│   │   ├── 01 - In the Flesh?.flac
│   │   ├── 02 - The Thin Ice.flac
│   │   └── ...
├── Daft Punk/
│   ├── Discovery/
│   │   ├── 01 - One More Time.mp3
│   │   ├── ...

Convé fer servir eines com beet (beets.io) o puddletag per a corregir tags abans d’importar.

Logs, backups i actualitzacions

Logs

  1. Navidrome: logs a stdout o a /var/log/syslog si es fa servir systemd.
  2. Jellyfin: /var/lib/jellyfin/log/ per defecte.

Si alguna cosa deixa de funcionar (indexació, transcodificació, etc.), revisa aquí abans de canviar configuracions.

Backups

Fes còpia de:

  1. Arxius de configuració (/srv/music/data a Navidrome, /var/lib/jellyfin a Jellyfin)
  2. Música (si no està recolzada ja)

Fes servir rsync, borg, o qualsevol sistema de snapshots. Ambdós servidors reconstrueixen la base de dades si s’ esborra, però es perden preferències, reproduccions, usuaris, etc.

Actualitzacions

  1. Navidrome: reemplaçar el binari. No hi ha migracions destructives.
  2. Jellyfin: fes servir apt upgrade o el mètode específic de la teva distro. Algunes actualitzacions requereixen aturar el servei per a evitar corrupció.

Llista de verificació tècnica

Sistema:

  1. Crear usuari sense login (music)
  2. Muntar col·lecció en carpeta persistent (/srv/music/music)
  3. Verificar permisos (propietari: music)

Navidroma:

  1. Descarregar binari i moure /usr/local/bin/
  2. Crear servei systemd
  3. Configurar port, carpeta de música i data
  4. Obrir port 4533 si cal

Jellyfin:

  1. Afegir repositori oficial
  2. Instal·lar des d’APT
  3. Crear biblioteca de tipus «Music»
  4. Configurar escaneig i metadades
  5. (Opcional) configurar transcodificació per maquinari

Accés remot:

  1. Instal·leu Nginx (el Caddy)
  2. Obtenir certificat amb Let’s Encrypt
  3. Configurar proxy invers amb HTTPS
  4. Obrir port 443 al tallafoc

Col·lecció:

  1. Organitzar per artista/àlbum
  2. Comproveu les etiquetes FLAC ID3
  3. Netejar duplicats i noms inconsistents

Normalitzar la teva col·lecció amb beets: neteja prèvia a l’escaneig

Si alguna vegada el teu servidor mostra àlbums partits en dos, artistes amb errors tipogràfics o portades mal assignades, el més probable és que les metadades dels arxius estiguin incompletes o mal formatejades.

beets és una eina en línia de comandaments pensada per organitzar col·leccions musicals des d’un enfocament tècnic i reproduïble. No és amigable en aparença, però és extremadament pràctica un cop configurada.

Instal·lació

sudo apt install beets

O des de pip per tenir la versió més recent:

pip install beets

Configuració bàsica

Crea l’arxiu ~/.config/beets/config.yaml amb alguna cosa com ara això:

directory: /srv/music/music
library: ~/.config/beets/library.db
 
import:
    copy: yes
    move: no
    write: yes
    resume: ask
    incremental: yes
    quiet_fallback: skip
    timid: no
 
plugins: fetchart embedart scrub zero
 
fetchart:
    auto: yes
 
embedart:
    auto: yes
 
scrub:
    auto: yes
 
zero:
    fields: comments
    update_database: yes

Aquest arxiu:

  1. Còpia els arxius importats a la carpeta final
  2. Neteja etiquetes innecessàries com a comments
  3. Insereix la portada embeguda (compatible amb Navidrome i Jellyfin)
  4. Fa servir bases de dades públiques (MusicBrainz, etc.) per a corregir tags

Importar la col·lecció

Si la teva música està a /home/usuari/música_caotica/:

beet import /home/usuari/música_caotica/

Et demanarà confirmació per a cada coincidència. Pots fer servir -q per a importar sense preguntar, però només si ja ho has provat abans.

Consell pràctic: importa en blocs petits. Si alguna cosa va malament, és més fàcil desfer.

Contenidor Docker amb Navidrome + Caddy configurat

Si prefereixes no instal·lar paquets directament en el sistema, pots córrer Navidrome en contenidors. Aquest exemple assumeix que fas servir Docker i Docker Compose, i que ja tens un domini amb DNS apuntant al teu servidor.

Estructura del projecte

navidrome-docker/
├── docker-compose.yml
├── Caddyfile
└── data/

docker-compose.yml

version: "3.8"
services:
  navidrome:
    image: deluan/navidrome:latest
    user: "1000:1000"
    volumes:
      - ./data:/data
      - /srv/music/music:/music:ro
    environment:
      - ND_MUSICFOLDER=/music
      - ND_DATAFOLDER=/data
    restart: unless-stopped
    networks:
      - web
 
  caddy:
    image: caddy:latest
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    ports:
      - "80:80"
      - "443:443"
    restart: unless-stopped
    networks:
      - web
 
volumes:
  caddy_data:
  caddy_config:
 
networks:
  web:
    driver: bridge

Caddyfile

music.exemple.com {
   reverse_proxy navidrome:4533
}

Aquest arxiu instrueix Caddy perquè gestioni el certificat TLS automàticament i redirigeixi el tràfic HTTPS cap a Navidrome.

Desplegar

Des de la carpeta:

docker compose up -d

Accedeix al teu navegador a https://music.exemple.com. Caddy generarà i servirà el certificat sense que hagis de configurar res més.

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *