Ciao Facebook Messenger et bonjour XMPP, reprenez le contrôle de vos chats !
Publié le
Avec étonnement, j'ai constaté que beaucoup de mes amis délaissaient les moyens classiques de communication (certains diront “préhistoriques”) que sont notamment le mail et le SMS au profit d'outils de chat comme Facebook Messenger, Whatsapp, Telegram ou encore Signal. Pour les 3 derniers outils, je peux comprendre mais Messenger… autant mettre en copie de vos conversation une régie pub (ou pire).
Après investigation (je suis d'un naturel curieux), voici les principales raisons de l'utilisation de Messenger :
- contacter une personne que l'on ne connaît pas autrement que sur le réseau social (un client via Facebook par exemple),
- le SMS / mail est désuet et non ergonomique (et encore que… pour envoyer un bête message avec le texte “Tu es où ?” je continue de penser qu'on a pas besoin de data et que le SMS (en réseau GSM, en attendant le Wi-Fi dans les transports en commun…) fait le job,
- avoir une conversation de groupe (sans avoir le problème d'ergonomie du mail, cf. point précédent),
- utiliser plusieurs devices dans une même conversation,
- communiquer à l'étranger (hors zone de l'union Européenne, le roaming n'existant plus dans l'union),
- pas d'accusé de lecture (uniquement de distribution), ce qui peut être appréciable dans certains cas :).
J'exclus le premier besoin car c'est vraiment contextuel à la plateforme. Ce que j'en retiens : mes amis veulent un outil de conversation ergonomique, multi-devices, autorisant les conversation de groupes, accessible depuis partout (donc depuis internet). Beaucoup (mais pas tous) se moquent royalement de la question de la confidentialité des échanges (si c'est ton cas, un petit message personnel : il ne faudra pas venir pleurer après sur le phishing, l'ingénierie sociale, le ciblage publicitaire, la revente de tes informations, la qualification de ton profil,… “La privacy est une affaire personnelle à géométrie variable”).
Bonne nouvelle, ce genre d'outil existe, et c'est pas vraiment nouveau… je vous présente le protocole XMPP, qui depuis 1998 répond à ces enjeux en matière de communication en héritage direct d'ICQ puis Jabber.
Le principe est simple, un utilisateur se connecte à un serveur qui peut être connecté à un autre utilisateur ou à un autre serveur (et ça, c'est le gros changement par rapport aux plateformes propriétaires comme Messenger, avec XMPP le système est décentralisé). Les messages sont envoyés dans des trames XML standardisées (et ouvertes) et sont véhiculés sur les réseaux (privé d'une entreprise ou ouvert sur internet) via TCP/IP. Bonus le format XML est extensible (ce qui veut dire qu'on peut lui ajouter des plugins pour ajouter des features, et si c'est génial, cela pourra être intégré dans la normalisation de l'IETF).
Quelques exemples de ce que sait faire XMPP :
- messagerie instantanée (ok, c'est un peu la base…),
- gestion de la présence (présent, absent, occupé,…) ,
- notification,
- utilisation simultanée sur plusieurs devices (message en copie-carbone et priorisation des devices),
- conversation de groupe,
- transfert de fichiers,
- accusé de réception et lecture (à la convenance du destinataire)
- blocage d'utilisateurs,
- archivage de messages (stockage sur serveur si le destinataire n'est pas connecté),
- sécurisé via HTTPS et surtout un chiffrement bout en bout (le message ne peut alors être lu que par le destinataire après avoir échanger vos clés),
- ouvert (et donc adaptable sur n'importe quel système),
- gratuit,
- ouvert (comment ça je l'ai déjà dit ?!?).
Il fut un temps où les services de conversations instantanées utilisaient XMPP (Google Talk, le chat Facebook avant messenger, ...) c'est dire à quel point c'est efficace.
Si je vous ai convaincu de laisser tomber Messenger au profit de XMPP j'en suis ravi :) Pour cela rien de sorcier, vous pouvez créer un compte sur un des nombreux serveurs publics XMPP (ou demander un compte à un ami qui aurait déjà un serveur XMPP) et l'utilisez avec un client sur votre/vos device(s), à ce sujet voici 2 client Android très aboutis : Xabber (gratuit) et Conversations (payant).
À titre personnel, je n'utilise pas Messenger (principalement à cause de l'absence de confidentialité mais aussi parce que Facebook impose d'installer leur application dédiée sur device mobile pour pouvoir utiliser le service). En revanche, je suis joignable sur n'importe quel client XMPP.
Si vous souhaitez aller plus loin (notamment pour un usage professionnel / associatif), vous pouvez héberger votre propre serveur XMPP, pour cela plusieurs candidats existent ; pour ma part, je retiens Prosody pour sa simplicité d'installation :
sudo apt-get install prosody
On modifie la configuration :
sudo nano /etc/prosody/prosody.cfg.lua
Avec les données suivantes (pensez à copier vos certificats SSL que vous aurez déjà créés via Let's Encrypt) :
ssl = {
certificate = "/etc/prosody/certs/fullchain.pem";
key = "/etc/prosody/certs/privkey.pem";
}
c2s_require_encryption = true
s2s_secure_auth = true
s2s_insecure_domains = { "nom.de.domaine.d.un.ami" }
Afin de configurer notre serveur, créons un fichier spécifique :
sudo nano /etc/prosody/conf.avail/domain.tld.cfg.lua
Avec le contenu suivant :
Component "proxy.domain.tld" "proxy65"
name = "SOCKS5 file transfert proxy service"
proxy65_address = "domain.tld"
proxy65_acl = { "domain.tld" }
VirtualHost "domain.tld"
name = "XMPP server"
enabled = true
Puis un second fichier pour gérer les conférences multi-utilisateurs (niveau de sécurité moindre pour accueillir des utilisateurs invités) :
sudo nano /etc/prosody/conf.avail/chat.domain.tld.cfg.lua
VirtualHost "chat.domain.tld"
name = "Anonymous XMPP server (local MUC only)"
enabled = true
authentication = "anonymous"
-- Set up a MUC (multi-user chat) room server
Component "conference.domain.tld" "muc"
name = "Conferences server"
restrict_room_creation = "local"
max_history_messages = 50
Créons les liens symboliques de ces 2 fichiers :
sudo ln -s /etc/prosody/conf.avail/domain.tld.cfg.lua /etc/prosody/conf.d/
sudo ln -s /etc/prosody/conf.avail/chat.domain.tld.cfg.lua /etc/prosody/conf.d/
N'oubliez pas d'ouvrir les ports utilisés en TCP (par défaut 5269 pour le serveur à serveur et 5222 pour le client à serveur).
Pour créer des utilisateurs en ligne de commande :
sudo prosodyctl adduser user@domain.tld
Redémarrer le service et c'est fini :
sudo prosodyctl restart
That's all folks!