informatique:applications:ejabberd-service-de-messagerie-jabber-xmpp

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
informatique:applications:ejabberd-service-de-messagerie-jabber-xmpp [2023/02/10 23:48] – ↷ Page déplacée de informatique:linux:applications:ejabberd-service-de-messagerie-jabber-xmpp à informatique:applications:ejabberd-service-de-messagerie-jabber-xmpp Cédric ABONNELinformatique:applications:ejabberd-service-de-messagerie-jabber-xmpp [2023/02/10 23:48] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. Cédric ABONNEL
Ligne 1: Ligne 1:
 +====== ejabberd - service de messagerie Jabber XMPP ======
  
 +{{ informatique:applications:pasted:20211112-191953.png?175}}
 +
 +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
 +  
 +{{informatique:applications:pasted:20211112-175520.png}}
 +
 +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**.
 +
 +--- // https://docs.ejabberd.im/tutorials/mysql/ //
 +
 +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 [[https://www.process-one.net/en/ejabberd/downloads/|téléchargement ejabberd]]
 +
 +Vérifier les modifications a effectuer sur la page de la [[https://docs.ejabberd.im/admin/upgrade/|procédure de mise à jour ejabberd]].
 +
 +<code BASH>
 +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
 +</code>
 +
 +<note important>Cette mise à jour à modifié les chemins de configuation dans ''/opt/ejabberd/conf'' et les logs dans ''/opt/ejabberd/logs''.</note>
 +
 +===== Log =====
 +
 +{{ informatique:applications:pasted:20211113-074341.png}}
 +
 +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/''
 +
 +<WRAP clear/>
 +
 +
 +
 +===== 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 :
 +
 +<code>
 +im                        IN A      45.54.65.42
 +*.im                      IN A      45.54.65.42
 +</code>
 +
 +===== 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**.
 +
 +<code BASH>
 +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"
 +</code>
 +
 + Par conséquence, il est facile d'indiquer à **ejabberd** le certificat à utiliser :
 +
 +<code>
 +certfiles:
 +  - "opt/ejabberd/conf/server.pem"
 +</code>
 +
 +===== Configurer le host =====
 +
 +Il faut définir les hosts sur lesquels ejabberd écoute :
 +<code>
 +hosts:
 +  - "im.domain.tld"
 +  - "xmpp.domain2.tld"
 +</code>
 +
 +
 +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''
 +
 +<code>
 +host_config:
 +  im.domain.tld:
 +    ...
 +  xmpp.domain2.tld:
 +    ...
 +</code>
 +
 +===== Configurer le type d'authentification =====
 +
 +On peut se baser sur une authentification **anonymous**, **pam**, **jwt**, **sql**, **internal** et **ldap**.
 +
 +--- //https://docs.ejabberd.im/admin/configuration/authentication/ //
 +
 +<code>
 +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" 
 +</code>
 +
 +===== Configurer les modules =====
 +
 +<code>
 +## 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
 +</code>
 +
 +===== Configurer les options =====
 +
 +<code>
 +language: fr
 +
 +</code>
 +
 +
 + 
 + 
 + ===== Configurer le module audio/vidéo STUN/TURN =====
 + 
 + Le module ''mod_stun_disco'' est disponible depuis la version 20.04.
 + 
 + <code yamel ejabberd.yml>
 + 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
 +           
 +</code>