Installation du serveur XMPP Metronome
Cet article est le premier 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 : 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 !
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.