Serveur Jabber sur Eolebase

Jabber, également connu sous le nom de XMPP, est un ensemble de protocoles standards ouverts de l'IETF de messagerie instantanée et de présence, et plus généralement une architecture décentralisée d'échange de données.

Jabber est également un système de collaboration en quasi-temps-réel et d'échange multimédia via Jingle, dont la VoIP (téléphonie sur Internet), la visioconférence et l'échange de fichiers sont des exemples d'applications.

Dans la procédure suivante l'installation se fait sur un serveur Eolebase déjà instancié. Le choix est fait de se connecter à un annuaire LDAP distant (celui d'un serveur Scribe).

Installation du service Jabber

Le service ejabberd n'est pas pré-installé sur Eolebase mais il est pré-packagé en tant que paquet additionnel.

Il faut donc installer le paquet manuellement avec la commande apt-eole install eole-ejabberd.

Exemple

root@eolebase:~# apt-eole install eole-ejabberd

[...]

Les NOUVEAUX paquets suivants seront installés : auth-client-config eole-client-annuaire eole-client-annuaire-pkg eole-ejabberd eole-nsswitch ldap-auth-client ldap-auth-config ldap-utils libnss-ldap libpam-ldap

0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.

Il est nécessaire de prendre 447 ko dans les archives.

Après cette opération, 1 501 ko d'espace disque supplémentaires seront utilisés.

[...]

Annuaire LDAP distant

Par défaut, le client LDAP a été installé par le paquet eole-ejabberd. Celui-ci permet de se connecter un annuaire LDAP distant.

Annuaire LDAP local

Pour pouvoir gérer les utilisateurs dans un annuaire local il faut installer le paquet eole-annuaire avec la commande apt-eole install eole-annuaire.

Exemple

root@eolebase:~# apt-eole install eole-annuaire

[…]

Les NOUVEAUX paquets suivants seront installés : eole-annuaire

0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour

Il est nécessaire de prendre 19,4 ko dans les archives.

Après cette opération, 159 ko d'espace disque supplémentaires seront utilisés.

[…]

Attention

Par défaut il n'y a aucun outil d'administration pour l'annuaire local et donc aucune facilité pour ajouter des utilisateurs.

Reconfiguration du serveur

L'installation du paquet eole-ejabberd a installé de nouveaux dictionnaires et de nouveaux templates.

Il faut donc exécuter l'interface de configuration du module avec la commande gen_config et configurer les nouveaux onglets et services.

Dans l'onglet Services il faut choisir si l'annuaire utilisé sera distant ou local.

Puis il faut configurer l'annuaire dans l'onglet Annuaire.

#fixme

Enfin il faut se rendre dans l'onglet Ejabberd et configurer le service ejabberd.

Il faut vérifier le Nom de domaine de la messagerie instantanée de l'établissement qui doit être de la forme monetab.ac-aca.fr, il doit également être correctement déclaré dans le DNS de l'infrastructure.

Après avoir enregistré les modifications il faut quitter l'interface de configuration du module et reconfigurer le serveur à l'aide de la commande reconfigure.

Connecter un utilisateur

Le compte utilisateur à utiliser sera de type prenom.elev424@ejabber.ac-test.fr.

Diagnostic sur le serveur

Lire les journaux systèmes :

root@ejabber:~# tail -f /var/log/ejabberd/ejabberd.log

=INFO REPORT==== 2015-06-17 15:07:01 ===I(<0.353.0>:ejabberd_listener:281) : (#Port<0.10102>) Accepted connection {{192,168,0,102},40726} -> {{192,168,0,24},5223}

root@ejabber:~#

Vous pouvez vérifier que vous êtes effectivement connecté en lançant la commande suivante sur le serveur :

root@ejabber:~# ejabberdctl connected-users

prenom.elev424@ejabber.ac-test.fr/Gajim

root@ejabber:~#

La commande getent passwd permet de savoir si les utilisateurs LDAP ont été ajouté aux utilisateurs locaux :

root@ejabber:~# getent passwd prenom.prof26

prenom.prof26:x:10437:10000:Prenom PROF26:/home/p/prenom.prof26:/bin/false

root@ejabber:~#

En cas de changement de nom de machine ou de nom de domaine de la messagerie il se peut que ejabberd refuse de démarrer et que la commande ejabberdctl connected-users renvoie un message du type :

root@ejabber:~# ejabberdctl connected-users The node ejabberd@ejabber is started with status: startedejabberd is not running in that nodeCheck for error messages: ejabberd.logor other files in that directory.Error in ejabberd ctl process: 'error' badargroot@ejabber:~#

Une partie des journaux indique un message du type Error reading Mnesia database.

Il faut stopper ejabberd

root@ejabber:~# service ejabberd stop

Il faut supprimer les fichiers présents dans /var/lib/ejabberd/

root@ejabber:~# rm -rf /var/lib/ejabberd/*

Il faut redémarrer ejabberd

root@ejabber:~# service ejabberd stop

Si ejabberd ne s'exécute toujours pas et que la commande ejabberdctl connected-users renvoie Failed RPC connection to the node et que un message du type ERROR ** mnesia_event got unexpected event est présent dans les journaux alors il faut relancer ejabberd :

root@ejabber:~# service ejabberd stop

Stopping jabber server: ejabberd already stopped.

root@ejabber:~# service ejabberd start

Starting jabber server: ejabberd.

root@ejabber:~#

Plus d'informations sur les pages suivantes :

http://superuser.com/questions/544078/ejabberd-runs-on-command-but-not-via-service-ejabberdctl

http://serverfault.com/questions/207506/cannot-bring-up-ejabberd-after-vps-change-made-by-hosting-company

Truc & astuce

D'autres commandes ejabberdctl sont disponibles et documentées avec l'option help :

root@ejabber:~# ejabberdctl help