Pourquoi un nom de domaine ? Pour mieux profiter de XMPP…

J’utilisais auparavant un nom de domaine gratuit enregistré chez Dyn. Tout fonctionnait bien. Pourquoi changer ?

Après un premier billet sur la messagerie, puis un autre sur le web, je vais maintenant me pencher sur Jabber, qui permet davantage que la simple messagerie instantanée, en particulier lorsqu’on dispose d’un « vrai » nom de domaine.

This article has been translated to English.

Comme dans le billet relatif à la configuration initiale du DNS, j’appelle « new.example » le domaine acheté. Pour la configuration du DNS, je donnerai à chaque fois la saisie à faire et le résultat obtenu dans la syntaxe du DNS.

XMPP

Le protocole XMPP est un protocole extensible et ouvert, adopté notamment par Google et Facebook (en interne), pour permettre la messagerie instantanée. Pour ce simple besoin (texte, voix et vidéo), un nom de domaine gratuit suffit. Mais XMPP permet bien plus que cela.

XMPP permet aussi l’élaboration de réseaux sociaux libres et distribués (pour ne pas être dépendant d’un gros serveur central et commercial). De tels réseaux existent déjà (les deux premiers sont compatibles entre eux) :

  • Jappix fonctionne dans le navigateur web et offre des fonctionnalités de type Facebook, sans toutefois réellement s’en inspirer.
  • Movim fonctionne aussi dans le navigateur et propose une ergonomie et une organisation différentes.
  • Salut-à-Toi fonctionne au choix dans le navigateur, en tant qu’application de bureau ou en ligne de commande, et explore davantage les capacités du protocole XMPP (jeux, petites applications, intégration avec d’autres systèmes de communication…).

D’autres existent, que je connais moins…

Par son fonctionnement distribué et léger, le protocole XMPP se prête particulièrement à l’auto-hébergement (à domicile ou sur serveur loué) ; plusieurs serveurs XMPP libres et de qualité existent, le dernier de la liste étant plus ardu à installer et configurer :

  • Prosody est le meilleur compromis entre facilité d’installation (inclus dans Debian Linux), légèreté et fonctionnalités, quoiqu’il faille disposer d’un serveur x86 pour bénéficier de l’installation automatique dans Debian.
  • Metronome, issu de Prosody, est tout aussi léger, plus complet, mais moins intégré dans les distributions Linux. Il est né du besoin de supporter les fonctionnalités voulues pour Jappix.
  • eJabberD est le plus ancien des trois, plus lourd et complexe ; plus complet aussi mais l’écart s’est récemment réduit. Il reste très fiable et a prouvé sa capacité à supporter de très nombreux utilisateurs.

De même qu’une adresse e-mail désigne quelqu’un@quelque.part, un JID (Jabber ID, l’équivalent XMPP de l’adresse e-mail) se note quelqu’un@quelque.part. Ce « quelque.part » peut être un serveur public (avec un JID qui ressemble par exemple à quelqu’un@jappix.com). Mais lorsqu’on installe son propre serveur XMPP, de même que lorsqu’on gère sa propre messagerie électronique, on dispose d’un JID personnalisé, localisé sur son propre domaine ; l’adresse e-mail et le JID peuvent même être strictement identiques ;-) C’est le choix que j’ai fait.

Réseau social libre et sécurisé

L’avantage d’un réseau social libre et distribué est d’être plus respectueux de la vie privée, et qu’il est même possible, en hébergeant son propre serveur XMPP, de s’assurer que les données personnelles restent sur le serveur personnel, au lieu d’être téléversées sur un serveur tiers aux conditions d’utilisation perfectibles…

Pour pouvoir participer complètement à un réseau social libre tel Jappix, il faut activer dans son serveur XMPP au minimum deux sous-domaines, l’un pour l’extension « PubSub » (pour « suivre » d’autres personnes), l’autre pour l’extension « multi-user chat » (les salons de discussion) ; en soi, cela est déjà plus facile lorsqu’on dispose d’un nom de domaine en propre, quoiqu’il soit possible de s’en sortir gratuitement, avec un service comme FreeDNS.

En résumé, je déclare dans le DNS les enregistrements suivants (par exemple) :

Nouvel enregistrement SRV
Domain    : _xmpp-client._tcp.new.example
Priority  : 0
Weight    : 0
Port      : 5222
Target    : new.example
TTL       : 86400
⇓
_xmpp-client._tcp.new.example.	86400	IN	SRV	0 0 5222 new.example.

Nouvel enregistrement SRV
Domain    : _xmpp-server._tcp.new.example
Priority  : 0
Weight    : 0
Port      : 5269
Target    : new.example
TTL       : 86400
⇓
_xmpp-server._tcp.new.example.	86400	IN	SRV	0 0 5269 new.example.

Nouvel enregistrement TXT
Name      : _xmppconnect.new.example
Text data : _xmpp-client-xbosh=http://new.example:5280/http-bind
TTL       : 86400
⇓
_xmppconnect.new.example.	86400	IN	TXT	"_xmpp-client-xbosh=http://new.example:5280/http-bind"

Nouvel enregistrement CNAME
Name      : pubsub.new.example
Hostname  : new.example
TTL       : 86400
⇓
pubsub.new.example.	86400	IN	CNAME	new.example.

Nouvel enregistrement CNAME
Name      : muc.new.example
Hostname  : new.example
TTL       : 86400
⇓
muc.new.example.	86400	IN	CNAME	new.example.

Cela veut dire que :

  • les logiciels de messagerie XMPP accèdent à mon serveur par le port 5222 (comme c’est le port standard, cette ligne est en fait facultative) ;
  • les autres serveurs XMPP communiquent avec le mien par le port 5269 (comme c’est le port standard, cette ligne est en fait facultative) ;
  • pour le cas où la connexion aux ports XMPP serait impossible (pare-feu), un serveur BOSH (via l’extension de Prosody par exemple) est à l’écoute à l’adresse indiquée derrière le signe = ;
  • l’extension « PubSub » est à l’écoute sur le sous-domaine pubsub, qui se trouve sur la même machine que le serveur XMPP (normal…) ;
  • l’extension « multi-user chat » est à l’écoute sur le sous-domaine muc, qui se trouve sur la même machine que le serveur XMPP (normal…).

À noter : concernant BOSH, l’exemple ci-dessus est simpliste : il est en général plus utile de configurer Nginx ou Apache en proxy de BOSH afin d’accéder à BOSH sur le port standard (80 pour HTTP, 443 pour HTTPS).

Si on veut en plus que le service soit sécurisé, il faut disposer de certificats valides pour les deux sous-domaines déclarés plus haut. Cela peut être réalisé sans frais, à condition de disposer de son propre nom de domaine, en créant chez StartSSL un certificat Web qui couvre un sous-domaine et un certificat Jabber qui couvre l’autre sous-domaine. Prosody, par exemple, peut utiliser indifféremment les deux certificats ; pour ma part, j’utilise les deux à la fois ;-)

Ne reste plus qu’à avoir des contacts sur ce réseau, qui est évidemment bien moins peuplé que Facebook ou Tweeter… Mais déjà, on peut communiquer directement avec tous ses contacts GoogleMail, et c’est déjà pas mal !

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

La discussion continue ailleurs

URL de rétrolien : http://yalis.fr/cms/index.php/trackback/43

Fil des commentaires de ce billet