106 lines
4.3 KiB
Markdown
106 lines
4.3 KiB
Markdown
---
|
|
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
|
|
<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
|
|
|
|
- [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
|