====== 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]]. 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 ===== {{ 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/'' ===== 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: - "opt/ejabberd/conf/server.pem" ===== Configurer le host ===== Il faut définir les hosts sur lesquels ejabberd écoute : hosts: - "im.domain.tld" - "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**. --- //https://docs.ejabberd.im/admin/configuration/authentication/ // 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