Un serveur xmpp en 10 minutes

Merci à Pafzedog et Liandri pour la correction du tutoriel.

Installation

Ce tutoriel se base sur un ancien article de Cyrille Borne (qui n'est plus disponible), je vais donc détailler la marche à suivre tout en l’actualisant.

Sous Debian Stretch, il nous faut ajouter le dépot de Prosody, la clef et ensuite installer Prosody :

echo "deb http://packages.prosody.im/debian stable main" | sudo tee -a /etc/apt/sources.list
wget http://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -
sudo aptitude update
sudo aptitude install prosody

Pour ma part il manquait des dépendances pour SSL, il faudra donc peut être vérifier si vous avez toutes les libs lua.

Pour Red Hat/CentOS/Fedora :

dnf install prosody 

Configuration

Ensuite on va configurer le serveur via le fichier prosody.cfg.lua :

vim /etc/prosody/prosody.cfg.lua

Et aller à la ligne 186 pour trouver les VirtualHosts et ajouter ces lignes :

VirtualHost "domaine.tld"
ssl = {
key = "/etc/prosody/certs/domaine.tld.key";
certificate = "/etc/prosody/certs/domaine.tld.crt";
}

Il va nous falloir générer le certificats SSL, je vous recommande de les générer avec Letsencrypt/Certbot si vous n'en avez pas encore pour le domaine sur lequel vous allez l'utiliser.

Il va falloir importer le certificat dans le dossier de Prosody car celui-ci doit avoir l'accès complet à ce dernier.

prosodyctl --root cert import /etc/letsencrypt/live

Cela va nous générer les domaine.tld.key et domaine.tld.crt que l'ont a ajouté précédemment dans le fichier de configuration.

Puis on redémarre Prosody /etc/init.d/prosody restart ou avec systemctl restart prosody.

Il faudra ouvrir les ports pour le serveur dans iptables :

iptables -A INPUT -p tcp --dport 5222 -j ACCEPT
iptables -A INPUT -p tcp --dport 5269 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 5269 -j ACCEPT

On vérifie bien que les ports sont ouverts

    iptables -L | grep xmpp

Ce qui devrait retourner ceci :

ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:xmpp-client
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:xmpp-server
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:xmpp-server

Création d'un compte utilisateur Jabber dans Prosody

On va maintenant créer notre utilisateur avec prosodyctl.

prosodyctl adduser user_name@domaine.tld

Et voilà il ne vous reste plus qu'a vous connecter avec votre client XMPP préféré.

Aller plus loin

Vous pouvez aller plus loin avec le fichier de configuration, comme par exemple configurer les salons de discussion, juste après les vhosts, ligne 200 dans les Components (voir la documentation de Prosody)

Ajouter des admins au serveur ligne 22

-- Example: admins = { "user1@example.com", "user2@example.net" }
admins = { }

Ou encore ouvrir ou fermer votre serveur aux inscriptions :

-- Disable account creation by default, for security
-- For more information see https://prosody.im/doc/creating_accounts
allow_registration = false or true