Configuration du service BOSH de Metronome
Cet article est le dernier d'une série de trois :
- Installation du serveur XMPP Metronome
- Services XMPP supplémentaires pour Metronome
- Configuration du service BOSH de Metronome
Dernière mise à jour de l'article : 05/11/2015.
Metronome est un serveur XMPP. Après avoir décrit son installation et présenté l'activation de quelques services supplémentaires forts utiles, je vais maintenant tâcher d'en faire de même quant à la configuration de son service BOSH.
BOSH (Bidirectional-streams Over Synchronous HTTP) est, selon Wikipédia, « un protocole qui émule un flux bidirectionnel entre deux entités en utilisant de multiples requêtes HTTP ». Appliqué au protocole qui nous intéresse, on parle de « XMPP over BOSH ». Puisque cela n'éclaire pas véritablement notre lanterne à en faire pâlir le Soleil, veuillez excuser l'odieux raccourci suivant. BOSH permet de faire transiter une communication basée sur le protocole XMPP via le protocole HTTP. Les applications sont nombreuses. Par exemple, BOSH rend ainsi possible le développement de clients XMPP basés sur une interface web ; ce qui présente par ailleurs l'avantage de ne pas avoir à se soucier de la gestion d'un éventuel pare-feu.
Article Wikipédia : https://fr.wikipedia.org/wiki/BOSH
L'usage de BOSH n'est pas directement adressé à l'utilisateur final. Il s'agit d'une couche intermédiaire qui permettra le déploiement ultérieur de programmes web tels que Jappix. Les serveurs BOSH sont nombreux. Je détaille ici le déploiement du service intégré à Metronome. Étant donné que je l'utilise déjà comme serveur XMPP, la démarche présente l'avantage de ne pas avoir à déployer de logiciel supplémentaire.
Préalable à l'installation
Le service BOSH étant lié à mon installation de Metronome, certaines contraintes communes relatives au serveur DNS et au pare-feu doivent être prises en compte.
Configuration du pare-feu
Il est nécessaire d'ouvrir et rediriger le port TCP 5281 depuis le routeur vers la machine hébergeant le service XMPP. Ce port est utile aux communications sécurisées client/serveur entre les applications utilisant HTTP et le serveur BOSH.
Configuration du serveur DNS
Même si le serveur BOSH est hébergé sur la même machine que le serveur XMPP, il peut s'avérer commode de lui créer un enregistrement CNAME spécifique. On lui adjoindra un enregistrement TXT spécial afin de permettre la découverte du service BOSH par l'ensemble du réseau. Chez moi, ça ressemble à ceci :
bosh 86400 CNAME xmpp _xmppconnect 86400 TXT "_xmpp-client-xbosh=https://bosh.EXAMPLE.COM:5281/http-bind"
Configuration du service BOSH
Une fois le pare-feu et le serveur DNS configurés, reste à activer le service BOSH. Pour ce faire, il faut commencer par se connecter à la machine hébergeant le serveur XMPP. Les étapes suivantes sont énoncées ci-dessous.
Se connecter en super-utilisateur :
su -
Installer les dépendances et logiciels complémentaires :
aptitude install php-config
Pour profiter d'une connexion TLS sécurisée, il est nécessaire de disposer d'un certificat X.509 valide et reconnu. Déplacer le certificat et sa clef privée dans le répertoire adéquat :
mv /home/USER/bosh.EXAMPLE.COM.* /usr/local/etc/metronome/certs/
Les attribuer à l'utilisateur metronome :
chown metronome:metronome /usr/local/etc/metronome/certs/bosh.EXAMPLE.COM.*
Configurer Metronome :
vim /usr/local/etc/metronome/metronome.cfg.lua
Une fois ajoutés les paramètres spécifiques à BOSH (en surbrillance ci-après), le fichier de configuration de Metronome ressemble à ceci :
pidfile = "/var/run/metronome/metronome.pid"; modules_enabled = { "saslauth"; "tls"; "dialback"; "disco"; "bosh"; "version"; "uptime"; "time"; "ping"; "posix"; }; disco_items = { { "conference.EXAMPLE.COM" }, { "vjud.EXAMPLE.COM" }, { "pubsub.EXAMPLE.COM" } }; https_ports = { 5281 }; bosh_ports = { { port = 5281; path = "http-bind"; ssl = { key = "/usr/local/etc/metronome/certs/bosh.EXAMPLE.COM.key"; certificate = "/usr/local/etc/metronome/certs/bosh.EXAMPLE.COM.cert"; }; }; }; force_https_bosh = true; cross_domain_bosh = true; bosh_max_inactivity = 30; ssl = { key = "/usr/local/etc/metronome/certs/xmpp.EXAMPLE.COM.key"; certificate = "/usr/local/etc/metronome/certs/xmpp.EXAMPLE.COM.cert"; }; c2s_require_encryption = true; c2s_require_encryption = true; authentication = "internal_hashed"; log = { info = "/var/log/metronome/metronome.log"; error = "/var/log/metronome/metronome.err"; }; VirtualHost "EXAMPLE.COM" enabled = true; modules_enabled = { "roster"; "vcard"; "private"; "blocklist"; "pep"; "register"; }; allow_registration = false; VirtualHost "anonym.EXAMPLE.COM" enabled = true; authentication = "anonymous"; allow_anonymous_multiresourcing = true; allow_anonymous_s2s = true; anonymous_randomize_for_loopback = true; Component "conference.EXAMPLE.COM" "muc" name = "Salons de discussion"; restrict_room_creation = "local"; modules_enabled = { "muc_limits"; }; muc_event_rate = 0.5; muc_burst_factor = 10; Component "vjud.EXAMPLE.COM" "vjud" ud_disco_name = "Répertoire d'utilisateurs"; synchronize_to_host_vcards = "EXAMPLE.COM"; Component "pubsub.EXAMPLE.COM" "pubsub" name = "Service de publication/souscription"; Component "bosh.EXAMPLE.COM" "http" modules_enabled = { "bosh" };
Enfin, il faut redémarrer Metronome :
service metronome restart
Le serveur XMPP devrait désormais proposer un service BOSH totalement fonctionnel. Il est maintenant prêt à communiquer avec tout client web pour XMPP !
Nous pouvons alors, par exemple, installer la plate-forme sociale Jappix.
Options du module BOSH : http://prosody.im/doc/modules/mod_bosh
Options spécifiques à Metronome : www.lightwitch.org/metronome/documentation/configuration
Article sous licence Creative Commons BY-SA 3.0 France.
Publié le
Lundi 23 septembre 2013 à 18h37Flux RSS des commentaires de cet article.
Ajouter un commentaire