BlogBang

Mettre en place votre serveur XMPP (VoIP et chat)

Capture 21 Mettre en place votre serveur XMPP (VoIP et chat)

Si vous souhaitez proposer à vos collaborateurs en entreprises, à vos amis ou encore à votre communauté web, un moyen sécurisé de discuter en VoIP (Voix sur IP) ou par chat, sans devoir passer par des serveurs publics comme ceux de Microsoft avec MSN ou Skype, alors j’ai ce qu’il vous faut.

Ça s’appelle OpenFire, c’est open source et ça permet de mettre en place un serveur XMPP privé qui peut ensuite utiliser une base utilisateur LDAP ou ActiveDirectory et sur lequel les gens peuvent se connecter avec le client Windows, Linux ou Mac : Spark

wf serversettings Mettre en place votre serveur XMPP (VoIP et chat)

OpenFire

Spark est un client « lourd » mais existe aussi sous forme de client web (SparkWeb) qui peut alors être facilement intégré dans un intranet, ou dans vos projets, et modifié comme bon vous semble (open source hein…). Mais vous pouvez bien sûr utiliser le client que vous souhaitez tant qu’il est compatible XMPP. Sans oubliez de mettre en place les petits plugins qui vont bien pour le sécuriser.

Liste de contacts

Spark

Mais le projet Ignite va plus loin dans son utilisation du protocole XMPP en proposant des API comme :

  • Smack est une librairie cliente qui permet de créer son propre client de messagerie instantannée. Il permet de se logger sur un serveur XMPP et utiliser les différentes fonction de celui-ci.
  • Tinder est une librairie un peu plus bas niveau qui fourni une implémentation Java de XMPP. Il peut donc être utilisé pour développer des clients mais aussi et surtout des logiciels serveurs XMPP. D’ailleurs, OpenFire et Whack utilisent Tinder.
  • Whack est une librairie Java utilisé pour développer des composants externes à OpenFire (sorte de plugins quoi) qui fonctionnent en tant que process indépendant mais qui sait se connecter à votre serveur XMPP pour étendre les fonctionnalités de ce dernier sans avoir à modifier la config ou le source d’OpenFire.

Vous trouverez toutes les infos (téléchargements et docs) sur le site d’Ignite RealTime ! J’aurai bien pris le temps de mettre un serveur en place pour qu’on puisse tous discuter dans la « communion de l’amour de son prochain », mais quand j’ai vu qu’on pouvait se transférer des fichiers entre nous, je me suis dit que vous alliez l’utiliser pour vous échanger vos films de vacances (bande de piraaaaates)… du coup j’ai abandonné l’idée :-) ))

Publicité

Je vous recommande aussi la lecture des sujets suivants


Faites un lien vers cette news sur votre site



25 commentaires

  1. idix Reply to this comment


    merci korben, c’est bien utile pour les PTI de fin d’étude ça ^^

    Posté le 3 février 2010 à 09:41:20

  2. gordontesos Reply to this comment


    J’espérais plutôt un « how-to », avec une expérience réelle du déploiement de ce serveur (au passage, tu pourrais utiliser le nom Jabber, histoire de préciser grossièrement à quoi correspond XMPP.

    Plus concrètement, as-tu essayé plusieurs serveurs XMPP ? Pourquoi avoir choisi OpenFire (qui est codé, si je me souviens bien, en Java, avec les désagréments que ça apporte -avis personnel-) ? J’ai installé un eJabberd sur mon serveur (gentoo OVH), mais j’ai rencontré pas mal de soucis au niveau de la config, mais ça vient sans doute en partie de la distrib lourdement customisée à la base.

    Posté le 3 février 2010 à 09:41:28

  3. Korben Reply to this comment


    @gordontesos: je n’ai pas fait d’étude comparative de serveur XMPP, mais je suis parti d’un article de download squad qui présentait celui-là et j’ai creusé l’info pour en savoir un peu plus. Après effectivement, j’imagine qu’il y a a d’autres mais je ne les connais pas (ou pas encore :-) )

    Posté le 3 février 2010 à 09:47:10

  4. Jojo Reply to this comment


    bonjour les gens,
    attention, openfire n’est plus maintenu depuis belle lurette !
    en plus, sa seule fonctionnalité vraiment intéressante (à mes yeux du moins), l’intégration avec Asterisk ne marche plus sur les versions >=1.6 d’Asterisk.
    Du coup, je suis partit sur un eJabberd sur une Debian, avec les passerelles ‘qui vont bien’ pour ne pas trop perturber mes users.

    Donc, je déconseille vivement openfire, désolé :(

    Posté le 3 février 2010 à 09:53:17

  5. Solho Reply to this comment


    Salut…

    Trés intèressant ton article… je tenterais bien l’experience (si je trouve un peu de temps surtout…), histoire de me dire que
    je peux faire autre chose de mon PC que de la bureautique et multimédia…

    Cependant, étant totalement néophyte en la matière de serveur, est-ce que cela est facilement réalisable malgré tout? Faut-il un config matériel d’enfer, ou bien cela peut-il être installé sur un config un peu ancienne?
    Dernière question, si j’envisage de réaliser cela au niveau « famillial », à partir de quel bande passante (débit) cela devient envisageable?

    Merci d’avance pour vos lumière…

    Posté le 3 février 2010 à 10:01:34

  6. Nÿco Reply to this comment


    Voici un petite liste de serveurs :
    http://wiki.jabberfr.org/Administrateurs
    …et de clients :
    http://wiki.jabberfr.org/Clients

    Généralement, on recommande effectivement Openfire (projet en sommeil, voire abandonné), ou bien ejabberd comme serveurs, ou encore Tigase (Java) et Prosody (Lua, très jeune projet). Côté clients, on recommande plutôt Gajim et Psi, qui assez fiables et stables, et surtout qui ont beaucoup de fonctionnalités XMPP, tout en étant très respectueux des standards.

    Sur l’échange de fichiers, c’est assez difficile en P2P, donc la plupart du temps, les clients utilisent des proxies… à fournir côté serveur. Donc si tu ne veux pas d’échanges illégitimes ou illégaux de fichiers, tu ne mets pas en place de proxy, et voilà, on ne pourra pas t’accuser de quoi que ce soit de ce côté. Si c’était la seule chose qui te retenait pour faire tourner un serveur XMPP, alors tu peux y aller. ;-)

    Posté le 3 février 2010 à 10:05:27

  7. gordontesos Reply to this comment


    @Solho: je pense qu’un minimum de connaissances avancées en système linux est requise pour tout serveur, histoire de ne pas avoir peur de mettre les mains dans le cambouis quand il y a un problème.
    Pour le hardware, si ça reste dans un cadre familial, ton serveur tournera avec peu de ressources, et la BP sera faible (sauf si tu échanges beaucoup de films de vacances, mais le protocole XMPP est initialement pensé pour de la communication textuelle)

    Posté le 3 février 2010 à 10:05:38

  8. jinh Reply to this comment


    Hello,

    J’ai déployé il y’a quelques mois de ça OpenFire dans le cadre d’une utilisation professionnelle.

    Il n’est pas très gourmand en ressources, il suffit de disposer d’un peu de RAM, qui dépend fortement de la montée en charge et du nombre d’utilisateurs simultanément connectés ( les détracteurs du Java sont souvent les personnes qui ne savent pas comment configurer un tant soit peu leur JVM, je dis ça sans animosité).

    A savoir que pour ceux qui souhaitent faire de la videoconférence, il existe un plugin Red5 (qui utilise du flash derrière).

    Il est même possible d’associer les comptes Jabber à des comptes SIP pour des configurations plus avancées.

    Enfin, et c’est un point appréciable je trouve, il est possible de s’interfacer avec un LDAP pour synchroniser les comptes utilisateurs.

    Bien sûr, le point bloquant est, comme l’a exprimé Nyco, le statut du projet OpenFire, à savoir bien endormi malgré une communauté ma foi encore assez active.

    En résumé, pour une uilisation dans le cadre privé, c’est très satisfaisant. Pour une utilisation professionnelle, c’est un peu limite car nous avons aucune visibilité sur l’évolution future de la solution.

    Posté le 3 février 2010 à 10:35:02

  9. gordontesos Reply to this comment


    @jinh: Merci pour tes explications. Si tu avais aujourd’hui à faire le choix d’un serveur XMPP à déployer, que choisirais-tu ?

    Concernant Java, as-tu des liens intéressants concernant l’optimisation de la JVM ?

    Posté le 3 février 2010 à 10:48:37

  10. jinh Reply to this comment


    @gordontesos:

    Sans te mentir, à l’époque (il y’a 6 mois), j’ai repris le travail d’un collègue, donc je n’ai pas de étude comparative exhaustive sous la main.

    Cependant, OpenFire répondait à l’ensemble des besoins que nous avions identifié grâce aux plugins qui existent. Il faut cependant bien garder à l’esprit que le déploiement d’un tel serveur est d’une facilité déconcertante, tout comme l’ajout de plugins sous forme d’archives Java (JAR ou WAR).

    Ok, tu vas me dire, l’installation, c’est bien beau mais en terme de configuration ?

    C’est tout aussi accessible, les menus sont bien découpés, pas de scripts obscures à aller modifier à la mano.

    En fait, un des points qui a nous conduit à ce choix était justement qu’il soit écrit en Java puisque nous avions envisagé de rajouter des fonctionnalités supplémentaires via des modifications de code source ou le développement de plugins.

    Concernant l’optimisation de la JVM, je te conseille tout d’abord de lire les deux articles sur le site de Sun :

    http://java.sun.com/performance/reference/whitepapers/tuning.html
    http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp

    Finalement, pour une application de type Openfire, amené à tourner constamment en production, l’option qui est incontounable est -server, car elle permet d’optimiser plus de code (compilation en code natif avec une phase de profiling). Le revers de la médaille est que l’application met plus de temps à se lancer, ce qui n’est pas préjudiciable pour une telle application vu la fréquence des arrêts/redémarrages.

    De nombreux articles sur Internet traitent de ce sujet, mais attention toutefois à ne pas faire confiance aveuglément aux benchmarks (d’autant plus lorsqu’ils comparent du C++ avec du Java…). Je te renvoie vers un exposé que j’avais fait il y’a pas longtemps qui explique bien le problème (c’était dans le cadre de mes études, c’est assez succinct mais on peut toujours en parler ensuite) : http://www-igm.univ-mlv.fr/~dr/XPOSE2008/Benchmarking%20et%20optimisations%20en%20Java/.

    Effectivement, il faut quand même avouer que la tendance à affirmer que « le Java c’est lent » est historique (au début, c’était le cas) et fortement renforcée par des tests de performance régis par un protocole erroné.

    Posté le 3 février 2010 à 11:43:00

  11. meven Reply to this comment


    Openfire est le serveur dont Google Wave est une extension (en tout cas pour la partie du code ouvert par google).

    http://www.bivouak.fr/post/2009/07/25/Google-Wave-s-ouvre-un-peu

    http://googlewavedev.blogspot.com/2009/07/google-wave-federation-protocol-and.html

    Posté le 3 février 2010 à 11:52:45

  12. gordontesos Reply to this comment


    @meven: Google s’appuierait donc sur OpenFire, qui ne seble plus en dev ? Ont-ils l’intention de relancer le projet ?

    @jinh: merci pour ces infos, je m’y pencherai plus sérieusement dès que j’aurai du temps

    Posté le 3 février 2010 à 11:56:05

  13. Solho Reply to this comment


    @Nÿco: @gordontesos: @jinh:
    merci pour ces quelques éclairages…
    Même si mes connaissances « linuxienne » sont, à mon avis, encore faibles, je n’ai pas peur de « mettre les mains dans le cambouis » (même plus peur d’une reinstall… ;) ), c’est d’ailleurs ce qui m’a le plus séduit dans Linux (pour faire générique), la possibilité de se l’arranger aux « petits oignons », contrairement à d’autres OS trés hermétiques… suivez mon regard….

    Bef, je pense que je vais me lancer… d’abord à la recherche des docs et tutos, ensuite on passera à l’application… :)

    Enfin, je reste preneur de conseils avisés,bien entendu!

    Amicalement

    Posté le 3 février 2010 à 12:07:50

  14. Etenil Reply to this comment


    On dit LIBRE, pas open-source, nandidju!

    Posté le 3 février 2010 à 12:09:42

  15. stfeang7 Reply to this comment


    « mais quand j’ai vu qu’on pouvait se transférer des fichiers entre nous, je me suis dit que vous alliez l’utiliser pour vous échanger vos films de vacances (bande de piraaaaates)… du coup j’ai abandonné l’idée :-) )) »

    Il y a surement moyen de bloquer le transfert de fichier entre utilisateur…..

    Franchement ce serai vraiment cool de mètre en place ce genre de truc !!!!

    Posté le 3 février 2010 à 12:10:37

  16. LordHenry Reply to this comment


    Salutations!
    J’ai utilise openfire pendant quelques temps, et je dois dire que j’ai été impressionne par lappli, linterface de config est déconcertante de facilite, surtout quand on a joué avec les fichiers de conf de ejabberd et autres

    par contre le gros reproche que j’ai a faire, et qui ma fait supprimer openfire c’est l’utilisation mémoire, alors oui ça se configure en modifiant les options de lancement, mais c’est bcp plus complique que la conf du serveuren lui même, et surtout l’occupation mémoire mini est bornée, je sais plus a combien mais le min correspond a plus que ce que consomme ejabberd, genre 2fois plus
    bien sur c’est pas 4go de ram qu’il faut, mais sur un seveur avec 128mo + lamp ça occasionne du swap regimierement, et donc des ralentissements et de l’usure pour le dd

    Sinon complètement hos sujet: les images sur la version iPhone du site sont pas redimetionnees, enfin chez moi, c’est juste moi qui ai ce souci?

    Posté le 3 février 2010 à 13:35:49

  17. sebsauvage Reply to this comment


    sinon pour fair de la voip facilement, il y a mumble:
    gratuit, opensource, facile à mettre en place, bonne qualité audio, faible latence, facile à utiliser côté client.
    Il y a des clients pour Windows, MacOSX et Linux.

    C’est vrai qu’il a été conçu à la base pour être utilisé dans les jeux, mais pour faire de la conf audio, ça marche nickel.

    http://mumble.sourceforge.net/

    Posté le 3 février 2010 à 13:53:10

  18. Jean-Philippe Encausse Reply to this comment


    J’avais déjà identifié OpenFire comme un outil super intéressant à creuser.

    Mais je ne comprends toujours pas comment s’intègre le Chat de l’entreprise avec le monde externe ?

    Je m’explique:
    - L’entreprise a besoin d’un serveur Jabber pour le Chat
    - Elle peut déployer des clients Jabber (web ou soft) pour que les gens communiquent entre eux.

    Mais:
    - Comment font les gens qui ont déjà un client Jabber (Yahoo, MSN, GTalk) ? Il ne vont quand même pas utiliser 2 outils ? QUID de l’iPhone & co ?
    - Comment depuis mon compte Jabber de mon entreprise je vais pouvoir discuter avec des externes ?

    D’après ce que j’ai compris:
    - Les Serveur Jabber se déclarent en cascade pour rooter correctement l’information.
    - Il existe des « proxy » Jabber pour MSN, Yahoo, GTalk …

    Si vous avez des détails sur ce genre d’architecture je serais preneur ! Car reinventer une roue limité au cadre de l’entreprise c’est un peu moyen …

    Posté le 3 février 2010 à 16:13:14

  19. gordontesos Reply to this comment


    @Jean-Philippe Encausse: tous les clients Jabber utilisent le protocole Jabber. Ensuite, le serveur importe peu, un compte est lié à un serveur, et peut discuter avec d’autres comptes, pour peu qu’ils soient compatibles avec le protocole (tel que Gtalk)

    Posté le 3 février 2010 à 17:08:34

  20. Jean-Philippe Encausse Reply to this comment


    @gordontesos Je le refait:
    - J’ai un server « d’entreprise » Jabber avec des Membres lié à ce serveur.
    - J’ai GoogleTalk, MSN,… sur mon poste

    Comment mon MSN va savoir et rooter mes messages a un Membre A qui s’est connecté sur le Serveur d’entreprise ?

    Est ce que c’est le serveur d’entreprise qui doit se déclarer auprès du reste du monde ? Et exposer tous ses membres ? Puis filtrer via de la « glue » Java ?

    Posté le 3 février 2010 à 17:28:19

  21. Optix Reply to this comment


    Est-ce que c’est compatible avec un vrai téléphone VoIP (genre ceux qui sont avec OVH Plug & Phone) ?

    Posté le 3 février 2010 à 20:40:04

  22. bobby Reply to this comment


    Personnellement en stage j’ai eu à installer un serveur jabber, je me suis penché sur ejabberd sous Debian.

    Installation facile puisqu’il est dans les dépôts, configuration un peu moins à cause du langage un peu exotique dans lequel il est développé (erlang), mais rien d’insurmontable, il y a beaucoup de documentation et tutoriels sur le net (d’après ce que j’avais compris à l’époque c’est le jabber à la mode en ce moment) et le fichier de conf par défaut est assez bien commenté.

    Niveau fonctionnalités utilisées : identification sur un annuaire OpenLDAP, remplissage des profils (nom, prénom, pseudo, mail, numéro de tel…) grâce aux données de l’annuaire, et une seule liste de contacts qui est la même pour tout le monde et est mise à jour automatiquement dès l’ajout d’une nouvelle entrée dans l’annuaire.

    Pour le client on avait laissé le choix et certains utilisaient spark, d’autre pidgin, gluxmpp, psi…

    Il est beaucoup utilisé en journée et on a jamais eu à se plaindre des performances !

    Posté le 3 février 2010 à 22:35:55

  23. gordontesos Reply to this comment


    @Jean-Philippe Encausse: je ne saisis pas bien la question, mais sache que certains clients (pour ne pas dire la majorité en dehors de Live Messenger) autorisent la connexion à plusieurs comptes simultanément.
    Au-delà de ça, la connexion à des comptes externes via ton serveur Jabber s’effectue ainsi : tu te connectes à ton compte Jabber, et déclares des « services » (service MSN par exemple), en fournissant tes accès à ces comptes. Ensuite, le serveur établira une passerelle, et ouvrira le compte, afin que tu aies accès à tes contacts MSN en toute transparence. Tes contacts croiront alors être en discussion avec ton adresse MSN, puisqu’elle sera réellement connectée.

    Posté le 4 février 2010 à 09:14:27

  24. Mikiane Reply to this comment


    tu devrais vrairment tester ejabberd (developpé à l’origine par M. Rémond de ProcessOne). http://www.process-one.net/en/

    Posté le 4 février 2010 à 17:03:01

  25. snes-nostageek Reply to this comment


    Bon Korben c’est quand que t’arrête les billets intéressant. Je suis obligé de commenté à chaque billets là !!!
    Vu que j’en ai un paquet en retard…
    Je sais pas moi; tu peux pas écrire des trucs pourris que je zappe tout en deux/deux. :D
    Non, non je déconne hein.

    Posté le 5 février 2010 à 21:09:49