diff --git a/6d983fe9-8599-49b4-bdf7-cfac565542d1/index.md b/6d983fe9-8599-49b4-bdf7-cfac565542d1/index.md new file mode 100644 index 0000000..7be272e --- /dev/null +++ b/6d983fe9-8599-49b4-bdf7-cfac565542d1/index.md @@ -0,0 +1,181 @@ +# ejabberd - service de messagerie Jabber XMPP + +![](20211112-191953.png) + +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 + +![](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**. + +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](https:*www.process-one.net/en/ejabberd/downloads/) + +Vérifier les modifications a effectuer sur la page de la [procédure de mise à jour ejabberd](https:*docs.ejabberd.im/admin/upgrade/). + +```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 +``` + +Cette mise à jour à modifié les chemins de configuation dans `/opt/ejabberd/conf` et les logs dans `/opt/ejabberd/logs`. + +## Log +![](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/` + +## 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**. + +```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" +``` + + 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. + + ```yamel +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 +``` \ No newline at end of file diff --git a/6d983fe9-8599-49b4-bdf7-cfac565542d1/meta.json b/6d983fe9-8599-49b4-bdf7-cfac565542d1/meta.json new file mode 100644 index 0000000..b52de7c --- /dev/null +++ b/6d983fe9-8599-49b4-bdf7-cfac565542d1/meta.json @@ -0,0 +1,20 @@ +{ + "uuid": "6d983fe9-8599-49b4-bdf7-cfac565542d1", + "slug": "ejabberd-service-de-messagerie-jabber-xmpp", + "title": "ejabberd - service de messagerie Jabber XMPP", + "author": "cedric@abonnel.fr", + "published": false, + "featured": false, + "published_at": "2026-05-16 08:15:14", + "created_at": "2026-05-16 08:15:14", + "updated_at": "2026-05-16 08:15:14", + "revisions": [], + "cover": "", + "files_meta": [], + "external_links": [], + "seo_title": "", + "seo_description": "", + "og_image": "", + "category": "", + "tags": [] +}