Files
wiki/Catalogue-Self-Hosted/apps/app-converse.md
T
2026-06-09 18:40:21 +02:00

4.3 KiB


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
GitHub 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)

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

<script src="https://cdn.example.com/converse.min.js"></script>
<script>
  converse.initialize({
    bosh_service_url: 'https://xmpp.example.com:5280/bosh',
    authenticate: 'login',
    view_mode: 'embedded',
  });
</script>

⚙️ 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

Pages Liées