Prosody

Updated 28 Septembre 2022

Prosody est un serveur XMPP moderne qui se veut facile à installer et performant. Prosody vise également à offrir plus d'évolutivité et de souplesse pour aider les développeurs à mettre en œuvre des fonctionnalités ou à prototyper de nouveaux protocoles en peu de temps. XMPP, autrefois Jabber, est un protocole libre basé sur XML, permettant d'utiliser la messagerie instantanée et d'afficher un statut de présence en temps quasi réel.

Installer et configurer PostgreSQL

Installez et configurez PostgreSQL conformément au manuel. Remplacez la base de données dbtest par prosody, et l'utilisateur test par prosody.

Installer et configurer Prosody

Commencez par installer Prosody :

emerge -a net-im/prosody

Configurez Prosody pour xmpp.example.org :

/etc/jabber/prosody.cfg.lua
-- This is a (by default, empty) list of accounts that are admins
-- for the server. Note that you must create the accounts separately
-- (see https://prosody.im/doc/creating_accounts for info)
-- Example: admins = { "user1@example.com", "user2@example.net" }
admins = { "admin@xmpp.example.org" }

...
storage = "sql" -- Default is "internal"

-- For the "sql" backend, you can uncomment *one* of the below to configure:
--sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.
--sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }
sql = { driver = "PostgreSQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }

...

-- Location of directory to find certificates in (relative to main config file):
certificates = "/etc/letsencrypt/live/xmpp.example.org"

----------- Virtual hosts -----------
-- You need to add a VirtualHost entry for each domain you wish Prosody to serve.
-- Settings under each VirtualHost entry apply *only* to that host.

--VirtualHost "localhost"
-- Prosody requires at least one enabled VirtualHost to function. You can
-- safely remove or disable 'localhost' once you have added another.

VirtualHost "xmpp.example.org"

Obtenir le certificat Let's Encrypt

Procurez-vous un certificat pour le domaine xmpp.example.org, en suivant les instructions du manuel.

Lancer Prosody

Lancez le démon Prosody :

/etc/init.d/prosody start

Ajoutez Prosody à la liste de démarrage automatique :

rc-update add prosody

Gestion de comptes utilisateurs

Pour ajouter un compte nommé admin@xmpp.example.org, exécutez :

prosodyctl adduser admin@xmpp.example.org
WARNING:  there is already a transaction in progress
Enter new password: 
Retype new password: 

Pour modifier le mot de passe de admin@xmpp.example.org :

prosodyctl passwd admin@xmpp.example.org
WARNING:  there is already a transaction in progress
Enter new password: 
Retype new password: 

Pour supprimer le compte admin@xmpp.example.org :

prosodyctl deluser admin@xmpp.example.org

Composantes

Les composants sont des services supplémentaires sur le serveur, mis à la disposition des clients logiciels via les sous-domaines du serveur principal. Il peut s'agir de conférences, d'annuaires d'utilisateurs, de passerelles vers d'autres protocoles, etc.

Prosody prend en charge des composants internes (c'est-à-dire fonctionnant dans le cadre d'un serveur Prosody donné) ainsi qu'externes (conformes à la norme XEP-0114).

Ajouter les conférences

Dans XMPP, un sous-domaine distinct est généralement réservé aux conférences (ou discussions multiutilisateurs). Pour définir ~muc.xmpp.example.org~~ comme domaine de conférence, ajoutez les lignes suivantes au fichier de configuration :

/etc/jabber/prosody.cfg.lua
Component "muc.xmpp.example.org" "muc"
    name = "Conferences" 

Ajouter un élément externe

Pour ajouter un composant externe, vous devez renseigner l'adresse et le mot de passe que le composant utilisera pour se connecter au serveur.

Pour ce faire, définissez le composant externe (matrix.xmpp.example.org) et son mot de passe (secret) à la fin du fichier de configuration :

/etc/jabber/prosody.cfg.lua
-- Global config section --
component_interface = "0.0.0.0"
...
Component "matrix.xmpp.example.org"
    component_secret = "secret" 

Configuration DNS

Les entrées SRV permettent une redirection transparente au niveau du DNS des services XMPP vers d'autres ports et domaines. Admettons que vous souhaitiez que les adresses de vos comptes soient de type user@example.org, alors que le serveur XMPP se trouve en réalité sur xmpp.example.org.

XMPP prend en charge deux types d'entrées SRV : celles utilisées par les clients ("c2s") et celles utilisées par les autres serveurs XMPP ("s2s").

Pour ajouter xmpp.example.org en tant que domaine XMPP example.org, reportez les entrées SRV suivantes sur le DNS :

_xmpp-client._tcp.example.org. 18000 IN SRV 0 5 5222 xmpp.example.org.
_xmpp-server._tcp.example.org. 18000 IN SRV 0 5 5269 xmpp.example.org.

5222 et 5269 sont les ports utilisés pour la connexion des clients et des serveurs respectivement.

Note

Note that the target domain must be an existing A record. This cannot be an IP address or a CNAME record. 

Pour que les services des sous-domaines (tels que les conférences et autres composants front-end) soient visibles sur d'autres serveurs, ils doivent également se référer aux entrées SRV.

Par exemple, pour définir muc.example.org comme service de conférence, ajoutez l'entrée SRV correspondante au DNS :

_xmpp-server._tcp.muc.example.org. 18000 IN SRV 0 5 5269 xmpp.example.org.