Featured image
Info

Indice Serie Homelab

Libertà digitale: creare un ecosistema di servizi personali senza dipendere dalle big tech.

  1. Homelab: Necessità o Capriccio?
  2. Homelab: Proxmox e Container LXC
  3. Homelab: Setup Immich
  4. Homelab: Setup Navidrome
  5. Homelab: Accesso Remoto Sicuro
  6. Homelab: Migrazione da iCloud a Immich
  7. Homelab: Setup AFFiNE
  8. Homelab: Paperless-NGX e Gestione Documenti

Dal Controllo Foto al Controllo Musica Link to heading

Nel precedente articolo abbiamo configurato Immich per la gestione delle foto con storage esterno dedicato. Con Immich operativo e i backup ancora da configurare, decido di espandere l’homelab. Il prossimo servizio: Navidrome, un server di streaming musicale self-hosted che trasforma la nostra collezione MP3/FLAC in un servizio simile a Spotify, ma completamente sotto il nostro controllo.

Info
Navidrome vs servizi commerciali: Nessun abbonamento mensile, nessun algoritmo che decide cosa ascoltare, nessuna limitazione geografica. La tua musica, accessibile ovunque tu sia, con app compatibili Subsonic su tutti i dispositivi.

Container Dedicato per Navidrome Link to heading

Seguendo l’approccio di isolamento servizio per container, creiamo un container LXC dedicato esclusivamente a Navidrome.

Creazione Container Navidrome Link to heading

Via Interfaccia Web Proxmox:

  1. Create CTGeneral

    • CT ID: 103
    • Hostname: navidrome
    • Password: Impostare password sicura
  2. Template: ubuntu-22.04-standard

  3. Root Disk:

    • Storage: local-lvm
    • Disk size: 8 GB (minimo, dati su disco esterno)
  4. CPU:

    • Cores: 1 (sufficiente per streaming musicale)
  5. Memory:

    • Memory: 512 MB
    • Swap: 512 MB
  6. Network:

    • Bridge: vmbr0
    • IPv4: Static
    • IPv4/CIDR: 192.168.1.206/24
    • Gateway: 192.168.1.1
    • Firewall: ✓ Enabled

Mount Point Storage hermes Link to heading

Via Interfaccia Web Proxmox:

  1. Selezionare container navidrome (ID 103)
  2. ResourcesAddMount Point
  3. Mount Point ID: mp0 (default)
  4. Storage: hermes
  5. Disk size: 50 GB
  6. Path in Container: /navidrome-data
  7. Backup: ✓

Preparazione Directory Storage Link to heading

# Dall'HOST PROXMOX
mkdir -p /mnt/hermes/navidrome/{data,music}

# Struttura:
# /mnt/hermes/
# ├── immich/
# └── navidrome/
#     ├── data/         (database e cache)
#     └── music/        (libreria musicale)

Setup Docker nel Container Link to heading

# Avviare e entrare nel container
pct start 103
pct enter 103

# Aggiornamento e installazione Docker
apt update && apt upgrade -y
curl -fsSL https://get.docker.com | sudo sh
usermod -aG docker $USER

# Verificare mount point
df -h /navidrome-data
ls -la /navidrome-data/

# Creare directory di lavoro
mkdir -p /root/navidrome-app

Setup Navidrome con Docker Compose Link to heading

Seguiamo la guida ufficiale di Navidrome adattata al nostro environment homelab.

Configurazione Docker Compose Link to heading

# Entrare nella directory di lavoro
cd /root/navidrome-app

# Creare docker-compose.yml
nano docker-compose.yml

Configurazione Docker Compose:

version: "3"
services:
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    user: 1000:1000
    ports:
      - "4533:4533"
    restart: unless-stopped
    environment:
      - ND_MUSICFOLDER=/music
      - ND_DATAFOLDER=/data
      - ND_SCANSCHEDULE=@every 1h
      - ND_LOGLEVEL=info
      - ND_ENABLEDOWNLOADS=true
      - ND_SESSIONTIMEOUT=24h
      - ND_UIWELCOMEMESSAGE="Musica Homelab"
      - ND_DEFAULTTHEME=Dark
    volumes:
      - "/navidrome-data/data:/data"
      - "/navidrome-data/music:/music:ro"

Preparazione Directory e Permessi Link to heading

Prima del primo avvio, configuriamo i permessi corretti per le directory di Navidrome:

# Dal container navidrome (pct enter 103)
# Creare directory necessarie
mkdir -p /navidrome-data/{data,music}

# Impostare permessi corretti per utente Docker 1000:1000
chown -R 1000:1000 /navidrome-data/
chmod -R 755 /navidrome-data/

# Verificare permessi
ls -la /navidrome-data/

Primo Avvio Link to heading

# Avvio container
cd /root/navidrome-app
docker-compose up -d

# Verificare stato
docker-compose ps
docker-compose logs navidrome

# Output atteso:
# navidrome | INFO Navidrome is ready!

Trasferimento Musica dal PC Link to heading

Opzione 1: SCP/rsync da PC (Raccomandato) Link to heading

Prima: Abilitare SSH nel container

Warning
SSH richiesto: Per trasferimenti diretti via rsync/scp, il container deve avere SSH server attivo. Senza SSH, la connessione viene rifiutata.
# Dal container navidrome (pct enter 103)
# Installare e abilitare SSH
apt update && apt install -y openssh-server
systemctl enable ssh
systemctl start ssh

# Permettere login root via SSH
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
systemctl restart ssh

# Verificare SSH attivo
systemctl status ssh

Trasferimento Musica

Tip
rsync vs SCP: Preferire rsync perché riprende trasferimenti interrotti, mostra progresso dettagliato e preserva meglio metadati. Con SSH abilitato, rsync gestisce automaticamente i permessi corretti.
# RSYNC (raccomandato) - dal tuo PC
# Copiare CONTENUTO della cartella (nota lo slash finale)
rsync -av --progress /path/to/MusicLibrary/ [email protected]:/navidrome-data/music/

# SCP alternativo - dal tuo PC
# Copiare cartella e contenuto (senza slash finale)
scp -r /path/to/MusicLibrary [email protected]:/navidrome-data/music/

# IMPORTANTE: Dopo il trasferimento, correggere permessi nel container
ssh [email protected] "chown -R 1000:1000 /navidrome-data/music/ && chmod -R 755 /navidrome-data/music/"

# Struttura finale desiderata:
# /navidrome-data/music/
# ├── Artist1/Album1/01-Track.mp3
# ├── Artist2/Album2/02-Track.flac
# └── ...

Opzione 2: Condivisione di Rete (SMB/CIFS) Link to heading

# Dal container navidrome - installare samba per condivisione
apt update && apt install -y samba

# Creare utente samba
smbpasswd -a root

# Configurare condivisione in /etc/samba/smb.conf
echo '[music-share]
path = /navidrome-data/music
browseable = yes
writable = yes
guest ok = no
valid users = root' >> /etc/samba/smb.conf

# Riavviare samba
systemctl restart smbd

# Dal PC Windows: accedere a \\192.168.1.206\music-share

Opzione 3: Drive USB direttamente su Mini PC Link to heading

# Dal container navidrome - passthrough USB drive
# (Configurare USB passthrough in Proxmox prima)

# Verificare dispositivi USB
lsblk

# Montare drive USB
mkdir -p /mnt/usb-music
mount /dev/sdb1 /mnt/usb-music

# Copiare musica mantenendo struttura
rsync -av --progress /mnt/usb-music/ /navidrome-data/music/

# Smontare drive
umount /mnt/usb-music

Impostazione Permessi Post-Trasferimento Link to heading

# Dopo qualsiasi metodo di trasferimento
# Impostare permessi corretti per Docker
chown -R 1000:1000 /navidrome-data/music/
chmod -R 755 /navidrome-data/music/

# Verificare struttura
ls -la /navidrome-data/music/

Prima Configurazione Web Link to heading

  1. URL: http://192.168.1.206:4533
  2. Prima visita: Creazione account amministratore
  3. Library Scan: Si avvia automaticamente

Test Funzionalità Link to heading

  1. Browse Library: Verificare navigazione per artista/album
  2. Play Music: Test riproduzione nel browser
  3. Mobile Apps: Configurare app Subsonic - io ho usato Amperfy sia su mac che su ios, il top sembra essere Symfonium

Prossimi Passi Link to heading

Con Navidrome operativo e la musica personale in streaming, l’homelab offre già un’alternativa concreta a Spotify e Apple Music. Immich e Navidrome funzionano perfettamente, ma solo da casa.

Il passo successivo è cruciale: rendere questi servizi accessibili ovunque mantenendo la sicurezza.

Continua con: Homelab: Accesso Remoto Sicuro