Ergo 2.19 介绍与选型指南

全面介绍 Ergo 2.19 IRC 服务器(原 Oragono):单体集成 ircd+Services+Bouncer 的 Go 语言现代守护进程,涵盖核心架构、功能特性、快速开始、与 InspIRCd/ngIRCd/UnrealIRCd 的量化选型对比,基于 2.19.1 官方发布件与本地实测。

ErgoErgoIRC即时通信2026/10/25

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 最大的区别在于单进程集成——将传统上需要三个独立组件才能完成的工作打包进一个可执行文件:

  1. ircd 本体:负责客户端连接、频道、消息路由与 IRC 协议;
  2. Services 框架:内置 NickServ(账号/昵称)、ChanServ(频道注册)、HostServ(虚拟主机名)等常见服务;
  3. 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.1InspIRCd 4.xngIRCd 26.xUnrealIRCd 6.x
实现语言GoC++CC
架构模型单进程集成(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 的详细安装与配置指南正在编写中,发布后将在本文更新交叉链接。

八、参考链接