Traduction(s) : Francais - English
Cette page présente l'installation et la configuration du serveur xmpp prosody (serveur jabber) sur Debian.
Contents
Le service XMPP sera proposé sur l'hôte nommée im.example.org avec chiffrement TLS.
Avant de commencer assurez vous que im.example.org pointe effectivement sur l'IP publique de l'hôte (cf. Enregistrements DNS)
De plus les port 5222 et 5269 sont ouverts sur l'IP publique.
Squeeze
Installer le paquet
aptitude ou apt feront l'affaire, par exemple :
aptitude install prosody
La configuration
Les fichiers
Le répertoire /etc/prosody
/etc/prosody/prosody.cfg.lua /etc/prosody/README /etc/prosody/certs/ /etc/prosody/conf.avail/ /etc/prosody/conf.d/
La configuration se fait dans « /etc/prosody », sur le modèle de apache on y trouve un fichier de configuration globale « prosody.cfg.lua » et différents fichiers pour chaque VirtualHosts dans « conf.avail/ ».
Par défaut deux exemples d'hôtes sont installés par le paquet « localhost.cfg.lua » et « example.com.cfg.lua », cependant seul localhost est activé lors de l'installation.
Un fichier de configuration doit avoir l'extension lua.
Conservez l'extension si vous renommez/créez les fichiers.
Les configurations effectivement lues par prosody sont dans « /etc/prosody/conf.d/ ».
Typiquement les fichiers présents dans « conf.d » sont des liens symboliques vers un fichier dans « conf.avail ».
Chiffrement SSL
Le couple clef/certificat permettant le chiffrement entre serveur/client et serveur/serveur se trouve dans « /etc/prosody/certs/ ». À l'installation sont crée les fichiers localhost.cert et localhost.key valable pour localhost par défaut si vous n'avez pas de configuration spécifique pour openssl ("/etc/ssl/openssl.cnf").
Si vous possédez déjà ses fichiers pour im.example.org il suffira de pointer la configuration dessus. Dans le cas contraire il faut les créer.
La création d'un couple clef/certificat n'est pas l'objet de cette page, référez vous à la documentation de openssl pour ça (TODO ajouter le lien).
Par exemple pour un certificat auto signé :
openssl genrsa -out /etc/prosody/certs/im.example.org.key 2048 openssl req -new -x509 -key /etc/prosody/certs/im.example.org.key -out /etc/prosody/certs/im.example.org.cert -days 1095
L'empreinte md5/sha1 (à distribuer à vos utilisateurs pour contrôler l'identité du serveur lors de la première connexion)
openssl x509 -fingerprint -md5 -in /etc/prosody/certs/im.example.org.cert openssl x509 -fingerprint -sha1 -in /etc/prosody/certs/im.example.org.cert
Déclarer l'hôte
La configuration de l'hôte im.example.org se fera dans le fichier « /etc/prosody/conf.avail/im.example.org.cfg.lua », le fichier example.com.cfg.lua pourra servir de modèle :
cp -a /etc/prosody/conf.avail/example.com.cfg.lua /etc/prosody/conf.avail/.cfg.lua
Avec votre éditeur favori changez les paramètres VirtualHost et enabled de façon à avoir :
VirtualHost "im.example.org" --enabled = false -- Remove this line to enable this host
La ligne "--enabled =[…]" peut aussi bien être retirée, au lieu de la commenter comme ci dessus.
Déclarez aussi la clef et le certificat SSL :
ssl = { key = "/etc/prosody/certs/im.example.org.key"; certificate = "/etc/prosody/certs/im.example.org.cert"; }
Si vous avez déjà un couple key/cert sur le même nom de domaine (Common Name), pour apache par exemple, pointé dessus à la place des fichiers indiqués ci-dessus.
Maintenant créez le lien symbolique dans « /etc/prosody/conf.d/ »
ln -sf /etc/prosody/conf.avail/im.example.org.cfg.lua /etc/prosody/conf.d/im.example.org.cfg.lua
Plusieurs hôte pour une même configuration
Voici un exemple permettant de déclarer une même configuration pour plusieurs hôtes (merci à MattJ) :
for _, host in ipairs { "example.net", "example.org" } do VirtualHost (host) option1 = "foo" option2 = "bar" end
Création des utilisateurs (simple)
La création des comptes utilisateurs se fait grâce à la commande « prosodyctl »
prosodyctl adduser romeo@im.example.org
Autres méthodes d'authentification (avancé)
Cyrus SASL avec LDAP
L'avantage de cette méthode est de permettre l'utilisation de comptes utilisateurs déclarés/gérés indépendamment de prosody, à savoir via LDAP. La documentation officielle est disponible sur le site de prosody.
Au préalable, complétez l'installation avec les paquets nécessaire pour l'authentification sasl avec prosody.
aptitude install sasl2-bin liblua5.1-cyrussasl0 libsasl2-modules-ldap
Déclarez l'utilisation de cyrus SASL comme méthode d'authentification dans « /etc/prosody/prosody.cfg.lua »:
sasl_backend = "cyrus" -- 0.7 (different in 0.8) cyrus_application_name = "xmpp"
Dans « /etd/default/saslautd » changez START=no en START=yes et contrôlez que MECHANISMS="ldap". De plus MECH_OPTIONS doit pointer vers un fichier, probablement « /etd/default/saslautd ».
Ensuite il est nécessaire de configurer les options associées au mécanismes d'authentification. Cela se fait dans le fichier indiqué par MECH_OPTIONS (généralement « /etd/default/saslautd »). Pour cela éditer le fichier et renseigner les champs suivants :
ldap_servers: ldap://ldap.example.org/ ldap_search_base: ou=user,dc=example,dc=org
Redémarrez le service :
invoke-rc.d saslauthd restart
Tester que cela fonctionne :
$ testsaslauthd -u utilisateur -p mot_de_passe 0: OK "Success."
Déclarez ensuite un service sasl xmpp utilisé par prosody dans « /usr/lib/sasl2/xmpp.conf ». Le nom du fichier correspond à ce que vous avez donné pour "cyrus_application_name" dans la configuration de prosody.
pwcheck_method: saslauthd mech_list: PLAIN
Tester
invoke-rc.d prosody restart
Contrôler les journaux « /var/log/prosody/prosody.err » et « /var/log/prosody/prosody.log ».
Autres
Munin
Une extension munin est disponible sur dépôt git des extensions non-officielles.
L'utilisation de cette extension nécessite le module console de prosody. Pour cela, dé-commentez console de la liste des modules_enabled dans le fichier « /etc/prosody/prosody.cfg.lua » .
Enregistrements DNS
Le protocole xmpp gère les enregistrements de type SRV, par exemple pour le domaine im.example.org, veuillez réaliser les enregistrements suivants :
_xmpp-client._tcp.example.org. SRV 10 100 5222 im.example.org. _xmpp-server._tcp.example.org. SRV 10 100 5269 im.example.org. im.example.org. A 192.0.2.12
192.0.2.12 est dans cet exemple l'IP publique du serveur.