← Retour
Informatique

ejabberd - service de messagerie Jabber XMPP

Cédrix · 10/02/2023

Il est nécessaire d'avoir (pré requis) pour ce tuto :

  • un service Apache - httpd
  • un service de base de données - mariaDb
  • un système d'exploitation Linux Debian 10

Installer

Pour installer ejabberd sous la distribution Linux Debian, il suffit de taper en ligne de commandes :

sudo apt install ejabberd

Un service /lib/systemd/system/epmd.service est créé. Un service /lib/systemd/system/ejabberd.service est créé et un fichier de configuration par défaut est déployé dans /etc/ejabberd/ejabberd.yml. Ce dernier point est traité ci-dessous.

Installer la base de données

ejabberd est compatible avec plusieurs SGBD. J'aborde l'installation avec MariaDB.

Crééer l'utilisateur ejabberd avec son mot de passe password (à modifier).

echo "GRANT ALL ON ejabberd.* TO 'ejabberd'@'localhost' IDENTIFIED BY 'password';" | mysql -h localhost -u root

Créer la base de données associée à l'utilisateur ejabberd

echo "CREATE DATABASE ejabberd;" | mysql -h localhost -u ejabberd -p

Mettre à jour

Vérifier la dernière version disponible à la page de téléchargement ejabberd

Vérifier les modifications a effectuer sur la page de la procédure de mise à jour ejabberd.

sudo systemctl stop ejabberd
wget https:*www.process-one.net/downloads/downloads-action.php?file=/21.07/ejabberd_21.07-0_amd64.deb -O ejabberd.deb
sudo apt install ./ejabberd.deb
sudo systemctl start ejabberd
Cette mise à jour à modifié les chemins de configuation dans `/opt/ejabberd/conf` et les logs dans `/opt/ejabberd/logs`.

Log

Les fichiers logs sont présents dans le dossier /var/log/ejabberd.

Après la mise à jour en 21.07, ils se trouvent dans /opt/ejabberd/logs/

Configurer

Le nom du serveur doit être déclaré dans les DNS et dans le fichiers /etc/hosts.

Le fichier de configuration est au format YML. Il doit être déposé dans le chemin /etc/ejabberd/ejabberd.yml Après la mise à jour en 21.07, le dossier de configuration s'est trouvé dans /opt/ejabberd/conf.

Dans l'exemple suivants prenoms les paramètres :

  • nom de serveur retenu pour le service : im.domain.tld, xmpp.domain2.tld
  • adresse ip : 45.54.65.42

Configurer les champs DNS

Déclarer les champs DNS suivants :

im                        IN A      45.54.65.42
*.im                      IN A      45.54.65.42

Configurer le SSL

Je vous conseille d'associer un serveur http au nom de domaine *im.domain.tld// de votre service. Cela permettra de faire une page d'accueil web avec des services associés. Par la même occasion, effectuer une demande SSL. Les certificats seront générés dans le dossier /etc/letsencrypt/live. Il faudra copier la clé et le certificat dans le dossier de config de ejabberd.

sudo sh -c "cat /etc/letsencrypt/live/im.domain.tld/privkey.pem /etc/letsencrypt/live/im.domain.tld/fullchain.pem > /opt/ejabberd/conf/server.pem"

Par conséquence, il est facile d'indiquer à ejabberd le certificat à utiliser :

certfiles:
1. "opt/ejabberd/conf/server.pem"

Configurer le host

Il faut définir les hosts sur lesquels ejabberd écoute :

hosts:
1. "im.domain.tld"
1. "xmpp.domain2.tld"

Le fichier peut prendre en compte autant de domaine que l'on souhaite avec des cas de configuration distinct. C'est le principe du virtual hosting

host_config:
  im.domain.tld:
    ...
  xmpp.domain2.tld:
    ...

Configurer le type d'authentification

On peut se baser sur une authentification anonymous, pam, jwt, sql, internal et ldap.

host_config:
  im.domain.tld:
    auth_method: internal
  xmpp.domain2.tld:
    auth_method: sql
    sql_type: odbc
    sql_server: "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"

Configurer les modules

## Configuration of modules that are common to all vhosts
modules:
  mod_roster:    {}
  mod_configure: {}
  mod_disco:     {}
  mod_private:   {}
  mod_time:      {}
  mod_last:      {}
  mod_version:   {}

append_host_config:
  ## Add some modules to vhost one:
  im.domain.tld:
    modules:
      mod_muc:
        host: conference.im.domain.tld
      mod_ping: {}
  ## Add a module just to vhost two:
  xmpp.domain2.tld:
    modules:
      mod_muc:
        host: conference.xmpp.domain2.tld

Configurer les options

language: fr

===== Configurer le module audio/vidéo STUN/TURN =====

Le module mod_stun_disco est disponible depuis la version 20.04.

modules:
   ...
   mod_stun_disco:
     credentials_lifetime: 12h
     services:
         -
           host: 0.0.0.0
           port: 3478
           type: stun
           transport: udp
           restricted: false
         -
           host: 0.0.0.0
           port: 3478
           type: turn
           transport: udp
           restricted: true
         -
           host: im.domain.tdl
           port: 5349
           type: stuns
           transport: tcp
           restricted: false
         -
           host: im.domain.tdl
           port: 5349
           type: turns
           transport: tcp
           restricted: true
Commentaires

Aucun commentaire pour l'instant. Soyez le premier !

Laisser un commentaire
Un code de vérification sera envoyé à votre adresse email.