Ergo 2.19 介绍与选型指南
全面介绍 Ergo 2.19 IRC 服务器(原 Oragono):单体集成 ircd+Services+Bouncer 的 Go 语言现代守护进程,涵盖核心架构、功能特性、快速开始、与 InspIRCd/ngIRCd/UnrealIRCd 的量化选型对比,基于 2.19.1 官方发布件与本地实测。
Ergo 2.19 介绍与选型指南
目标:介绍 Ergo(原 Oragono)这款现代 IRC 服务器(ircd)的定位、架构与核心特性,帮助读者在 Ergo、InspIRCd、ngIRCd、UnrealIRCd 之间做出选型决策。文中版本、发布日期、资产清单均来自官方发布页与本地实测,测试环境为 Ubuntu 22.04 + Ergo 2.19.1。
一、环境信息
- 操作系统:Ubuntu 22.04 LTS(x86_64)
- 软件版本:Ergo 2.19.1(2026-08-04 发布,安全修复版本)
- 官方站点:https://ergo.chat/
- 源码仓库:https://github.com/ergochat/ergo
- 发布件:10 个平台的预编译包(linux-x86_64/arm64/armv6/riscv64、freebsd-x86_64、openbsd-x86_64、macos-x86_64/arm64、plan9-x86_64、windows-x86_64)
- 实测校验值:linux-x86_64 包 SHA-256 为
c275f2de8e8eb074c38707136392290172400b5b78616cb9f660351527924b47 - 网络说明:GitHub 直连受限时,发布件可经 ghproxy.net 等镜像代理下载(详见《Ubuntu 22.04 安装 Ergo 2.19 指南》中的下载降级链)
二、软件概述
Ergo 是一款用 Go 语言编写的现代 IRC 服务器守护进程(ircd),前身为 Oragono 项目,2021 年更名为 Ergo。它与传统 ircd 最大的区别在于单进程集成——将传统上需要三个独立组件才能完成的工作打包进一个可执行文件:
- ircd 本体:负责客户端连接、频道、消息路由与 IRC 协议;
- Services 框架:内置 NickServ(账号/昵称)、ChanServ(频道注册)、HostServ(虚拟主机名)等常见服务;
- Bouncer 功能:支持历史消息回放、多客户端附着到同一身份、always-on 常驻会话。
这意味着部署 Ergo 不需要再单独安装 Atheme/Anope 等 Services 软件,也不需要 ZNC 这类 Bouncer 外挂,默认即可获得现代聊天体验。
Ergo 的项目原则是:简单易用、默认安全、紧跟 IRCv3 前沿规范、配置可热重载。它特别适合中小型社区、团队内部通讯或需要自托管且希望减少组件数量的场景。
三、核心架构
Ergo 的架构可以概括为“单二进制 + 单配置文件 + 单数据库文件”:
- 单二进制:
ergo可执行文件包含全部功能,无外部运行时依赖(默认 CGO 关闭,静态链接); - 单配置文件:
ircd.yaml(由default.yaml复制而来)集中定义网络名、监听、账号策略、频道策略、操作员、日志、历史、持久化后端等全部行为; - 单数据库:默认使用内嵌 BoltDB(
ircd.db)存储账号与频道注册信息;历史消息可配置持久化到 MySQL/PostgreSQL/SQLite; - 热重载:支持
SIGHUP或systemctl reload在线重载配置,绝大多数参数无需重启即可生效; - 无服务器间链接:Ergo 目前不支持像传统 ircd 那样将多台服务器互联成一个逻辑网络(即没有 server-to-server federation)。一个 Ergo 实例就是一个独立网络。
💡 技术拓展:IRC 服务器的“联邦/链接”能力并非所有产品都具备。传统大型网络(如 Libera.Chat、EFnet)依赖多台 ircd 通过 TS6/P10 等协议互联以分担负载;而 Ergo 选择单节点优先,用更简单的运维模型换取功能集成度。若需要跨机房多节点联邦,应考虑 InspIRCd 或 UnrealIRCd。
四、功能特性
Ergo 2.19 的功能栈覆盖账号、安全、历史与现代化扩展四大维度:
4.1 账号与认证
- 内置 NickServ,支持用户自助注册、邮箱验证(可选)、密码重置;
- 支持 SASL PLAIN、SASL EXTERNAL(证书指纹)、SCRAM-SHA-256;
- 昵称保留策略:strict(默认强制登录后才能使用保留昵称)、optional、disabled;
- 支持 OAuth2 Bearer Token、JWT Bearer Token 及外部脚本插件认证;
- 支持强制 SASL(
require-sasl)构建私有服务器。
4.2 安全与隐私
- 默认仅回环监听明文 6667,全接口监听 TLS 6697,支持 SNI、多证书、PROXY 协议;
- IP 地址 Cloaking(默认启用):用户看到
pwbs2ui4377257x8.irc形式的假主机名而非真实 IP; - 连接频率限制(IP-based DoS protection)、OPER 暴力破解节流;
- 支持 WebSocket、Tor 隐藏服务监听器;
- 2.19.1 修复了邮箱验证绕过、消息撤回权限错误、WebPush SSRF 三项安全漏洞。
4.3 历史与 Bouncer
- 默认内存存储最近消息(频道 2048 条、私聊 256 条,7 天过期),支持
CHATHISTORY命令查询; - 可配置持久化到 MySQL/PostgreSQL/SQLite;
- 支持
znc.in/playback回放、多客户端附着到同一 nick、always-on 常驻客户端; - 支持标记已读(
MARKREAD)与草稿式多行消息(draft/multiline)。
4.4 管理与扩展
- 操作员分级:
chat-moderator与server-admin两类内置权限模板; - 支持频道注册、vhost 分配、relaymsg(中继消息)、roleplay(角色扮演伪昵称);
- 提供实验性 HTTP JSON API(默认关闭,仅监听 127.0.0.1:8089);
- 支持通过环境变量覆盖配置(
ERGO__SERVER__MAX_SENDQ=128k形式)。
五、快速开始(最小可用示例)
以下步骤在一台干净的 Ubuntu 22.04 服务器上即可跑通 Ergo 2.19.1:
# 1. 下载并解压官方预编译包(GitHub 直连受限时走 ghproxy.net)
wget https://ghproxy.net/https://github.com/ergochat/ergo/releases/download/v2.19.1/ergo-2.19.1-linux-x86_64.tar.gz
tar -xzf ergo-2.19.1-linux-x86_64.tar.gz
cd ergo-2.19.1-linux-x86_64
# 2. 准备配置文件
cp default.yaml ircd.yaml
sed -i 's/name: ErgoTest/name: MyNet/' ircd.yaml
sed -i 's/name: ergo.test/name: irc.example.com/' ircd.yaml
# 3. 设置管理员密码(生成 bcrypt 哈希写入 ircd.yaml)
printf "q1w2e3r4\nq1w2e3r4\n" | ./ergo genpasswd --quiet
# 将输出的 $2a$04$ 开头的哈希串填入 ircd.yaml 中 opers.admin.password
# 4. 生成自签名证书并初始化数据库
./ergo mkcerts
./ergo initdb
# 5. 启动
./ergo run
启动后默认监听 127.0.0.1:6667(明文,仅本机)与 :6697(TLS,全接口)。用任意支持 SASL 的 IRC 客户端连接 irc.example.com:6697 即可注册账号并聊天。
💡 说明:以上步骤的完整安装、systemd 托管、防火墙与生产配置,请参见《Ubuntu 22.04 安装 Ergo 2.19 指南》。
六、适用场景与限制
6.1 适用场景
- 中小社区自托管:几十到几千人在线的游戏公会、开源项目频道、企业内部群聊;
- 一体化需求:希望账号、历史、多设备同步开箱即用,而不愿组合 ircd + Atheme + ZNC;
- 现代 IRC 体验:需要 IRCv3 扩展(多行消息、消息标签、历史回放、严格 UTF-8);
- 快速上线:单二进制 + 单配置文件,十分钟内完成部署。
6.2 主要限制
- 不支持服务器间链接:无法像传统 ircd 那样把多台 Ergo 组成一个联邦网络;单点故障需自行用 systemd/Keepalived 等外部手段兜底;
- 生态规模较小:相比 InspIRCd/UnrealIRCd,第三方模块与脚本生态有限;
- 管理界面缺失:没有官方 Web 管理后台,全部管理通过 IRC 命令或配置文件完成;
- 大规模网络验证不足:官方未公布单机十万级连接的基准数据,超大型公开网络仍多见 InspIRCd/UnrealIRCd。
七、同类选型对比
Ergo 并非唯一可选的开源 IRC 服务器。下表将 Ergo 与三款主流传统 ircd 进行量化对比(数据截至 2026-10-25,以各项目官方发布页为准):
| 维度 | Ergo 2.19.1 | InspIRCd 4.x | ngIRCd 26.x | UnrealIRCd 6.x |
|---|---|---|---|---|
| 实现语言 | Go | C++ | C | C |
| 架构模型 | 单进程集成(ircd+Services+Bouncer) | 模块化 ircd,Services 需外挂 | 轻量 ircd,Services 需外挂 | 功能全量 ircd,Services 需外挂 |
| 服务器间链接 | ❌ 不支持 | ✅ TS6 | ✅ TS6 | ✅ TS6 |
| 账号注册 | 内置 NickServ | 需外接 Atheme/Anope | 需外接 Services | 需外接 Services |
| 历史回放 | 内置内存/持久化 | 需模块或 Bouncer | 需 Bouncer | 需模块或 Bouncer |
| 配置热重载 | ✅ 全量 YAML 热重载 | ✅ 部分支持 | ✅ 部分支持 | ✅ 部分支持 |
| 默认安全 | TLS 6697 + IP Cloaking + 强制 SASL 可配 | 需手动配置 | 需手动配置 | 提供 SSL/TLS 与 spamfilter |
| IRCv3 支持 | 领先,实现大量 draft 扩展 | 支持主流扩展 | 支持基础扩展 | 支持主流扩展 |
| 资源占用 | 低(静态二进制,实测常驻内存 ~8 MB) | 中等 | 极低 | 中等偏高 |
| 典型规模 | 中小型网络/单节点 | 中大型网络/联邦 | 小型网络 | 大型公开网络 |
| 版本节奏 | 每年 2–4 个稳定版,2.19.1 为安全修复 | 活跃,4.x 持续迭代 | 稳定,更新较慢 | 活跃,6.x 持续迭代 |
7.1 关键差异解读
- 是否内置 Services:Ergo 最大卖点。传统方案需要额外部署并维护一套 Services(如 Atheme),配置复杂且存在账号同步问题;Ergo 开箱即用。
- 联邦能力:如果计划建设跨地域、多节点的公开网络,Ergo 当前无法满足,应选 InspIRCd 或 UnrealIRCd。
- 运维复杂度:Ergo 的单文件配置 + 热重载显著低于传统 ircd 的模块化配置(尤其是 UnrealIRCd 的模块化配置)。
- 客户端体验:Ergo 默认启用历史回放与多客户端附着,接近现代 IM;传统 ircd 默认无历史,用户断线即丢消息。
7.2 选型建议
- 如果是小团队/社区自托管,且希望最少组件、最快上线 → 选 Ergo;
- 如果需要多节点联邦或接入现有大型 IRC 网络 → 选 InspIRCd 或 UnrealIRCd;
- 如果追求极致轻量、只需要基础聊天功能 → 选 ngIRCd;
- 如果已有成熟的 Services/Bouncer 体系,仅替换 ircd 层 → 可考虑 InspIRCd 或 UnrealIRCd。
💡 说明:InspIRCd、ngIRCd、UnrealIRCd 的详细安装与配置指南正在编写中,发布后将在本文更新交叉链接。
八、参考链接
- Ergo 官方网站:https://ergo.chat/
- Ergo GitHub 仓库:https://github.com/ergochat/ergo
- Ergo 2.19.1 Release Notes:https://github.com/ergochat/ergo/releases/tag/v2.19.1
- Ergo 官方手册:https://ergo.chat/manual.html
- IRCv3 规范:https://ircv3.net/