Come creare un indirizzo Mastodon personalizzato

by maurizio
9 minuti
Come creare un indirizzo Mastodon personalizzato

A chi segue quello che accade sui social, sicuramente non è sfuggito che l'acquisto di Twitter da parte del vulcanico e discusso imprenditore Elon Musk, ha scatenato una sorta di fuga di massa da questo social a beneficio di una piattaforma in qualche modo simile, ma con una filosofia più aperta e soprattutto senza un controllo centralizzato: Mastodon.

Non è questa la sede per spiegare in dettaglio cosa sia Mastodon e come funzioni (a chi interessi consiglio questo chiarissimo articolo de Il Post su Mastodon), quello che mi interessa sottolineare qui è che avendo una struttura "federativa" non esiste un solo server/indirizzo Mastodon, come succede con twitter, ma esistono tanti server tutti collegati tra loro.

Accade quindi che mentre su twitter ognuno aveva il suo indirizzo "@qualcosa su twitter.com", ad esempio nel mio caso "@mgiunti" , su Mastodon oltre al nome utente è necessario specificare su quale server del "fediverso" abbia casa quell'indirizzo. Ad esempio nel il mio indirizzo su Mastodon è "@mgiunti@mastodon.uno", cioè il mio account risponde all'indirizzo "mgiunti" sul server Mastodon "mastodon.uno". Infatti mi trovate qui: https://mastodon.uno/@mgiunti .

Se ci fate caso questi indirizzi Mastodon ricordano degli indirizzi email e, come nel caso delle email, avere un indirizzo mionome@outlook.it ha un aspetto meno "professionale" rispetto ad averne uno in cui il dominio appartenga ad un mio brand personale, ad esempio mionome@miobrand.it .

Per fortuna è possibile creare degli alias che consentono di "ribrandizzare" i propri indirizzi Mastodon, a patto  però di disporre di un dominio con uno spazio di hosting, anche minimo, e di non aver paura di "sporcarsi un po' le mani".

Vediamo insieme come si fa.

Il servizio webfinger: come Mastodon trova gli indirizzi

Come abbiamo detto Mastodon è in realtà una federazione di tanti server uniti insieme, e come è facile immaginare ogni server è indipendente dagli altri in tutto, sia nella creazione degli account utente, sia nella gestione degli stessi sia nella  creazione e distribuzione dei post dei propri utenti.

Eppure se dal mio account su mastodon.uno cerco un indirizzo di un utente appartenente ad un server diverso, ad esempio  mastodon.social, non ho problemi a trovarlo.

Questa funzionalità è assicurata attraverso un servizio chiamato webfinger che, come vedremo, possiamo sfruttare per realizzare i nostri alias personalizzati.

Il webfinger di fatto funziona attraverso semplici chiamate http al server di destinazione (nel mio esempio di prima mastodon.social) al quale viene richiesto se su di esso esiste un utente con l'identificativo dato.

Per fare un esempio più concreto, la seguente URL richiede se sul server mastodon.uno esiste il profilo "@mgiunti":

https://mastodon.uno/.well-known/webfinger?resource=acct:mgiunti@mastodon.uno

Se la andiamo ad aprire questa URL, anche semplicemente con il browser, vediamo che il server risponde con un json contenente dei dati relativi al mio profilo:

{
"subject":"acct:mgiunti@mastodon.uno","aliases":
  ["https://mastodon.uno/@mgiunti","https://mastodon.uno/users/mgiunti"],
   "links":[
     {"rel":"http://webfinger.net/rel/profile-page","type":"text/html","href":"https://mastodon.uno/@mgiunti"},
     {"rel":"self","type":"application/activity+json","href":"https://mastodon.uno/users/mgiunti"},
     {"rel":"http://ostatus.org/schema/1.0/subscribe","template":"https://mastodon.uno/authorize_interaction?uri={uri}"}
     ]
}

Nel caso in cui invece si specificasse un indirizzo che non esiste, il server risponderebbe con un codice di errore http 404, pagina non trovata, che in effetti in questo caso vorrebbe dire che il profilo Mastodon con quel nome non è presente sul server.

Analizzando il JSON del mio profilo su mastodon.uno, notiamo come in realtà contenga un indirizzo Mastodon seguito da un array di alias rappresentati come URL. 

Usare un handle personalizzato

Supponiamo che adesso voglia fare in modo da poter utilizzare un nome personalizzato, ad esempio "@mgiunti@mauriziogiunti.it" come mio identificativo su Mastodon.

Per farlo, avendo la disponibilità del dominio mauriziogiunti.it (che è quello sul quale probabilmente state leggendo questo post), basterà creare nella cartella dell'hosting di questo dominio una directory /.well-known/webfinger e inserire in essa un file index.html contenente solo la copia del json scaricato da mastodon.uno.

In questo modo un qualsiasi server Mastodon, usando il servizio webfinger verso l'indirizzo @mgiunti@mauriziogiunti.it,  scaricherebbe il contenuto della url https://mauriziogiunti.it/.well-known/webfinger?resource=acct:mgiunti@mauriziogiunti.it e il mio server risponderebbe con il json contenente i vari link al mio indirizzo su mastodon.uno. Grazie a questo l'indirizzo Mastodon @mgiunti@mauriziogiunti.it verrebbe tradotto in @mgiunti@mastodon.uno, che è effettivamente il mio indirizzo su Mastodon.

A questo punto potremmo dire che il risultato è raggiunto, ma a voler essere pignoli c'è un problema, infatti a qualsiasi richiesta fatta a quella pagina il server risponderebbe con il mio indirizzo Mastodon, creando di fatto una serie infinita di alias. In pratica qualsiasi indirizzo @XXXXX@mauriziogiunti.it verrebbe rimappato su @mgiunti@mastodon.uno. 

Nel mio caso questo potrebbe non rappresentare un grosso problema in quanto il dominio in questione è a mio uso esclusivo, ma si può sicuramente fare di meglio.

Rendiamo il puntamento più selettivo

Per rendere il puntamento più selettivo e farlo attivare solo per l'indirizzo "mgiunti" dobbiamo usare un po' di scripting lato server. Nel mio caso, essendo questo server già equipaggiato con l'interprete PHP, basta una manciata di righe di script per sostituire il file index.html visto prima con un index.php che invia il json con gli alias solo se viene richiesto l'indirizzo giusto (mgiunti) e l'errore 404 in tutti gli altri casi.

Ho quindi creato sul mio server il file /.well-known/webfinger/index.php contenente le seguenti righe:

<?php

$res=@$_GET['resource'];
if($res!='acct:mgiunti@mauriziogiunti.it') {
header('HTTP/1.0 404 Not Found');
die();
}
?>
{
"subject":"acct:mgiunti@mastodon.uno",
"aliases":[
"https://mastodon.uno/@mgiunti",
"https://mastodon.uno/users/mgiunti"],
"links":[
{"rel":"http://webfinger.net/rel/profile-page","type":"text/html","href":"https://mastodon.uno/@mgiunti"},
{"rel":"self","type":"application/activity+json","href":"https://mastodon.uno/users/mgiunti"},
{"rel":"http://ostatus.org/schema/1.0/subscribe","template":"https://mastodon.uno/authorize_interaction?uri={uri}"}]
}

A questo punto posso dichiararmi soddisfatto: chiunque mi può trovare con l'indirizzo Mastodon @mgiunti@mauriziogiunti.it che sarà automaticamente trasformato in @mgiunti@mastodon.uno.

La verifica dell'effettivo funzionamento del puntamento è chiaramente visibile nell'immagine seguente: ho cercato il mio nuovo indirizzo usando un server della rete Mastodon negli USA dove ho un account secondario e l'indirizzo @mgiunti@mauriziogiunti.it è stato correttamente individuato e tradotto in @mgiunti@mastodon.uno.

Conclusioni

La rete Mastodon consente di creare facilmente un alias per i propri account, quindi è possibile crearsi un indirizzo personalizzato. Basta disporre di un dominio con hosting dove creare un file testo o meglio un file PHP di poche righe per ottenere il risultato in modo semplice e veloce e soprattutto senza dover chiedere nessun tipo di autorizzazione o verifica a Mastodon.

Quindi ci vediamo presto su Mastodon dove potete trovarmi come @mgiunti@mauriziogiunti.it  :-)