--- title: Converse.js created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, messaging, xmpp, client, javascript, web-client, omemo, auto-hebergement] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Messaging, https://github.com/conversejs/converse.js, https://conversejs.org/] --- # 💬 Converse.js > **Le client XMPP web open source le plus mature** : s'intègre dans une page, s'installe en standalone, supporte OMEMO, MUC, et tous les serveurs XMPP. C'est l'équivalent web de Pidgin ou Gajim. ## 📋 Informations Générales | Champ | Valeur | | :--- | :--- | | **Site web** | [conversejs.org](https://conversejs.org/) | | **GitHub** | [conversejs/converse.js](https://github.com/conversejs/converse.js) | | **Licence** | MPL-2.0 | | **Langage** | JavaScript, TypeScript | | **Étoiles GitHub** | 3.3k ⭐ | | **Catégorie** | Messaging (Client XMPP) | ## 📝 Description **Converse.js** est un **client XMPP web** complet, écrit en JavaScript, conçu pour fonctionner à la fois comme **widget intégrable** dans une page existante, comme **PWA installable**, ou comme **client standalone** auto-hébergé. Ce n'est pas un serveur : il se connecte à n'importe quel serveur XMPP (Prosody, ejabberd, [[app-ergo]]). C'est historiquement l'un des clients XMPP web les plus avancés : il supporte **OMEMO** (chiffrement E2E), **OTR**, **MUC** (Multi-User Chat / salons), **file transfer**, **vCard**, **XEP-0313 (MAM)** pour l'historique côté serveur, et bien d'autres XEPs. Il fonctionne en **BOSH** ou en **WebSocket** selon les préférences. L'architecture est modulaire : on peut embarquer Converse.js comme composant dans une application maison (iframe ou Web Component), ou le déployer comme instance publique. Plusieurs projets notables l'utilisent (Movim, Odoo Talk historiquement, certaines intranets). ## 🚀 Installation ### Option recommandée : Docker (reverse proxy HTTPS + fichier statique) ```yaml services: converse: image: conversejs/conversejs:latest container_name: converse restart: unless-stopped ports: - "8080:8080" environment: CONVERSE_BOSH_SERVICE_URL: https://xmpp.example.com:5280/bosh CONVERSE_WS_SERVICE_URL: wss://xmpp.example.com:5280/websocket CONVERSE_ALLOW_USER_REGISTRATION: "true" CONVERSE_DEFAULT_DOMAIN: example.com CONVERSE_ANONYMOUS_LOGIN: "false" ``` ### Intégration dans une page existante ```html ``` ## ⚙️ Configuration Initiale 1. **Préparer un serveur XMPP** : Prosody, ejabberd, ou [[app-ergo]] doivent écouter en BOSH ou WebSocket. 2. **Configurer le reverse proxy** pour exposer les endpoints BOSH/WebSocket sur HTTPS. 3. **Choisir le mode** : standalone, embedded, ou ombedded dans une application tierce. 4. **Activer OMEMO** dans la config (libsignal-protocol-javascript). 5. **Authentification** : pointer vers l'API d'auth du serveur XMPP, ou utiliser un reverse-proxy auth (Basic Auth, OIDC). ## 🔄 Alternatives - **JSXC** — Plus ancien, toujours maintenu, orientation serveur Jabber - **Movim** — Plateforme XMPP complète (client + serveur de réseau social) - [[app-the-lounge]] — Client IRC web (à ne pas confondre) - **Gajim** — Client XMPP natif desktop (Python/GTK) - **Dino** — Client XMPP natif moderne (Vala/GTK) ## 🔐 Sécurité - ✅ Chiffrement **OMEMO** bout-en-bout supporté - ✅ Connexion **BOSH** ou **WebSocket** sécurisée (HTTPS/WSS obligatoire) - ✅ Possibilité d'authentification via Basic Auth, LDAP (selon le serveur XMPP) - ⚠️ La sécurité repose sur celle du serveur XMPP en arrière-plan - ⚠️ Stocker les identifiants en mémoire uniquement (ne pas les persister côté client) ## 📚 Ressources - [Site officiel](https://conversejs.org/) - [GitHub conversejs/converse.js](https://github.com/conversejs/converse.js) - [Documentation](https://conversejs.org/docs/html/) - [Démo officielle](https://inverse.chat/) ## Pages Liées - [[cat-messaging]] — Catégorie Messaging - [[app-ergo]] — Serveur XMPP/IRC à combiner - [[app-the-lounge]] — Client IRC web - [[app-traefik]] — Reverse proxy HTTPS - [[securisation-home-lab]] — Hardening