Configurer un serveur XMPP avec prosody

Introduction

Wow !! Enfin !!
La dernière version de pkgsrc pour SmartOS embarque un serveur XMPP fonctionnel !!
ejabberd et jabberd sont complètement pétés et inutilisables, il n'y avait plus aucun serveur XMPP fonctionnel sur illumos depuis longtemps !

Et quelle bonne nouvelle que ce soit Prosody ! Merci infiniment aux porteurs !!

Prosody est basique mais vraiment très simple à configurer et à mettre en place.
Pour moi, c'est le plus simple de tous, sa configuration se fait en seulement 2 minutes.

Nous allons configurer un serveur XMPP de test avec 2 utilisateurs (user1 et user2), la possibilité de créer un groupe ainsi que la possibilité pour les 2 utilisateurs de s'échanger des fichiers.
Pour les besoins du test, nous générerons un certificat SSL auto-signé (mais vous comprendrez vite comment spécifier un vrai certificat).
Le serveur a l'adresse IP 192.168.95.31 pour notre test

C'est parti !


0) Mettez votre serveur à l'heure ! (et redémarrez ensuite !)

Voir l'article sur la synchronisation NTP


1) Installer le dépôt Joyent (pkgscr)

(passer en root)
Copier/coller le bloc de commandes ci-dessous dans un shell :

cd /tmp && BOOTSTRAP_TAR="bootstrap-trunk-x86_64-20240116.tar.gz" && BOOTSTRAP_SHA="4d92a333587d9dcc669ff64264451ca65da701b7" && curl -O https://pkgsrc.smartos.org/packages/SmartOS/bootstrap/${BOOTSTRAP_TAR} && tar -zxpf ${BOOTSTRAP_TAR} -C / && sed -i 's/PATH=\(.*\)/PATH=\1:\/opt\/local\/sbin:\/opt\/local\/bin/' /etc/default/login && cd /tmp && UPGRADE_TAR="bootstrap-trunk-x86_64-20240116-upgrade.tar.gz" && UPGRADE_SHA="3099211460e84c34b9f558c8f7354a871187be41" && curl -O https://pkgsrc.smartos.org/packages/SmartOS/bootstrap-upgrade/${UPGRADE_TAR} && tar -zxpf ${UPGRADE_TAR} -C / && echo 'PATH=/opt/local/sbin:/opt/local/bin:$PATH' >> /etc/profile && echo 'MANPATH=/opt/local/man:$MANPATH' >> /etc/profile alias pkg_add=/opt/local/sbin/pkg_add ; alias pkgin=/opt/local/bin/pkginpkg_add -U pkg_install pkgin libarchive && pkgin clean && pkgin -y upgrade

Fermez votre session root et reconnectez-vous en root, pour recharger le PATH


2) Installer Prosody

pkgin -y in prosody pico

('pico' ou 'nano'... au choix !)


3) Configurer Prosody

- Faire une sauvegarde du fichier de configuration :

cp /opt/local/etc/prosody/prosody.cfg.lua /opt/local/etc/prosody/prosody.cfg.lua.BAK

- Editez à présent le fichier de configuration de prosody :

pico /opt/local/etc/prosody/prosody.cfg.lua

- Descendez à la fin du fichier et ajoutez le bloc suivant :

-- CONFIGURATION :

VirtualHost "192.168.95.31"

enabled = true

ssl = {

key = "/opt/local/etc/prosody/certs/192.168.95.31.key";

certificate = "/opt/local/etc/prosody/certs/192.168.95.31.crt";

}

Component "conference.192.168.95.31" "muc"

storage = "memory"

 muc_room_default_persistent = true

 muc_room_default_public = true

 muc_room_precreate = {

 "General";

"Technique";

 }

Component "share.192.168.95.31" "http_file_share"

La configuration va créer 2 salons de conférences (General et Technique) accessibles aux utilisateurs.
Pour les rejoindre, les utilisateurs devront ajouter le salon par son adresse :
General@conference.192.168.95.31

- Générer le certificat SSL auto-signé :
Nous l'avons déjà spécifié dans la configuration mais pas encore créé !

prosodyctl cert generate 192.168.95.31

Par défaut, les certificats créés vont se placer dans /var/db/prosody/certs.
Il nous faut les déplacer :

mv /var/db/prosody/* /opt/local/etc/prosody/certs/

4) Créer des utilisateurs

prosodyctl register "user1" "192.168.95.31" "mot-de-passe-user1"

prosodyctl register "user2" "192.168.95.31" "mot-de-passe-user2"

5) Démarrer prosody

svcadm enable svc:/pkgsrc/prosody:default

- Vérifier si prosody est lancé :

svcs -a | grep prosody

- N'oubliez pas d'ouvrir le port 5222 sur le pare-feu IPF :

echo "pass in log quick proto tcp from any to any port = 5222 keep state" >> /etc/ipf/ipf.confipf -Fa -f /etc/ipf/ipf.conf

Configuration du client XMPP Spark

Sur le logiciel client XMPP Spark, il faut faire des modifications pour pouvoir se connecter lorsqu'on a utilisé un certificat auto-signé sur le serveur (comme c'est le cas dans ce tuto).
Lancez le logiciel. Un invite d'identification apparaît.
- Entrer l'username : user1
- Entrer le domain : 192.168.10.19
- Entrer le password "mot-de-passe-user1"
- cocher "Enregistrer le Mot de Passe"

Ne cliquez pas sur "Connexion" !

Cliquer sur Avancé :
- Onglet Security : cocher "Disable certificate hostname verification"
- Onglet Certificates : cocher "Accept self-signed"
Cliquez sur OK en bas vous fait revenir sur la page d'identification.

Cliquez sur Connexion et acceptez tout.



↑ Haut de page