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 : 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 à 18h37

Ajouter un commentaire

HTML filtré

  • Balises HTML autorisées : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <p>
  • Textual smiley will be replaced with graphical ones.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Texte brut

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Flux RSS des commentaires de cet article.