XMPP detto anche Jabber è un protocollo aperto per la messaggistica istantanea come SMTP lo è per la posta elettronica. E’ utilizzato da più di vent’anni da milioni di persone ovunque nel mondo, quindi è ben rodato, sicuro ed affidabile. Questo il sito di riferimento: https://xmpp.org/
Gli indirizzi XMPP si scrivono come quelli e-mail, ad esempio: mionome@miodomino.it
E’ un sistema decentralizzato, ovvero tutti i server comunicano tra loro senza la necessità di appartenere allo stesso fornitore di servizio, proprio come nel caso dell’ e-mail: ti puoi registrare con qualunque gestore e scrivere a chiunque abbia un indirizzo di posta elettronica, anche di altri gestori, usando i programmi che preferisci. Il gestore è indicato dalla parte che viene dopo la `@`.
Con soluzioni centralizzate come WhatsApp invece sei obbligato ad iscriverti a quel servizio, ad utilizzare i loro server e la loro app predefinita oltreché ad aderire alle loro politiche sui dati personali.
Quindi puoi contattare solo gli altri utenti che hanno fatto la medesima scelta. Immagina WhatsApp come un servizio XMPP “defederato”, cioè isolato da tutti gli altri servizi, e “chiuso”, cioè solo chi gestisce WhatsApp sa come funziona internamente.
E’ un progetto che cerca di ampliare la tua possibilità di scelta nel campo della messaggistica, permettendoti di diventare gestore. Il progetto prevede quindi innanzitutto un programma da installare sul tuo server fisico o virtuale per configurarlo in modo da riuscire a gestire autonomamente la messaggistica tramite il protocollo XMPP.
Questo è il sito del progetto: https://snikket.org/
E’ studiato con l’intento di facilitare la gestione e far sì che (quasi) tutti possano avere il proprio servizio di messaggistica autogestito, da offrire anche a parenti ed amici, da cui si potrà contattare chiunque abbia un indirizzo su qualunque altro server al mondo.
Inoltre include un’interfaccia grafica con impostazioni semplificate al massimo per creare dei profili per i propri contatti e raggrupparli in cerchie di amicizia come famiglia, lavoro, associazione, ecc., così che ogni cerchia abbia già il contatto XMPP degli altri inclusi nella stessa. Snikket è anche il nome del client, l’app che puoi usare per i tuoi messaggi.
Il programma è gratuito, se ti piace l’idea puoi sostenere gli sviluppatori con una donazione liberale qui: https://snikket.org/donate/
Avrai bisogno di un dominio e di un server virtuale: generalmente sono a pagamento ma si tratta di poche decine d’euro all’anno per fornire il servizio a tutto il tuo gruppo di contatti. Cifre risibili.
Il regime di monopolio non è mai un vantaggio per gli utenti. Nel mondo ma soprattutto in Italia WhatsApp è monopolista nel settore della messaggistica. Cambiare in favore di piattaforme minori come Telegram o Signal non fa che spostare il problema. Considera inoltre che queste migrazioni possono aver senso solo se gran parte dei tuoi contatti si avvale dello stesso servizio, mentre con XMPP ognuno è libero di scegliere a che servizio iscriversi (come per le mail) o se dotarsi del proprio server.
Inoltre tutti questi servizi chiedono di riconoscerti tramite il numero di telefono, cosa che impedisce o rende difficile gestire in autonomia le proprie identità. Con XMPP puoi decidere ad esempio di usare una identità per il lavoro ed una per il tempo libero, decidendo quando attivare una o l’altra o anche entrambe contemporaneamente. Non è un programma che spia nella tua rubrica a decidere chi è un tuo contatto, sei tu!
Con la presente guida dovrebbe essere alla portata di chi ha delle abilità informatiche medio-basse. Se hai installato sul tuo pc qualche distribuzione Linux probabilmente è il tuo caso, se pensi di non essere in grado puoi chiedere a un amico smanettone o utilizzare XMPP creandoti un profilo su un server pubblico che puoi scegliere ad esempio tra le liste suggerite qui: https://xmpp.org/getting-started/#2-create-an-account
Per prima cosa devi avere un dominio che supporti i sottodomini, lo puoi acquistare su un qualunque provider. Poi devi procurarti un server virtuale (VPS) con Linux. Per fornire il servizio ad un gruppo ristretto di utenti come la propria famiglia o un’associazione di piccole dimensioni sarà sufficiente un VPS con 1Gb di RAM.
Le seguenti istruzioni provengono da https://snikket.org/service/quickstart/ a cui si rimanda per ulteriori informazioni e casistiche differenti.
Cerca l’ip del tuo server dal suo pannello di controllo. Questo ip va aggiunto nei DNS del tuo dominio. Su alcuni provider c’è scritto “Zone DNS”.
Ricorda di aggiungere tutti e tre i sottodomini. Nota: Nel pannello di controllo di alcuni fornitori i TTL sono espressi in minuti, 300 = 5 min.
Ora connettiti col terminale utilizzando il comando
ssh root@il.tuo.ip
alla richiesta Are you sure you want to continue connecting (yes/no/\[fingerprint\])? Rispondi Yes e incolla la pwd, che non si vedrà. Sei entrato come amministratore, aggiorna il server con
sudo apt update
e
sudo apt upgrade
Adesso devi installare Docker, è propedeutico all’installazione di Snikket. Segui le istruzioni su https://docs.docker.com/engine/install/ubuntu/ o quella riferita alla tua distro. Io ho seguito il primo metodo elencato, quindi i comandi sono:
sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Se l’ultimo comando dovesse restituire un errore completare l’installazione con:
sudo apt install docker.io
In seguito installa Docker-compose con questi comandi:
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod a+x /usr/local/bin/docker-compose
Bene, ora crea la cartella di configurazione:
sudo mkdir /etc/snikket
entraci:
cd /etc/snikket
e stando nella stessa cartella scarica il file:
sudo curl -o docker-compose.yml https://snikket.org/service/resources/docker-compose.beta.yml
Sempre qui crea il file di configurazione usando vim o nano (come nell’esempio):
sudo nano /etc/snikket/snikket.conf
e copiaci dentro questi valori:
# The primary domain of your Snikket instance SNIKKET_DOMAIN=chat.example.com # An email address where the admin can be contacted # (also used to register your Let's Encrypt account to obtain certificates) SNIKKET_ADMIN_EMAIL=you@example.com
Ovviamente modificando con i tuoi valori Salva il file e dai questo comando:
sudo docker-compose up -d
Hai fatto!
Ora devi creare il tuo profilo amministrativo con cui puoi entrare da browser nel tuo chat.dominio.it con la parola d’ordine che ti viene suggerita. Il comando per crearlo è
sudo docker exec snikket create-invite --admin --group default
Ti viene generato un link utilizzabile una sola volta. Tutti gli altri utenti li puoi creare dal tuo pannello di controllo una volta eseguito l’accesso.
Perché Snikket funzioni devi aprire le porte del server virtuale descritte qui: https://github.com/snikket-im/snikket-server/blob/master/docs/advanced/firewall.md#ports
La porta 22 permette l’accesso al VPS quindi potresti pensare di migliorare la sicurezza abilitando l’accesso solo con chiave.
Se vuoi maggiori informazioni ti consigliamo di iniziare creando prima un account xmpp su uno dei server pubblici e poi unirti a dei gruppi (MUC, Multi User Chat in terminologia XMPP) specifici. Se hai già un client XMPP installato gli indirizzi che seguono, che iniziano con xmpp:, se copiati e incollati in un browser ti porteranno direttamente dentro il gruppo.
Se hai bisogno di supporto su Snikket c’è il gruppo ufficiale (in inglese): general@channels.snikket.org?join
Se preferisci un gruppo italiano qui troverai degli appassionati: xmpp-it@conference.xmpp-it.net?join