J’ai enfin décidé d’héberger mon propre serveur Jabber, pour plusieurs raisons :
- la liste de mes contacts est mieux sur mon serveur que sur un autre ;
- le serveur que j’utilisais (jabber.fr) rencontre parfois quelques difficultés ;
- mon adresse Jabber sera ainsi la même que mon adresse mail (
romsuivi de@rom1v.com).
Et c’est simple !
Installation et configuration
Tout d’abord, installer le paquet prosody :
apt-get install prosody
Puis ajouter à la fin du fichier /etc/prosody/prosody.cfg.lua :
Host "nom.de.domaine"
Pour moi :
Host "rom1v.com"
Créer un utilisateur en ligne de commandes et choisir un mot de passe :
prosodyctl adduser user@nom.de.domaine
Certificat
Un certificat TLS/SSL est créé par défaut, mais les champs sont renseignés avec des valeurs non pertinentes (localhost au lieu de nom.de.domaine par exemple). Il est donc préférable d’en générer un nouveau.
Dans le répertoire /etc/prosody/certs, exécuter :
openssl req -new -x509 -nodes -out nom.de.domaine.cert -keyout nom.de.domaine.key -days 1000
Renseigner les champs demandés (« . » pour laisser un champ vide).
Remplacer le certificat dans le fichier de configuration :
ssl = {
key = "/etc/prosody/certs/nom.de.domaine.key";
certificate = "/etc/prosody/certs/nom.de.domaine.cert";
}
Empreinte
Comme c’est un certificat auto-signé, les clients Jabber ne lui feront pas confiance : ils demanderont une confirmation, en présentant son empreinte. Il faudra alors vérifier que le certificat présenté est bien le bon, c’est-à-dire que l’empreinte est la même.
Pour la connaître :
openssl x509 -fingerprint -noout -in nom.de.domaine.cert
Par exemple :
$ openssl x509 -fingerprint -noout -in rom1v.com.cert SHA1 Fingerprint=C3:6D:9B:65:06:55:C4:84:B4:A5:8D:4B:12:68:2F:08:71:7E:AC:DD
Ports
Les ports TCP 5222 et 5269 doivent être ouverts.
Démarrer
Il ne reste plus qu’à démarrer le service.
service prosody start
Clients
Il est maintenant possible de se connecter en utilisant le nom d’utilisateur et le mot de passe créés :
Backup
Les données du serveur sont stockées dans /var/lib/prosody. Il est donc important de ne pas oublier ce répertoire dans le processus de sauvegarde.
Merci à Cyrille Borne et nicolargo.




C’est très intéressant! Alors ensuite il faut payer son domaine… Merci pour le tuto! J’ai partagé ta page sur Diaspora*
Quand tu dis « la liste de mes contacts est mieux sur mon serveur que sur un autre », tu sous-entend juste les contacts de ton compte Jabber ou tu as un système exploitable par d’autres applications (style un répertoire CardDAV) ?
@mart-e :
Je parle juste des contacts de mon compte Jabber.
Petit complément : j’utilise Beem comme client sur mon téléphone (Android), et je ne parvenais pas à me connecter à mon serveur.
En fait, Beem semble ne pas fonctionner si le nom de domaine gère IPv6. En effet, pour
rom1v.com, j’ai à la fois une entréeA(IPv4) et une entréeAAAA(IPv6).Pour le faire fonctionner, j’ai créé un sous-domaine
ipv4.rom1v.comqui lui ne contient que l’entréeA.Ainsi, dans Beem, en renseignant mon compte Jabber normalement (le JID en
@rom1v.com), et en activant dans Options avancées la case Options spécifiques, je peux forcer le serveur àipv4.rom1v.com. Et ça fonctionne…Du coup tu change d’adresse Jabber ? tu es obligé de prévenir tes contacts
@bartounet :
)
Mécaniquement, c’est indispensable. Personne ne devrait avoir accès au calepin privé de chacun de ses contacts.
Bonjour,
Intéressant. Merci.
Mais dans quel état est le serveur après ces manipulations, au niveau sécurité ?
Toute personne passant par là peut elle créer un compte sur le serveur ? Si oui, comment l’interdire ? Si non, comment l’autoriser et avec quelle(s) restrictions ?
Cordialement.
Suite à ce commentaire :
En fait, ça ne vient pas (que) de Beem, mais de Prosody, et de luasocket qui ne gère pas l’IPv6.
Du coup, la meilleure solution est d’ajouter un sous-domaine (
im.rom1v.com) qui ne contient qu’une entréeA(IPv4), et d’ajouter deux entréesSRVde cette manière :_xmpp-client._tcpayant pour valeur0 0 im.rom1v.com_xmpp-server._tcpayant pour valeur0 0 im.rom1v.com(plus d’infos ici)
De cette manière, il suffit de configurer Beem (ou n’importe quel autre client) normalement sans options spécifiques.
Par défaut, personne ne peut créer de compte sur le serveur. Les options se configurent dans
/etc/prosody/prosody.cfg.lua.Concernant la création de comptes, ce fichier contient :
Je ne sais pas comment appliquer des restrictions (je n’ai pas besoin de cette option). Tu peux au moins activer (décommenter) un module qui s’appelle
watchregistrationspour recevoir une alerte quand quelqu’un s’inscrit.du coup on doit mettre à jour ton contact ? ta nouvelle adresse ?
@bartounet :
Je n’avais pas répondu à ton premier commentaire, car je t’avais ajouté en contact avec ma nouvelle adresse (ce qui répondait implicitement à la question). Mais tu ne dois plus avoir la même adresse Jabber que celle que j’avais de toi (en
@im.apinc.org)…La réponse est donc oui, il faut mettre à jour mon contact avec ma nouvelle adresse
tu as vu ma demande de contact ?
@bartounet :
Je viens de la voir.
Empathy devrait cacher encore plus les notifications, afin d’être bien sûr que l’utilisateur ne la voit pas. Pour voir ta demande de contact, aucune notification visible dans gnome-shell, aucune nouvelle fenêtre ouverte, simplement dans le roster. Pour la voir, il faut activer l’affichage des contacts déconnectés, pour voir un contact correspondant à ton compte qui s’est ajouté, avec une icône clignotante indiquant qu’il faut l’accepter… Superbe notification !
Excellent ! Merci ®om pour ce post !
Bonsoir,
Merci pour vos commentaires supplémentaires.
Très instructif.
J’avais un peu abandonné l’idée d’avoir mon serveur jabber sur mon serveur dédié à la lecture des docs de ejabberd ; jabberd ….cela me semblait plus complexe. Une dernière question si vous le permettez , mes contacts n’ont pas besoin de s’inscrire sur « mon » serveur pour continuer à communiquer avec moi inscrit sur « mon » serveur également ?
Cordialement.
Non, bien sûr. Chaque utilisateur n’est inscrit que sur le serveur qu’il a choisi, et peut communiquer avec tous les autres.
C’est le même principe que pour le mail : par exemple un utilisateur inscrit sur GMail et un autre inscrit sur Yahoo! (ou sur son serveur perso) peuvent communiquer. C’est la raison pour laquelle l’adresse du serveur fait partie de l’adresse mail (
@gmail.com,@yahoo.fr,@rom1v.com…) et de l’adresse Jabber.bonsoir,
Merci pour tout
Cordialement.
ça s’installe très bien comme tu l’explique. Et plus sensationnel : ça marche ! Testé donc sur un serveur sous Debian Squeeze. Par contre j’ai du décocher la ligne « Chiffrement requis » de mon client Empathy. J’ai du merder dans le chiffrement. Any idea ?
En fait c’est merci JB Favre (http://www.jbfavre.org/) qui m’avait soufflé le logiciel pour le faire à l’époque où j’étais sous identi.ca. Je rajoute juste que Nicolargo est une grosse faignasse qui a pompé mon tuto pour y mettre 4 écrans de plus
Hello
J’essaye moi aussi de m’installer un serveur jabber. Une question. Y a t-il un moyen pour que ce soit encore les comptes système qui permettent de s’authentifier ? (le mot de passe est le même : log sur le serveur, courriel, blog, jabber…)
@22decembre :
Aucune idée…
Résolu… Je suis sur Jabberd2 !
Hello Romain,
Merci pour ce tuto clair et précis !
Par contre, comment fais-tu pour regler la durée du certificat ? Dans mon cas, en suivant ton tuto, j’obtiens des certificats valables 1 mois. C’est le cas chez toi aussi ?
Merci pour ton aide
C’est l’option
-days. Merci, je rajoute l’info dans le billet.Effectivement, j’avais un certificat d’un mois également (mais comme je l’avais accepté, ça fonctionnait quand même).