Configuration du service BOSH de Metronome

Cet article est le dernier d'une série de trois :

  1. Installation du serveur XMPP Metronome
  2. Services XMPP supplémentaires pour Metronome
  3. Configuration du service BOSH de Metronome

Dernière mise à jour de l'article : 03/04/2014.


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 ou Movim. 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.

Version de Metronome utilisée : 3.3.9

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.FQDN.TLD: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

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";

metronome_max_files_soft = 200000;
metronome_max_files_hard = 200000;

use_libevent = true;

modules_enabled = {
    "saslauth";
    "tls";
    "dialback";
    "disco";
    "bosh";
    "version";
    "uptime";
    "time";
    "ping";
    "posix";
};

disco_items = {
    { "conference.FQDN.TLD" },
    { "vjud.FQDN.TLD" },
    { "pubsub.FQDN.TLD" }
};

allow_registration = false;

https_ports = { 5281 };

bosh_ports = {
    {
        port = 5281;
        path = "http-bind";
    }
};

force_https_bosh = true;
cross_domain_bosh = true;
bosh_max_inactivity = 30;

ssl = {
    key = "/usr/local/etc/metronome/certs/FQDN.TLD.key";
    certificate = "/usr/local/etc/metronome/certs/FQDN.TLD.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 "FQDN.TLD"
	enabled = true;

	modules_enabled = {
        "roster";
        "vcard";
        "private";
        "pep";
        "register";
    };

	allow_registration = true;

VirtualHost "anonym.FQDN.TLD"
	enabled = true;
	authentication = "anonymous";
	allow_anonymous_multiresourcing = true;
	allow_anonymous_s2s = true;
	anonymous_jid_gentoken = "Jabber Anonymous User";
	anonymous_randomize_for_loopback = true;

Component "conference.FQDN.TLD" "muc"
	name = "Salons de discussion";

	modules_enabled = {
        "muc_limits";
	};

	muc_event_rate = 0.5;
	muc_burst_factor = 10;

Component "vjud.FQDN.TLD" "vjud"
	ud_disco_name = "Répertoire d'utilisateurs";
	synchronize_to_host_vcards = "FQDN.TLD";

Component "pubsub.FQDN.TLD" "pubsub"
	name = "Service de publication/souscription";

Component "bosh.FQDN.TLD" "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.

Vus : 1832
Publié par Cyprien Pouzenc : 27