Linux
Installazione di AirSonic-Advanced come container Docker su Raspberry Pi

Installazione di AirSonic-Advanced come container Docker su Raspberry Pi

Cos’è Airsonic-Advanced?

Airsonic-Advanced è un’implementazione più moderna di Airsonic con diversi miglioramenti in termini di prestazioni e caratteristiche chiave. Aggiunge e sostituisce diverse caratteristiche di Airsonic.

Airsonic è un media streamer gratuito, basato su interfaccia web, che fornisce un accesso alla vostra musica (ovunque voi siate purchè siate connessi ad internet e abbiate configurato un “port-mapping” o “NAT” sul vostro modem/router e abbiate o un IP pubblico o un DDNS impostato). E’ possibile utilizzarlo per condividere la vostra musica con gli amici, o per ascoltarla mentre siete al lavoro. Inoltre è possibile trasmettere la musica su più player simultaneamente, per esempio a un player sul tuo smartphone e a un altro sul tuo pc. In parole povere una sorta di Spotify, ma dove la musica è la vostra.

Airsonic è progettato per gestire librerie musicali molto grandi (centinaia di gigabyte). Sebbene sia ottimizzato per lo streaming MP3, funziona per qualsiasi formato audio che può essere trasmesso tramite HTTP, ad esempio AAC e OGG. Utilizzando i plug-in di transcodifica, Airsonic supporta la conversione e lo streaming “on the fly” di praticamente qualsiasi formato audio, compresi WMA, FLAC, APE, Musepack, WavPack e Shorten.

Se si ha una larghezza di banda (ADSL) limitata, è possibile impostare un limite per il bitrate dei flussi musicali. Airsonic quindi ricampionerà automaticamente la musica a un bitrate adatto.

Oltre ad essere un media server per lo streaming, Airsonic funziona molto bene anche come jukebox locale. L’intuitiva interfaccia web, così come le funzioni di ricerca e l’indice, sono ottimizzati per una navigazione efficiente su grandi librerie. Airsonic viene anche fornito con un ricevitore di Podcast integrato, con molte delle stesse caratteristiche che si trovano in iTunes.

Scritto in Java, Airsonic funziona sulla maggior parte delle piattaforme, comprese le varianti Windows, Mac, Linux e Unix ed anche come container Docker.

Screenshot

Requisiti

Vediamo quali sono i requisiti necessari affinché sia possibile raggiungere il nostro obiettivo. In questo caso parliamo di requisiti sia in termini hardware, sia in termini software che di tipo networking.
Per quanto riguarda l’hardware prendiamo in considerazione il Raspberry Pi e come modello di riferimento dalla versione 3 Model B+ o superiori. Un ulteriore requisito hardware è uno spazio di archiviazione sufficiente ad ospitare la nostra libreria musicale. Questo spazio potrà essere sulla microSD del nostro Raspberry Pi oppure su un Hard Disk esterno collegato via USB, o anche su una unità NAS.
Per quel che riguarda i requisiti software di base mi limiterò a considerare il sistema operativo installato sul Raspberry Pi, la presenza del servizio Docker e di docker-compose.
Generalmente consiglio d’installare Raspberry Pi OS, sistema operativo gratuito basato su Debian e ottimizzato per l’hardware del Raspberry Pi.
Per quanto riguarda l’installazione del pacchetto docker consiglio di seguire questa guida.
Altro requisito è di tipo networking, per poter accedere da remoto alla nostra libreria musical dobbiamo avere a disposizione un indirizzo IP pubblico o in alternativa utilizzare un servizio di DDNS che ci consenta di raggiungere la nostra rete tramite un nome di dominio (qui una guida come utilizzare DuckDNS) e, a sua volta, aver girato le porte necessarie verso il nostro Raspberry Pi sul nostro Router (in questo tutorial sarà necessario nattare la porta TCP 4040 o in alternativa possiamo utilizzare un proxy)

Prima di andare oltre, accertiamoci che nel frattempo non siano stati rilasciati aggiornamenti per la distribuzione di Raspberry Pi OS, in caso procediamo con l’aggiornamento. Possiamo aggiornare la distribuzione utilizzando il seguente comando 

sudo apt update && sudo apt dist-upgrade

Preparazione ambiente

Personalmente sul mio Raspberry Pi ho molti container docker e per avere una visione più chiara nella struttura a cartelle, ho preferito annidare all’interno di un unica cartella tutti i container (ognuno con la propria sotto-cartella)

per cui seguendo questo esempio, apriamo una sessione SSH, o in alternativa armiamoci di monitor, tastiera e mouse e una volta entrati nella sessione terminale, digitiamo:

cd ~

ora se abbiamo gia la cartella Docker digiteremo

cd Docker

oppure se vogliamo creare questa cartelle digiteremo:

mkdir Docker && cd Docker

a questo punto andremo a creare la sotto-cartella che conterrà il file di configurazione del nostro prossimo container e a sua volta ci posizioneremo al suo interno:

mkdir AirSonic && cd AirSonic

fatto ciò possiamo creare il nostro file attraverso il seguente comando:

nano docker-compose.yml

e riportiamo al suo interno quanto segue:

version: "3"
services:
  airsonic-advanced:
    image: airsonicadvanced/airsonic-advanced:latest
    container_name: airsonic-advanced
    environment:
      - TZ=Europe/Rome
#      - CONTEXT_PATH=<URL_BASE>       #opzionale
#      - JAVA_OPTS=<options>           #opzionale
    volumes:
      - ./playlists:/var/playlists
      - ./podcasts:/var/podcasts
      - ./data:/var/airsonic
      - ./music:/var/music

    ports:
      - 4040:4040
      - 4041:4041
#    devices:
#      - /dev/snd:/dev/snd #opzionale ... se si vuole abilitare la modalità jukebox in AirSonic
    restart: unless-stopped      

Nella sezione volumes: ho dichiarato ./playlists: ./podcasts: ./data: e ./music:.
Il ./ posizionato davanti al nome della cartella indica che questa si troverà allinterno della cartella dove è eseguito il file docker-compose per cui tutta la libreria musicale (playlists podcasts e music) e la configurazione e il db di Airsonic (data) saranno ospitati all’interno della microSD del nostro Raspberry Pi.
Personalmente avendo a disposizione una unità NAS, ho preferito far ospitare tutti questi dati su questa unità, utilizzando il protocollo NFS e per eseguire il mount di questi volumi direttamente dal container stesso ho utilizzato la seguente versione del file docker-compose.yml

version: "3"
services:
  airsonic-advanced:
    image: airsonicadvanced/airsonic-advanced:latest
    container_name: airsonic-advanced
    environment:
      - TZ=Europe/Rome
#      - CONTEXT_PATH=<URL_BASE>      #opzionale
#      - JAVA_OPTS=<options>          #opzionale
    volumes:
      - playlists:/var/playlists
      - podcasts:/var/podcasts
      - data:/var/airsonic
      - music:/var/music

    ports:
      - 4040:4040
      - 4041:4041
#    devices:
#      - /dev/snd:/dev/snd #opzionale ... se si vuole abilitare la modalità jukebox in AirSonic
    restart: unless-stopped

volumes:
  data:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.0.200,nolock,soft,rw    #sostituire l'ip con quello del vostro server nfs
      device: :/volume1/AirSonic/data         #cartella sul NAS da montare nel volume data
  music:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.0.200,nolock,soft,rw    #sostituire l'ip con quello del vostro server nfs
      device: :/volume1/AirSonic/Music        #cartella sul NAS da montare nel volume music
  playlists:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.0.200,nolock,soft,rw    #sostituire l'ip con quello del vostro server nfs
      device: :/volume1/AirSonic/playlists    #cartella sul NAS da montare nel volume playlists
  podcasts:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.0.200,nolock,soft,rw    #sostituire l'ip con quello del vostro server nfs
      device: :/volume1/AirSonic/podcasts     #cartella sul NAS da montare nel volume podcasts
             

Una volta scelto quale dei due docker-compose utilizzare, incollato il testo e modificato secondo le nostre esigenze, possiamo chiudere il file digitando CRTL+X dopo di che digitiamo Y o S (a seconda della lingua impostata) ed infine premiamo il tasto ENTER per confermare.

A questo punto possiamo lanciare il seguente comando per scaricare e avviare AirSonic-advanced con i parametri stabiliti:

docker-compose up -d

Una volta terminata l’esecuzione del comando docker-compose attendiamo qualche minuto dopo di che possiamo provare ad accedere all’interfaccia web di AirSonic aprendo un browser internet sul nostro computer e nella barra del percorso digiteremo:

http://<IP-DEL-TUO-RASPBERRY-PI>:4040

Come ben descritto nella schermata che visualizzeremo, le credenziali per accedere all’interfaccia web di airsonic saranno:

username – admin
password – admin

Non appena effettueremo l’accesso verremo accolti da una schermata di benvenuto che ci guiderà passo passo ad eseguire gli step preliminari per utilizzare l’interfaccia, primo fra tutti quello di cambiare la password dell’utente admin, poi quello di impostare le cartelle dove sono contenuti i nostri media ed infine dove trovare documentazione online riguardo al servizio di AirSonic.

A questo punto per poter rendere accessibile dall’esterno della nostra abitazione questa interfaccia web non dovremmo far altro che nattare la stessa porta dalla porta WAN del nostro router verso la medesima porta del nonstro Raspberry Pi sulla LAN.

Se volessimo collegarci a questo servizio da uno smartphone o tablet in completa comodità, consiglio di utilizzare una delle applicazioni riportate nel seguente link:
https://airsonic.github.io/docs/apps/

Buon divertimento!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *