Streammare musica da casa ovunque siate via ssh tunnel

A lavoro ho da poco migrato tutte le mie robe su un portatile nuovo. Mi sono accorto che l’80% dello spazio sul portatile era occupato da mp3 e musica varia, cosi’ ho deciso di non mettere mai piu’ musica nel suo hard disk, spreco di spazio inutile visto che viviamo nel mondo della connettivita’ ormai dappertutto.

Cosi’ mi sono detto, ho un bel mac mini a casa col wake-on-lan funzionante, zeppo di musica, questa ridondanza non ha senso, usiamo l’internet per streammare la musica dal computer di casa mentre sono a lavoro!

Mi sono documentato un po’ e ho visto che in Linux si puo’ installare un tool chiamato mt-daapd (http://www.fireflymediaserver.org), ora conosciuto come FireFly media server; questo tool implementa il protocollo DAAP (http://en.wikipedia.org/wiki/Digital_Audio_Access_Protocol), Digital Audio Access Protocol: e’ un protocollo proprietario usato da Apple nel suo iTunes per streammare audio/video in una rete locale. Questo vuol dire che i media player che parlano DAAP (iTunes ed Amarok per esempio) sono in grado di fare l’autodiscovery di host daap-enabled nella rete locale in cui vi trovate perche’ DAAP funziona in broadcast.

Per mettere su tutto questo ambaradam in Debian/Ubuntu basta installare il too:

$ sudo aptitude install mt-daapd libid3tag0 avahi-utils

Avahi-utils vi servira’ solo se volete ascoltare la musica fuori da casa, altrimenti mt-daapd e’ gia’ ok se il vostro intento e’ streammare musica da un altro host della vostra rete casalinga e niente piu’.

A questo punto configurate il daemon editando /etc/mt-daapd.conf. Io ho solo cambiato questa linea:

mp3_dir = /home/pallotron/Music/

Per puntare alla directory della mia home dove sta tutta la musica. Ma voi date un occhio al file per capire cosa altro potete cambiare a seconda delle vostre esigenze.

Avviate il daemon e fate in modo che parta al boot:

$ sudo  /etc/init.d/mt-daapd start $ sudo update-rc.d mt-daapd defaults

A questo punto il vostro server ascoltera’ sulla porta 3689:

root@pallomac:~# netstat -tunap | grep LISTEN | grep mt-daapd
tcp        0      0 0.0.0.0:3689            0.0.0.0:*               LISTEN      18584/mt-daapd

Questo tool ha una interfaccia web che potete usare per vari scopi: creare playlist, definire nuove directory dove trovare la musica, configurare il tool (password, etc). Basta puntare il proprio browser su http://localhost:6689/ o cambiare localhost con l’ip/hostname del vostro computer casalingo.

Ok, una volta che questo e’ fatto viene il bello, un requisito importante e’ che voi siate in grado di accedere al vostro host casalingo usando ssh, il vostro router casalingo deve essere configurato per redirigere la porta SSH (tcp/22) all’ip del vostro computer casalingo. Io a casa assegno due IP fissi ai mac address delle due interfaccie del computer (ethernet e wifi) tramite il DHCP server del router.

A questo punto dal vostro computer in ufficio o dovunque voi siate usate un bel ssh tunnel:

$ ssh vostrouser@ip_pubblico_di_casa -L :6689:localhost:3689

O se preferite potete configurare ~/.ssh/config per aggiungere qualcosa tipo:

Host IP_CASA
   Username VOSTROUSER
   LocalForward *:3689  localhost:3689

A questo punto potete connettere il vostro player preferito a localhost:3689 et voila’, potete vedere tutta la musica sul vostro computer a casa e iniziare ad ascoltare 🙂

Ho verificato che banshee ancora non supporta DAAP, mentre rhythmbox supporat DAAP ma senza autodiscovery, cioe’ inserendo a mano la URL del server… mentre amarok e iTunes supportano l’autodisvovery.

L’autodiscovery funzionera’ automaticamente se vi trovate a casa ma se vi trovate fuori dovete utilizzare questo comando Avahi (http://en.wikipedia.org/wiki/Avahi_(software)):

$ avahi-publish-address -v -s "my daap share" _daap._tcp. 6689 &

Avahi e’ una cosa che devo ancora approfondire meglio, potete verificare che il vostro computer sta esportando correttamente lo share usando il comando:

$ avahi-browse _daap._tcp

Dovreste vedere il nome del vostro share apparire.

Se intendete esportare la musica ai vostri colleghi vi avviso che probabilmente questo e’ contro le regole aziendali. Quindi meglio non usare AVAHI 😛

Buon ascolto!

Edit

Ho trovato un po’ di info a queste URL:

http://wiki.fireflymediaserver.org/SSH_Tunnel

http://wiki.fireflymediaserver.org/RemoteAccess

Pare sia meglio usare una porta diversa da 3689 nel comando ssh, perche’ pare banshee provi a bindare la 3689, io ho scelto 6689… Di conseguenza cambiare anche il comando avahi per usare la porta 6689… e pare anche che dovete utilizzare l’IP del vostro laptop a lavoro e non localhost, cosi’ i comandi diventano:

$ ssh vostrouser@ip_pubblico_di_casa -L *:6689:localhost:3689

oppure nel vostro ~/.ssh/config:

Host IP_CASA
   Username VOSTROUSER
   LocalForward *:6689  localhost:3689

E poi lanciare avahi cosi’:

$ avahi-publish-address -v -s "my daap share" _daap._tcp. 6689 &
Edit2
Potete aggiungere le opzioni -N e -f al comando ssh per evitare di mantenere una shell aperta tutto il tempo, ma poi vi dovete ricordare di killare il processo ssh connesso al vostro server casalingo:

$ ssh vostrouser@ip_pubblico_di_casa -N -g -L *:6689:localhost:3689

Comments Posted in Informatica, Linux
Tagged , , , , ,

Comments

  1. spank says:

    @pallotron
    ho fatto un port forward dall’antenna al nas della porta 24 che utilizzo sul nas come ssh, sul nas come ti avevo già detto gira il daap sulla 3689..

    ho provato una cosa di questo tipo:
    ssh -p 24 indirizzo_ippubblico_antenna -L *:3689:localhost:3689

    ho lasciato la 3689 perchè li non gira banshee ma solo il protocollo quindi era inutile cambiare la porta del servizio..
    questa è stata la risposta:
    The authenticity of host ‘[ippubblico]:24 ([ippubblico]:24)’ can’t be established.
    RSA key fingerprint is 7f:c2:02:f1:17:df:8a:de:5a:a5:57:d3:90:7a:f2:5f.
    Are you sure you want to continue connecting (yes/no)?
    Please type ‘yes’ or ‘no’: yes
    Warning: Permanently added ‘[ippubblico]:24’ (RSA) to the list of known hosts.

    e poi mi da:
    Connection closed by ippubblico

    cosa ho sbagliato?

  2. spank says:

    @pallotron – ok, grazie! adesso proverò a vedere se funziona almeno la connessione.. poi credo che non sia installato avahi (ma ho visto che si può fare), ti aggiorno quanto prima!
    per il momento grazie.

  3. spank says:

    Ciao, ho letto il tuo articolo e mi piacerebbe metterlo in pratica anche se ho una configurazione un po diversa…
    ti spiego la mia situazione:
    io ho un router con ip statico su wan che ha di default abilitato l’ssh nella mia rete interna ho un nas con ssh abilitato sul quale risiede un itunes server con installato mt-daap.
    Come posso fare per lanciare una connessione ssh da pc in remoto verso il nas con il servizio daap attivo?
    Riusciresti a darmi una mano?
    Grazie mille!

    1. pallotron says:

      @spank: non e’ che sia molto diversa la configurazione… port forwarding? mica devi per forza usare la porta 22…

  4. TopGun says:

    che ficata.