{"id":193,"date":"2011-02-09T16:12:10","date_gmt":"2011-02-09T15:12:10","guid":{"rendered":"http:\/\/crudelis.fr\/blog\/?p=193"},"modified":"2011-02-09T16:12:10","modified_gmt":"2011-02-09T15:12:10","slug":"monter-son-propre-serveur-jabber-avec-prosody","status":"publish","type":"post","link":"https:\/\/crudelis.fr\/site\/sblog\/2011\/02\/monter-son-propre-serveur-jabber-avec-prosody\/","title":{"rendered":"Monter son propre serveur jabber avec Prosody"},"content":{"rendered":"<p><a href=\"http:\/\/prosody.im\/\">Prosody<\/a> est un serveur jabber tr\u00e8s simple, il est id\u00e9al pour monter un petit serveur perso qui n'h\u00e9bergera que quelques adresses voir qu'une seule, la notre.<br \/>\nIl est tr\u00e8s simple \u00e0 configurer et ne n\u00e9cessite pas de base de donn\u00e9es.<br \/>\n<!--more--><\/p>\n<h2>Installation<\/h2>\n<p>Prosody peut \u00e9ventuellement \u00eatre install\u00e9 depuis les d\u00e9p\u00f4ts (A partir de Lucid Lynx pour Ubuntu), sinon vous devrez <a href=\"http:\/\/prosody.im\/download\/start\">t\u00e9l\u00e9charger les paquets deb<\/a> pour l'installer manuellement.<\/p>\n<p>Il est n\u00e9cessaire \u00e9galement d'installer le paquet liblua-sec pour le support ssl\/tls (dont le paquet deb est<br \/>\n\u00e9galement disponible sur le site de Prosody).<br \/>\nSi vous installez prosody via les paquets deb, vous aurez \u00e9galement besoin des d\u00e9pendances suivante:<br \/>\n<em>lua5.1 liblua5.1-0 liblua5.1-expat0 liblua5.1-socket2 liblua5.1-filesystem0<\/em><\/p>\n<h2>Configuration<\/h2>\n<p>Prosody install\u00e9, on peut maintenant le configurer.<br \/>\nPour ce faire, nous allons \u00e9diter le fichier \/etc\/prosody\/prosody.cfg.lua avec notre \u00e9diteur de texte pr\u00e9f\u00e9r\u00e9.<\/p>\n<pre>sudo nano \/etc\/prosody\/prosody.cfg.lua<\/pre>\n<p><strong>allow_registration = false\/true;<\/strong><br \/>\nCe param\u00e8tre autorise (true) ou interdit (false) l'enregistrement d'un nouveau compte via un client jabber. Passer ce param\u00e8tre \u00e0 'true' implique que quiconque peut se cr\u00e9er un compte sur votre serveur.<br \/>\nDans notre cas, nous laisserons ce param\u00e8tre \u00e0 'false' puisque le serveur est d\u00e9di\u00e9 \u00e0 un usage personnel.<\/p>\n<p><strong>c2s_require_encryption = true<br \/>\ns2s_require_encryption = false<\/strong><br \/>\nPour plus de s\u00e9curit\u00e9, on impose une connexion chiffr\u00e9 via ssl pour le client.<br \/>\n<em>Pour la communication entre serveurs, imposer une connexion chiffr\u00e9e peut poser des probl\u00e8mes. En effet, certains serveurs ne chiffrent pas leur communications. Les serveurs de google en particulier...<\/em><br \/>\nOn peut toutefois imposer le chiffrage des communications entre serveurs et ainsi bannir les serveurs ne s\u00e9curisant pas leurs \u00e9changes.<\/p>\n<p><strong>c2s_timeout = 120<\/strong><br \/>\nOn fixe un timeout pour les clients non authentifi\u00e9 afin d'\u00e9viter une \u00e9ventuelle surcharge de connexions fant\u00f4mes r\u00e9siduelles.<\/p>\n<p><strong>VirtualHost \"mondomaine.tld\"<\/strong><br \/>\nLa ligne la plus importante, nous allons d\u00e9finir ici le nom de domaine qui sera utilis\u00e9 pour les adresses jabber.<br \/>\nSi vous poss\u00e9dez plusieurs domaines pointant sur la machine, il est possible de mettre autant de ligne que de domaines.<br \/>\nLes options mises \u00e0 la suite d'une ligne concernant un nom de domaine seront sp\u00e9cifiques \u00e0 ce nom de domaine, ainsi il est possible d'autoriser ou interdire des modules pour certains domaines ou autoriser un domaine sans connexions chiffr\u00e9es, etc.<\/p>\n<p><em><a href=\"http:\/\/prosody.im\/doc\/configure\">Le site de Prosody<\/a> donne d'avantage de d\u00e9tails sur la configuration et les options disponibles.<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>Afin de pouvoir profiter d'une connexion chiffr\u00e9e via ssl, nous allons devoir cr\u00e9er un certificat ssl, si vous n'en poss\u00e9dez pas d\u00e9j\u00e0 un. Il est possible de <a href=\"http:\/\/doc.ubuntu-fr.org\/tutoriel\/comment_creer_un_certificat_ssl\">cr\u00e9er un certificat ssl priv\u00e9<\/a>, cela \u00e9tant vous recevrez un avertissement car le certificat est autosign\u00e9.<br \/>\nMaintenant que vous avez votre certificat ssl, il faut indiquer \u00e0 prosody o\u00f9 le trouver.<br \/>\nDans \/etc\/prosody\/prosody.cfg.lua, nous allons modifier les lignes suivante:<br \/>\n<strong>ssl = {<br \/>\n\tkey = \"certs\/localhost.key\";<br \/>\n\tcertificate = \"certs\/localhost.cert\";<br \/>\n\t}<\/strong><br \/>\nEn rempla\u00e7ant les chemins par d\u00e9faut par l'emplacement de votre certificat.<\/p>\n<p>Vous pouvez maintenant red\u00e9marrer prosody pour qu'il prenne en compte les modifications et v\u00e9rifier qu'il n'y ai pas d'erreur.<\/p>\n<pre>sudo \/etc\/init.d\/prosody restart<\/pre>\n<h2>Ajouter des comptes de messagerie<\/h2>\n<p>Prosody est pr\u00eat, il reste \u00e0 ajouter un premier utilisateur au serveur.<br \/>\nPuisque nous avons interdit auparavant l'inscription distante via le client, nous allons ajouter manuellement notre utilisateur.<\/p>\n<pre>prosodyctl adduser user@mondomaine.tld<\/pre>\n<p>mondomaine.tld doit bien s\u00fbr \u00eatre un de ceux qui ont \u00e9t\u00e9 renseign\u00e9 pr\u00e9alablement dans le fichier de config.<br \/>\nprosodyctl nous demande ensuite le mot de passe du compte, et le tour est jou\u00e9. L'adresse jabber est op\u00e9rationnelle.<\/p>\n<p>En cas d'erreur on peut supprimer un utilisateur avec la commande suivante:<br \/>\n<em><strong>prosodyctl deluser user@mondomaine.tld<\/strong><\/em><br \/>\nOu changer son mot de passe:<br \/>\n<em><strong>prosodyctl passwd user@mondomaine.tld<\/strong><\/em><\/p>\n<p>Toutes les donn\u00e9es utilisateurs sont stock\u00e9es dans le dossier \/var\/lib\/prosody\/, ce dossier n'est accessible qu'\u00e0 l'utilisateur prosody. <strong>Ne changez pas les droits sur ce dossier<\/strong>, le profil de chaque utilisateur contient son mot de passe, affich\u00e9 en clair. Seul prosody doit donc y avoir acc\u00e8s.<\/p>\n<h2>Ports et DNS<\/h2>\n<p>Avant d'essayer de se connecter avec un client xmpp, nous allons devoir ouvrir les ports sur le parefeu pour autoriser prosody \u00e0 dialoguer avec l'ext\u00e9rieur.<br \/>\nLe port 5222 sert \u00e0 la connexion des clients au serveur.<br \/>\nEt le port 5269 \u00e0 la communication entre les serveurs.<\/p>\n<p>A ce stade, selon votre serveur dns, vous risquez d'\u00eatre confront\u00e9 \u00e0 un m\u00e9chant \"H\u00f4te inconnu\" ou \"Unknown host\".<br \/>\nCe sont les enregistrement dns qui sont en cause, pour achever la configuration de notre serveur jabber, rendons nous sur notre serveur dns (pour moi ce sera celui d'OVH).<br \/>\nNous allons cr\u00e9er les 3 champs SRV suivant:<br \/>\n_xmpp-client._tcp.mondomaine.tld IN SRV 5 0 5222 mondomaine.tld<br \/>\n_xmpp-server._tcp.mondomaine.tld IN SRV 5 0 5269 mondomaine.tld<br \/>\n_jabber._tcp.mondomaine.tld IN SRV 5 0 5269 mondomaine.tld<\/p>\n<p>En d\u00e9tail cela donne:<br \/>\nsous domaine: _xmpp-client._tcp<br \/>\nPriorit\u00e9: 5<br \/>\nPoids: 0<br \/>\nPort: 5222<br \/>\nCible: mondomaine.tld<\/p>\n<p>La priorit\u00e9 et le poids ne nous sont d'aucune utilit\u00e9 ici, il servent \u00e0 g\u00e9rer la priorit\u00e9 des serveurs si nous en poss\u00e9dions plusieurs.<\/p>\n<p>&nbsp;<\/p>\n<p>Enfin, nous pouvons nous connecter avec notre client xmpp pr\u00e9f\u00e9r\u00e9 et profiter de notre propre serveur jabber.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prosody est un serveur jabber tr\u00e8s simple, il est id\u00e9al pour monter un petit serveur perso qui n'h\u00e9bergera que quelques adresses voir qu'une seule, la notre. Il est tr\u00e8s simple \u00e0 configurer et ne n\u00e9cessite pas de base de donn\u00e9es.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[3],"tags":[25,34,37,45],"class_list":["post-193","post","type-post","status-publish","format-standard","hentry","category-home-server","tag-jabber","tag-prosody","tag-serveur","tag-xmpp"],"_links":{"self":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts\/193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/comments?post=193"}],"version-history":[{"count":0,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts\/193\/revisions"}],"wp:attachment":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/media?parent=193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/categories?post=193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/tags?post=193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}