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.
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!