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

4.1 KiB


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

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)

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

Pages Liées