Installation du serveur XMPP Metronome

Logo de XMPP

Cet article est le premier 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/02/2014.


XMPP (Extensible Messaging and Presence Protocol) est un ensemble de protocoles de communication standards et ouverts originellement dédié à la messagerie instantanée (projet Jabber). Il s'est par la suite grandement diversifié afin de proposer un nombre conséquent de fonctionnalités, étendant son champ d'actions bien au-delà du simple clavardage (VoIP, visioconférence, échange de fichiers...). Très complet, XMPP peut même désormais servir de base au déploiement de véritables réseaux sociaux.

Les géants du web ne s'y sont d'ailleurs pas trompés. Nombreux sont les services de discussions instantanées utilisant XMPP. Et lorsqu'il ne s'agit pas d'une véritable implémentation, une passerelle est bien souvent proposée. Ainsi, il se peut très probablement que vous utilisiez déjà XMPP, sans même le savoir !

Logo de XMPP
Logo de XMPP

Les serveurs XMPP sont nombreux. Cet article décrit l'installation de Metronome sur une distribution Debian GNU/Linux. Metronome a été choisi pour sa compatibilité avec les programmes Jappix et Movim. Il est également inclut dans la liste des logiciels conseillés par le site web Prism Break (à la rubrique des serveurs XMPP) pour tenter d'échapper aux programmes de surveillance globale des services secrets internationaux.

Metronome est un logiciel libre. Il s'agit d'un fork de Prosody que l'auteur explique par une divergence de points de vues couplée à des problèmes de communication avec l'équipe de développement initiale.

Informations techniques

Nom du programme : Metronome
Version utilisée : 3.3.9
Licence : MIT/ISC
Développeur principal : Marco Cirillo
Localisation : Italie
Site web : www.lightwitch.org/metronome

Distribution utilisée : Debian GNU/Linux 7.3 « Wheezy »

XMPP (article Wikipédia) : https://fr.wikipedia.org/wiki/XMPP

Préalable à l'installation

En ce qui me concerne, l'installation va s'opérer sur un conteneur OpenVZ présent sur le réseau local et protégé par un pare-feu. Afin de pouvoir communiquer avec des utilisateurs externes au réseau local il est nécessaire de disposer d'un nom de domaine, de pouvoir configurer le serveur DNS correspondant, ainsi que le pare-feu. Disposer d'une adresse IP fixe est également requis, à moins de tenir à jour son adresse dynamique.

Configuration du pare-feu

Il est nécessaire d'ouvrir et rediriger les ports TCP 5222 et 5269 depuis le routeur vers la machine hébergeant le service XMPP. Le port 5222 est utile aux communications client/serveur tandis que le 5269 l'est aux communications serveur/serveur.

Configuration du serveur DNS

Il faut tout d'abord créer un enregistrement pointant vers l'adresse IP publique de la machine, auquel on adjoindra deux enregistrements SRV spéciaux afin de permettre la découverte du service XMPP par l'ensemble du réseau. Chez moi, ça ressemble à ceci :

xmpp	86400	A	IP.IP.IP.IP
_xmpp-client._tcp	86400	SRV	5 0 5222 xmpp
_xmpp-server._tcp	86400	SRV	5 0 5269 xmpp

Installation du serveur XMPP

Une fois le pare-feu et le serveur DNS configurés, reste à installer le serveur XMPP. Pour ce faire, il faut commencer par se connecter à la machine sur laquelle installer le service. Les étapes suivantes sont énoncées ci-dessous.

Se connecter en super-utilisateur :

su -

Ajouter le dépôt logiciel de Prosody :

echo "deb http://packages.prosody.im/debian wheezy main" >> /etc/apt/sources.list.d/prosody.list

Importer la clef du dépôt de Prosody :

wget http://prosody.im/files/prosody-debian-packages.key -O- | apt-key add -

Mettre à jour la liste des paquets :

aptitude update

Installer les dépendances et logiciels complémentaires :

aptitude install mercurial build-essential lua5.1 liblua5.1-dev libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-socket-prosody lua-sec-prosody liblua5.1-filesystem0

Cloner le dépôt source de Metronome dans /opt :

cd /opt
hg clone --insecure https://code.lightwitch.org/metronome/

Se déplacer dans le répertoire source puis compiler et installer le programme :

cd metronome
./configure --ostype=debian
make
make install

Créer un script init.d de gestion du service :

vim /etc/init.d/metronome

Y coller ceci :

#! /bin/sh
### BEGIN INIT INFO
# Provides:          metronome
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: A XMPP server
# Description:       Metronome is a XMPP daemon, a server written in Lua.
### END INIT INFO

NAME=metronome
DAEMON=/usr/local/bin/metronomectl
PIDDIR=/var/run/$NAME
PIDFILE=$PIDDIR/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0


do_start()
{
	mkdir -p $PIDDIR
	chown metronome:metronome $PIDDIR
	$DAEMON start
}


case "$1" in
  start)
	do_start
	;;
  stop)
	$DAEMON stop
	;;
  reload)
	$DAEMON reload
	;;
  status)
	$DAEMON status && exit 0
	;;
  restart|force-reload)
	$DAEMON restart
	;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}" >&2
	exit 3
	;;
esac

:

Rendre le script exécutable et l'intégrer à la séquence de démarrage du système d'exploitation :

chmod +x /etc/init.d/metronome
update-rc.d metronome defaults

Créer un utilisateur système pour Metronome :

adduser --system --group --no-create-home metronome

Si vous disposez d'un certificat SSL accompagné de sa clef privée, vous pouvez les déplacer dans le répertoire adéquat (si ce n'est pas le cas, deux fichiers auto-signés sont déjà présents par défaut) :

mv /home/USER/FQDN.TLD.* /usr/local/etc/metronome/certs/

Les attribuer à l'utilisateur metronome :

chown metronome:metronome /usr/local/etc/metronome/certs/FQDN.TLD.*

Créer le répertoire des fichiers journaux :

mkdir -p /var/log/metronome

L'attribuer à l'utilisateur metronome :

chown metronome:metronome /var/log/metronome

Attribuer le répertoire /usr/local/var/lib/metronome à l'utilisateur metronome :

chown metronome:metronome /usr/local/var/lib/metronome

Sauvegarder la configuration par défaut de Metronome :

mv /usr/local/etc/metronome/metronome.cfg.lua /usr/local/etc/metronome/metronome.cfg.lua.save

Configurer Metronome :

vim /usr/local/etc/metronome/metronome.cfg.lua

Y coller 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";
		"version";
		"uptime";
		"time";
		"ping";
		"posix";
};

allow_registration = false;

ssl = {
	key = "/usr/local/etc/metronome/certs/FQDN.TLD.key";
	certificate = "/usr/local/etc/metronome/certs/FQDN.TLD.cert";
}

c2s_require_encryption = true
s2s_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

Il s'agit d'une configuration extrêmement minimaliste, mais qui devrait fonctionner. Pour plus d'options, se référer au fichier par défaut ainsi qu'aux sites web de Prosody, Metronome et Jappix.

Configuration générale : www.prosody.im/doc/configure
Liste des modules : www.prosody.im/doc/modules
Options spécifiques à Metronome : www.lightwitch.org/metronome/documentation/configuration
Fichier de configuration de Jappix : https://github.com/jappix/jappix-tools/blob/master/metronome/conf...

Enfin, démarrer Metronome :

service metronome start

Le serveur XMPP devrait désormais être totalement fonctionnel. Il existe des lignes de commandes pour créer des comptes utilisateurs depuis le terminal, mais on peut tout aussi bien créer et utiliser ses comptes XMPP depuis n'importe quel client gérant correctement ce protocole (Gajim, par exemple).

Attention : avec un fichier de configuration tel que décrit ci-dessus, le monde entier peut désormais créer des comptes XMPP sur ce serveur ! Peut-être devrait-on affiner cela...

Maintenant que notre serveur XMPP est opérationnel, voyons comment le doter de fonctionnalités supplémentaires !

Article sous licence Creative Commons BY-SA 3.0 France.

Vus : 1095
Publié par Cyprien Pouzenc : 27