Etherpad 介绍与选型指南
Etherpad 实时协作文档编辑器的定位、架构与功能全解,附与 HedgeDoc/HackMD/Firepad/OnlyOffice 的量化选型对比,全部结论标注官方来源与查询日期。
Etherpad 介绍与选型指南
目标:本文解决「Etherpad 是什么、能做什么、与同类实时协作文档方案相比如何选型」的问题。本文为联网溯源篇:全部信息取自官方站点、官方 GitHub 仓库与官方文档,逐条标注来源与查询日期(统一为 2026-10-22),不含本地实测结论;部署实操见《Etherpad 3.3.9 Docker Compose 部署指南》。
一、环境信息
本文为纯联网溯源文档,写作过程未做本地部署实验,文中引用的每条信息均来自下列官方来源(查询日期 2026-10-22):
| 来源 | 地址 | 用途 |
|---|---|---|
| 官方站点 | https://etherpad.org | 产品定位、特性、下载入口 |
| 官方仓库 | https://github.com/ether/etherpad | 源码、README、Releases、LICENSE |
| 官方文档站 | https://docs.etherpad.org | 架构、配置、API、FAQ |
| Releases Atom | https://github.com/ether/etherpad/releases.atom | 版本节奏(本次实查最近 5 个版本日期) |
| shields.io 徽章 JSON | https://img.shields.io/github/stars/<owner>/<repo>.json | GitHub 星数量化取证(未直连 api.github.com) |
| 官方 Docker Hub | https://hub.docker.com/r/etherpad/etherpad | 官方镜像与部署形态 |
💡 说明:Etherpad 仓库原名
ether/etherpad-lite,现更名为ether/etherpad,访问旧地址会 301 重定向到新地址。本文统一使用新仓库名。
二、软件概述
Etherpad 是一个开源的、基于浏览器的实时协作文档编辑器(Real-time collaborative document editor):多人同时编辑同一篇富文本文档,每个人屏幕上实时呈现所有人的输入,官方口号为「really work together in real time」(来源:etherpad.org 首页,查询日期 2026-10-22)。它以「文档(pad)」为核心单元——每个 pad 对应一个 URL,打开即写,天然面向多人。
关键事实速览(来源逐条标注):
- 定位:自托管优先的实时协同富文本编辑器,可嵌入第三方站点(来源:etherpad.org「Frequently Asked Questions」)。
- 许可证:Apache License 2.0(来源:仓库 LICENSE 文件,https://github.com/ether/etherpad/blob/HEAD/LICENSE,查询日期 2026-10-22)。
- 技术栈:服务端 Node.js(运行时要求 Node.js ≥ 18,来源:官方文档 https://docs.etherpad.org/installation.html,查询日期 2026-10-22);前端为自带 ACE 编辑器。
- 最新稳定版:3.3.9,发布于 2026-10-18(来源:https://github.com/ether/etherpad/releases/tag/v3.3.9,查询日期 2026-10-22)。该版为安全+特性发布:修复插件卸载路径穿越漏洞(GHSA-g9xm-3pqr-wcph)、新增 pad 自动回收(
padRetention设置,可自动删除 N 天无人编辑的 pad,替代已停止维护的ep_delete_after_delay插件)、新增suppressPadDeletionTokenModal设置、CSS 体积从约 1.7 MB 降到约 61 KB(字体不再内联进压缩 CSS)。 - 维护方:Ether 基金会/社区组织(GitHub org: ether),翻译来自 translatewiki.net 社区(来源:v3.3.9 Release Notes)。
💡 技术拓展:实时协同编辑目前主流的冲突合并方案有两类——OT(Operational Transformation,操作变换) 与 CRDT(Conflict-free Replicated Data Type,无冲突复制数据类型)。OT 按「操作序列变换」处理并发编辑,服务端集中仲裁,代表实现有 Google Docs、Etherpad;CRDT 按数据结构自身收敛去中心合并,代表实现有 Yjs、Automerge。Etherpad 采用服务端集中式 OT(来源:官方文档对编辑器内核 ACE 的说明 https://docs.etherpad.org,查询日期 2026-10-22),适合有稳定服务端的自托管部署;CRDT 更适合无中心 P2P 或离线优先场景。本文主体即 Etherpad 的 OT 方案。
三、核心架构
按官方文档与仓库描述(来源:https://docs.etherpad.org 与 https://github.com/ether/etherpad/blob/HEAD/README.md,查询日期 2026-10-22),Etherpad 采用单进程 Node.js 服务 + 可插拔数据库的四层结构:
| 层 | 组件 | 说明(官方来源) |
|---|---|---|
| 前端 | ACE 编辑器 + Timeslider | 浏览器内富文本编辑器;Timeslider 为时间滑块,可回放整篇 pad 的修订历史 |
| 服务端 | Node.js 单进程 | WebSocket(socket.io)承载编辑增量,HTTP 承载页面与 HTTP API |
| 数据抽象 | ueberdb2 | 官方数据库抽象层,把读写统一翻译到不同后端数据库 |
| 持久化 | 多种数据库 | DirtyDB(仅测试用)、SQLite、MySQL、MariaDB、PostgreSQL、Redis、SurrealDB 等(来源:官方文档 https://docs.etherpad.org/database.html,查询日期 2026-10-22) |
- pad(文档):最小内容单元,URL 即 pad(如
http://<host>:9001/p/<padId>),修订记录与属性全部入库。 - 插件体系:以
ep_*命名的 npm 包为扩展形态,服务端钩子(hooks)+ 客户端钩子双端扩展;管理后台/admin/plugins可在线装卸(来源:官方文档 https://docs.etherpad.org/plugins.html,查询日期 2026-10-22)。 - HTTP API:面向程序化管理的 REST 风格接口,以 API key(
APIKey.txt)认证,覆盖 pad 增删读写、作者/会话/分组管理等(来源:官方文档 https://docs.etherpad.org/api.html,查询日期 2026-10-22)。 - 授权与身份:核心自带只读链接、pad 删除令牌等基础控制;登录、分组、LDAP/OAuth 等由插件(如
ep_etherpad-lite内置部分 + 第三方ep_*插件)补齐(来源:官方 FAQ 与插件索引 https://static.etherpad.org/index.html,查询日期 2026-10-22)。
四、功能特性
以下特性清单取自官方站点与仓库 README(来源:etherpad.org、github.com/ether/etherpad README,查询日期 2026-10-22):
- 实时协同:多人同屏编辑,输入零延迟互见;所见即所得富文本。
- Timeslider 版本回放:按修订滑动回看整篇文档任意历史时刻。
- 内置聊天:pad 右侧自带聊天栏,边写边聊。
- 修订着色:每位作者的修改以不同颜色呈现。
- 插件生态:官方插件索引收录上百个
ep_*插件(公式、绘图、Markdown、TOC、权限增强等)。 - HTTP API:全部管理操作可程序化,便于集成进自有系统。
- 皮肤系统:默认 Colibris 皮肤,3.3.9 已完整支持暗色模式(来源:v3.3.9 Release Notes,Colibris dark mode 修复 #8271)。
- 多语言:界面翻译由 translatewiki.net 社区维护,覆盖数十种语言。
- pad 保留策略(3.3.9 新增):
padRetention定期清理 N 天无人编辑的 pad,默认关闭、支持 dryRun 预演(来源:v3.3.9 Release Notes,#8340)。
五、快速开始(官方最小可用示例)
官方推荐的最短上手路径是官方 Docker 镜像(来源:官方 README https://github.com/ether/etherpad/blob/HEAD/README.md 的 Docker 段落与 Docker Hub 页面 https://hub.docker.com/r/etherpad/etherpad,查询日期 2026-10-22):
docker run -d --name etherpad -p 9001:9001 etherpad/etherpad
按官方文档说明:启动后浏览器访问 http://<服务器IP>:9001,首页输入任意 pad 名称即创建并进入一个 pad。默认使用内置 DirtyDB 存储(仅适合试用,生产必须换正式数据库);数据库、管理员、API key 等配置通过环境变量或 settings.json 完成,完整可落地的 Compose 部署(含数据库、持久化、健康验证、升级)见《Etherpad 3.3.9 Docker Compose 部署指南》。
⚠️ 注意:官方镜像默认数据不落盘(容器内
/opt/etherpad-lite/var),仅用于体验;生产部署务必挂载数据目录或外接数据库,见部署指南。
六、适用场景与限制
适用场景(综合官方 FAQ 与 README 描述):
- 教学/课堂协同笔记:全班同写一份笔记,Timeslider 可回放写作过程。
- 会议记录、头脑风暴:多人零门槛并行输入,无需账号即可参与。
- 结对写作与审稿:修订着色 + 版本历史天然支持追责与回滚。
- 集成方系统内嵌编辑器:通过 HTTP API + iframe 嵌入,pad 生命周期全部程序化管理。
- 开源社区/组织内公开协同入口。
限制(来源:官方 FAQ https://etherpad.org 与官方文档,查询日期 2026-10-22):
- 富文本而非 Markdown:不以 Markdown 语法为主输入方式(可用插件转换,但定位不同)。
- 核心不带完整用户体系:登录/分组/精细权限依赖插件或前置反向代理认证。
- 单实例架构:官方主进程为单 Node.js 进程,无内置多主复制;规模化靠多 pad 分摊 + 纵向扩容。
- 数据库必须自备生产级后端:默认 DirtyDB 仅测试用。
七、同类选型对比
对同为「实时协作编辑」方向的 5 个代表方案做量化对比。GitHub 星数统一经 shields.io 徽章 JSON 端点取证(https://img.shields.io/github/stars/<owner>/<repo>.json,查询日期 2026-10-22,未直连 api.github.com):
| 方案 | 定位 | GitHub 星数(2026-10-22) | 许可证 | 服务端语言 | 协同算法 | 存储后端 | 维护状态 |
|---|---|---|---|---|---|---|---|
| Etherpad(ether/etherpad) | 自托管实时协同富文本编辑器 | 19k | Apache-2.0 | Node.js | 服务端集中式 OT | ueberdb2 多后端(PG/MySQL/SQLite/Redis 等) | 活跃:近 1 个月 5 个版本(3.3.5~3.3.9,2026-09-17 至 2026-10-18) |
| HedgeDoc(hedgedoc/hedgedoc,前 CodiMD) | 自托管实时协同 Markdown 笔记 | 7.5k | AGPL-3.0 | Node.js | OT(CodeMirror 协同层) | PostgreSQL/MySQL/MariaDB/SQLite | 活跃(1.x 稳定线,2.x 开发线) |
| HackMD(hackmdio/hackmd) | Markdown 协同 SaaS/自托管双形态 | 10k | AGPL-3.0(社区版) | Node.js | OT | PostgreSQL | 商业服务为主,社区版持续维护 |
| Firepad(firebase/firepad) | 嵌入式 JS 协同编辑组件(供开发者集成进自有页面) | 3.9k | MIT | 无独立服务端(依托 Firebase Realtime Database) | OT(Firebase 变换) | Firebase RTDB | 已归档:官方标注不再维护(2022 年起),依赖 Firebase 云服务 |
| OnlyOffice Docs(ONLYOFFICE/DocumentServer) | 自托管在线 Office 套件(Word/Excel/PPT 文档级协同) | 7k | AGPL-3.0(社区版) | .NET (C#) 核心 | 自研协同协议(WebSocket) | PostgreSQL + Redis + RabbitMQ 必依赖 | 活跃,版本节奏快 |
关键差异与如何选:五者共通点是「多端实时互见」,分歧在文档模型——Etherpad/HedgeDoc/HackMD 面向「轻文档」(一篇笔记一个 URL),OnlyOffice 面向「Office 文件格式兼容」,Firepad 是「无界面的嵌入式组件」。分歧第二在输入语法:Etherpad 富文本、HedgeDoc/HackMD Markdown。分歧第三在数据主权:Firepad 数据在 Firebase 云端,其余四者均可完全自托管。
版本节奏量化(来源:各仓库 Releases,查询日期 2026-10-22):Etherpad 在 2026-09-17 至 2026-10-18 的 31 天内连发 3.3.5、3.3.6、3.3.7、3.3.8、3.3.9 共 5 个版本,其中 3.3.9 为安全发布(GHSA-g9xm-3pqr-wcph),补丁响应速度在同类中属于第一梯队。
兼容矩阵要点(来源:官方文档 database.html / HedgeDoc 文档 / OnlyOffice 官方安装要求,查询日期 2026-10-22):
- Etherpad:数据库可选项最多(SQLite/MySQL/MariaDB/PostgreSQL/Redis/SurrealDB 等 7 种),可零外部依赖跑起来。
- HedgeDoc/HackMD:仅支持关系型数据库(PG/MySQL/SQLite),需外部 DB。
- OnlyOffice Docs:强依赖 PostgreSQL + Redis + RabbitMQ 三件套,部署最重。
- Firepad:无自建服务端,但被锁定在 Firebase 云。
选型建议(如果…则…):
- 如果要富文本、多插件、API 可编程的协同文档服务器 → 选 Etherpad。
- 如果团队以 Markdown 为笔记标准 → 选 HedgeDoc(CodiMD 的社区后继)。
- 如果要 Office 格式(docx/xlsx/pptx)在线协同编辑 → 选 OnlyOffice Docs。
- 如果要把协同编辑嵌入自有前端页面且能接受 Firebase → 可评估 Firepad,但它已归档,新项目建议改用自托管 Etherpad(iframe/API 集成)或 Yjs 系 CRDT 组件。
- 如果要开箱即用的托管服务且接受云端 → HackMD SaaS。
站内延伸:确定选型后,部署与实操文档按篇展开——部署《Etherpad 3.3.9 Docker Compose 部署指南》、配置《Etherpad 3.3.9 配置参数详解》、命令行与 API《Etherpad 3.3.9 常用 CLI 命令与工具详解》。
八、参考链接
- Etherpad 官方站点:https://etherpad.org (查询日期 2026-10-22)
- 官方仓库(源码/README/Releases/LICENSE):https://github.com/ether/etherpad (查询日期 2026-10-22)
- 官方文档站:https://docs.etherpad.org (查询日期 2026-10-22)
- v3.3.9 Release Notes:https://github.com/ether/etherpad/releases/tag/v3.3.9 (查询日期 2026-10-22)
- 官方数据库支持说明:https://docs.etherpad.org/database.html (查询日期 2026-10-22)
- 官方 HTTP API 文档:https://docs.etherpad.org/api.html (查询日期 2026-10-22)
- 官方插件索引:https://static.etherpad.org/index.html (查询日期 2026-10-22)
- 官方 Docker 镜像:https://hub.docker.com/r/etherpad/etherpad (查询日期 2026-10-22)
- HedgeDoc 仓库:https://github.com/hedgedoc/hedgedoc (查询日期 2026-10-22)
- HackMD 仓库:https://github.com/hackmdio/hackmd (查询日期 2026-10-22)
- Firepad 仓库:https://github.com/firebase/firepad (查询日期 2026-10-22)
- OnlyOffice Docs 仓库:https://github.com/ONLYOFFICE/DocumentServer (查询日期 2026-10-22)