---
title: Ergo
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, messaging, xmpp, irc, federation, go, moderne, multi-protocole]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Messaging, https://github.com/ergochat/ergo, https://ergo.chat/]
---

# 💬 Ergo

> **Le serveur XMPP moderne écrit en Go**, qui fait aussi office de **pont IRC** natif : une seule instance, deux protocoles de messagerie, et une configuration Go simple à maintenir.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | [ergo.chat](https://ergo.chat/) |
| **GitHub** | [ergochat/ergo](https://github.com/ergochat/ergo) |
| **Licence** | MIT |
| **Langage** | Go |
| **Étoiles GitHub** | 3.2k ⭐ |
| **Catégorie** | Messaging (Serveur XMPP/IRC) |

## 📝 Description

**Ergo** (anciennement **Oragono**) est un **serveur XMPP moderne écrit en Go**, conçu comme une alternative plus légère et plus facile à configurer que **Prosody** ou **ejabberd**. Son **originalité majeure** est de gérer **deux protocoles simultanément** : **XMPP** (Jabber) pour les clients modernes (Converse.js, Gajim, Dino, Conversations) **et IRC** pour les utilisateurs de clients historiques (The Lounge, WeeChat, Irssi).

Concrètement, le même binaire Ergo écoute sur le port **5222** (XMPP client), **5269** (XMPP federation), **6697** (IRC TLS) et éventuellement **6667** (IRC plain). Les utilisateurs IRC et XMPP partagent les **mêmes comptes et les mêmes salons** : un salon XMPP est accessible depuis un client IRC, et inversement. C'est une fonctionnalité unique qui simplifie énormément la migration d'une communauté IRC vers XMPP.

L'administration se fait en Go pur, avec un fichier **ergo.yml** lisible, et un système d'**extensions** en Go (chiffrement, IRC bouncer, etc.). Le projet est maintenu par **Jeremy Latt** (créateur de Discord.py), la documentation est claire, et la communauté est dynamique.

## 🚀 Installation

### Option recommandée : Docker

```yaml
services:
  ergo:
    image: ghcr.io/ergochat/ergo:latest
    container_name: ergo
    restart: unless-stopped
    ports:
      - "5222:5222"     # XMPP client
      - "5269:5269"     # XMPP federation (s2s)
      - "6667:6667"     # IRC plain (optionnel)
      - "6697:6697"     # IRC TLS
    volumes:
      - ergo_data:/ircd

volumes:
  ergo_data:
```

### Fichier de configuration minimal (`ergo.yml`)

```yaml
server:
  name: irc.example.com
  listen:
    - ":6667"
    - ":6697"
    - ":5222"
    - ":5269"
```

## ⚙️ Configuration Initiale

1. **Choisir un nom de serveur** XMPP (souvent identique au hostname).
2. **Configurer TLS** : Ergo supporte **Let's Encrypt** nativement via la config, sinon fournir `cert.pem` + `key.pem`.
3. **Créer un compte administrateur** avec `ergo mkpasswd` puis `OPER`.
4. **DNS** : `SRV _xmpp-client._tcp` et `SRV _xmpp-server._tcp` pour le discovery standard.
5. **Clients IRC** : se connecter à `irc.example.com:6697` avec TLS, le **nick** et le **password**.
6. **Clients XMPP** : utiliser n'importe quel client XMPP, s'enregistrer (inscription in-band).

## 🔄 Alternatives

- **Prosody** — Serveur XMPP le plus populaire, en Lua
- **ejabberd** — Serveur XMPP historique, en Erlang
- **InspIRCd** — Serveur IRC moderne, à coupler avec Prosody
- **UnrealIRCd** — Serveur IRC référence
- [[app-synapse]] — Matrix, philosophie différente

## 🔐 Sécurité

- ✅ Support natif **Let's Encrypt** (SNI, ACME)
- ✅ Authentification SCRAM-SHA-1/256, plain, cert
- ✅ **Fédération XMPP** authentifiée (PKI)
- ⚠️ **SASL EXTERNAL** recommandé pour la sécurité maximale
- ⚠️ Ne pas exposer **6667** (plain) en production, préférer **6697** (TLS)

## 📚 Ressources

- [Site officiel](https://ergo.chat/)
- [GitHub ergochat/ergo](https://github.com/ergochat/ergo)
- [Documentation](https://ergo.chat/docs/INSTALL.html)
- [Manuel de configuration](https://ergo.chat/docs/MANUAL.html)

## Pages Liées

- [[cat-messaging]] — Catégorie Messaging
- [[app-the-lounge]] — Client IRC web à combiner
- [[app-converse]] — Client XMPP web à combiner
- [[app-traefik]] — Reverse proxy HTTPS
- [[securisation-home-lab]] — Hardening
