Xmpp

De The Linux Craftsman
Aller à la navigation Aller à la recherche
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

<seo title="Serveur XMPP avec Ejabberd" metak="ejabberd,xmpp" />

client/serveur inter-serveur interface web Nom EMPD
Protocole tcp tcp tcp
Port 5222 5269 5280 4369
Configuration Iptables iptables -I INPUT 2 -p tcp --dport 5222 -j ACCEPT iptables -I INPUT 2 -p tcp --dport 5269 -j ACCEPT iptables -I INPUT 2 -p tcp --dport 5280 -j ACCEPT iptables -I INPUT 2 -p tcp --dport 4369 -j ACCEPT

Introduction

Extensible Messaging and Presence Protocol est un ensemble de protocoles standards ouverts pour l’échange de données. XMPP est également un système de collaboration en quasi-temps-réel et d’échange multimédia par son extension Jingle, dont la voix sur réseau IP (téléphonie sur Internet), la visioconférence et l’échange de fichiers sont des exemples d’applications.

XMPP est constitué d'un protocole TCP/IP basé sur une architecture client-serveur permettant les échanges décentralisés de messages instantanés ou non, entre clients, au format Extensible Markup Language (XML). XMPP est en développement constant et ouvert au sein de l’IETF.

Les serveurs peuvent être privés (en intranet) ou bien publics, c'est-à-dire reliés aux autres serveurs publics via l'Internet (comme chez Facebook). L'ensemble des serveurs publics créent, ce que l'on appelle, le réseau Jabber (ou le réseau XMPP).

wikipedia

Préparation

Dans un premier temps, il faudra avoir une connexion à Internet, utiliser un serveur DNS et désactiver SELinux.

Pour ceux qui auraient manqué des étapes les voici:

Une fois ces étapes effectuées, entrons dans le vif du sujet !

Installation

L'installation est très simple et distingue deux cas de figures :

  • glibc < 2.12   → version 17 max
  • glibc >= 2.13 → version 18+

Pour savoir, exécutez la commande suivante :

# rpm -qa | grep glibc
...
glibc-2.12-1.209.el6_9.2.i686
...

Sur CentOS 6 c'est la version 2.12 donc on installe ejabberd dans sa version 17 !

Pour télécharger ejabberd, il suffit de se rendre sur la page de téléchargements et de choisir la bonne version.

# yum -y install https://www.process-one.net/downloads/ejabberd/17.12/ejabberd-17.12-0.x86_64.rpm

Configuration

Le RPM installe deux dossiers dans le répertoire /opt:

  • /opt/ejabberd
  • /opt/ejabberd-17.12

Le deuxième répertoire va varier en fonction de la version installée.

La première étape consiste à modifier le fichier de configuration de Jabber /opt/ejabberd/conf/ejabberd.yml :

lignes à repérer transformation
- "/opt/ejabberd-17.12/conf/server.pem" - "/opt/ejabberd/conf/server.pem"
ca_file: "/opt/ejabberd-17.12/conf/cacert.pem" ca_file: "/opt/ejabberd/conf/cacert.pem"
'DH_FILE': "/opt/ejabberd-17.12/conf/dhparams.pem" 'DH_FILE': "/opt/ejabberd/conf/dhparams.pem"

Il faut ensuite positionner le mot de passe pour le compte administrateur. Repérez la ligne :

  admin:
    user:
      - "admin@{NOM_DE_LA_MACHINE}"

{NOM_DE_LA_MACHINE} est le nom de votre machine, celui qui s'affiche lorsque vous exécutez la commande hostname.

Pour positionner le mot de passe password utilisez la commande suivante:

# ejabberdctl set-password admin {NOM_DE_LA_MACHINE} password

Installation et démarrage du service

Avant de démarrer le service, il faut placer les exécutables dans le PATH :

ln -fs /opt/ejabberd-17.12/bin/ejabberdctl /usr/bin/
ln -fs /opt/ejabberd-17.12/bin/erl /usr/bin/

Ensuite, soit votre système repose sur SystemVInit (Centos6) soit il repose sur SystemD (Centos7)

  • Pour SystemVInit:
# ln -fs /opt/ejabberd-17.12/bin/ejabberd.init /etc/init.d/ejabberd
# chkconfig ejabberd on
# service ejabberd start
  • Pour SystemD:
# ln -fs /opt/ejabberd-17.12/bin/ejabberd.service /etc/systemd/system/
# systemctl enable ejabberd.service
# systemctl start ejabberd.service

Interface d'administration

Vous pouvez maintenant utiliser l'interface d'administration de Ejabber en utilisant un navigateur sur l'URL https://IP_SERVEUR:5280/admin

Ejabberd web interface.png