XMPP + Snikket

Cenni Introduttivi

Cos’è XMPP/Jabber?

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.

Cos’è Snikket?

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.

Quanto costa?

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.

Perché farlo?

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!

E’ facile?

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

Installazione di Snikket su VPS

Istruzioni Operative

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.

DNS

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

Docker

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

Snikket

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.

Porte

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.

Supporto

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

Se preferisci un gruppo italiano qui troverai degli appassionati: xmpp-it


Commenti

  1. www.xmpp-it.net:

    Menzionato questo post.

  2. Markdown è consentito. Tag HTML consentiti: <strong>, <em>, <blockquote>, <code>, <pre>.