在线协作文档!1.8万Star的Etherpad,无需账号的实时协作神器
实时协作文档是远程团队的刚需。Google Docs和Notion虽然功能强大,但它们都是SaaS服务——需要账号、网络依赖、数据不在自己手上。有没有一个可以自托管、免登录、又能实时协作的工具?
今天介绍的 Etherpad,是开源的实时协作在线文档工具,2009年就已存在,是Google Docs的开源鼻祖之一。它最大的特点是无需账号——打开链接就能开始协作,临时性协作的完美解决方案!已获得 1.8万Star。
项目简介
Etherpad 是一个自托管的实时协作文本编辑器,最早于2009年发布,是最早一批”Google Docs替代品”开源项目之一。经过十几年的迭代,它已成为功能完善、稳定可靠的开源协作工具。
Etherpad的核心特点:无账号协作——创建者生成一个分享链接,任何人打开链接就能编辑,无需注册、无需登录、无需安装任何软件。文档实时同步,支持多人同时编辑,变更自动保存。
核心优势
-
🚫 免登录协作 – 打开链接就能编辑,无需注册任何账号 -
⚡ 实时同步 – 多人在同一文档中编辑,毫秒级同步 -
📝 富文本支持 – 粗体、斜体、标题、列表、代码块 -
📊 修订历史 – 查看任意时间点的文档内容 -
🐳 一键部署 – Docker一行命令搭建完成 -
🔌 插件生态 – 支持统计图表、任务列表、Markdown导出等插件 -
🌐 API完整 – 丰富的REST API,可对接现有系统
项目地址:https://github.com/ether/etherpad-lite官方网站:https://etherpad.org在线体验:https://beta.etherpad.org

核心特性
编辑功能
|
|
|
|
|---|---|---|
| 粗体 |
|
|
| 斜体 |
|
|
| 下划线 |
|
|
| 标题 |
|
|
| 列表 |
|
|
| 代码块 |
|
|
| 撤销/重做 |
|
|
| 评论 |
|
|
核心功能
1. 无账号实时协作
1协作流程:21. A创建文档 → 生成链接 https://etherpad.example/p/abc12332. A分享链接给B、C、D43. B、C、D打开链接,无需登录直接编辑54. 所有人实时看到彼此的光标和编辑65. A设置只读密码保护(可选)76. 文档变更自动保存到数据库
2. 多彩光标和身份标识
Etherpad为每个协作者分配一个随机颜色,编辑时光标显示颜色和用户名(可自定义),方便识别谁在改什么:
1用户Alice(🟢绿色光标)正在编辑...2用户Bob(🔵蓝色光标)正在编辑...3用户Charlie(🟡黄色光标)正在编辑...4 ↓5 每个人可以看到其他人的实时光标位置
3. 修订历史(Time Slider)
Etherpad保存每次编辑的历史,通过时间轴可以回溯到任意时间点查看文档内容:
1# 时间轴功能2# - 拖动时间轴滑块,可查看任意历史时刻3# - 点击"Playback"播放历史,模拟时间倒流4# - 导出任意历史版本为TXT/HTML
4. API驱动
1# 创建新文档 2curl -X POST https://etherpad.example/api/1/createPad \ 3 -d "apikey=YOUR_API_KEY&padID=my-meeting-notes" 4 5# 获取文档内容 6curl https://etherpad.example/api/1/getText \ 7 -d "apikey=YOUR_API_KEY&padID=my-meeting-notes" 8 9# 获取HTML格式10curl https://etherpad.example/api/1/getHTML \11 -d "apikey=YOUR_API_KEY&padID=my-meeting-notes"1213# 保存修订历史14curl https://etherpad.example/api/1/saveRevision \15 -d "apikey=YOUR_API_KEY&padID=my-meeting-notes&revisionID=10"1617# 列出所有文档18curl https://etherpad.example/api/1/listAllPads
插件扩展
|
|
|
|---|---|
| ep_adminpads |
|
| ep_comments |
|
| ep_markdown |
|
| ep_export_HTML |
|
| ep_encrypt |
|
| ep_math |
|
| ep_stats |
|
| ep_todo |
|
快速安装
方式一:Docker(最简单,推荐)
1# 一行命令启动 2docker run -d \ 3 --name etherpad \ 4 --restart unless-stopped \ 5 -p 9001:9001 \ 6 -v etherpad_data:/opt/etherpad-lite/data \ 7 etherpad:1.9.0 8 9# 访问10# http://localhost:900111# 默认API Key: 在 logs/APIKEY.txt 中查看
方式二:Docker Compose(推荐生产环境)
1# docker-compose.yml 2version: '3' 3services: 4 etherpad: 5 image: etherpad:1.9.0 6 container_name: etherpad 7 restart: unless-stopped 8 ports: 9 - "9001:9001"10 volumes:11 - ./etherpad_data:/opt/etherpad-lite/data12 - ./settings.json:/opt/etherpad-lite/settings.json13 environment:14 - ETHERPAD_TITLE=Etherpad15 - ETHERPAD_PORT=900116 - ETHERPAD_ADMIN_PASSWORD=your_admin_password17 - ETHERPAD_PAD_WHO_COLOR=#00ff0018 depends_on:19 - postgres2021 postgres:22 image: postgres:15-alpine23 container_name: etherpad_db24 restart: unless-stopped25 environment:26 - POSTGRES_USER=etherpad27 - POSTGRES_PASSWORD=etherpad_password28 - POSTGRES_DB=etherpad29 volumes:30 - postgres_data:/var/lib/postgresql/data3132volumes:33 etherpad_data:34 postgres_data:
1# 启动2docker-compose up -d34# 查看API Key5docker exec etherpad cat /opt/etherpad-lite/APIKEY.txt
方式三:传统安装(Node.js环境)
1# 1. 安装依赖 2# Ubuntu/Debian 3sudo apt update 4sudo apt install -y git nodejs npm libicu-dev 5 6# 2. 克隆并安装 7git clone https://github.com/ether/etherpad-lite.git 8cd etherpad-lite 9git checkout 1.9.01011# 3. 安装(自动下载依赖)12cd src13npm install --no-optional1415# 4. 复制并配置设置文件16cp settings.json.template settings.json17nano settings.json1819# 5. 启动20cd ..21bin/run.sh
配置文件说明
1// settings.json 关键配置 2{ 3// 标题 4"title": "Etherpad", 5 6// 绑定地址 7"ip": "0.0.0.0", 8"port": 9001, 910// 数据库(推荐PostgreSQL)11"dbType": "postgres",12"dbSettings": {13"host": "localhost",14"port": 5432,15"database": "etherpad",16"user": "etherpad",17"password": "your_password"18 },1920// 用户认证(可选,禁用则无需登录)21"requireAuthentication": false, // 设为true启用登录22"requireAuthorization": false,2324// 自动保存间隔(毫秒)25"automaticRevisionsSaveInterval": 10000,2627// 最大修订版本数28"maxRevisionsPerAuthor": 1000,2930// 管理员设置31"users": {32"admin": {33"password": "admin_password",34"is_admin": true35 }36 }37}
使用体验
基础协作流程
1使用步骤: 2 31. 访问 Etherpad 页面 4 http://your-domain.com 5 62. 创建新文档 7 - 点击 "New Pad" 创建空白文档 8 - 或者直接访问 URL: http://your-domain.com/p/my-doc-name 9103. 分享链接11 - 浏览器地址栏的URL就是分享链接12 - 直接复制发给协作者13144. 协作者加入15 - 打开链接,无需任何登录16 - 立即开始编辑17185. 可选:设置密码保护19 - 左下角 "Timeslider" → "Pad Settings"20 - 设置读取密码或编辑密码21226. 完成后导出23 - 左上角 "Export" → 选择格式(HTML/TXT/Markdown)
界面预览
1┌──────────────────────────────────────────────────────────────┐ 2│ 📄 untitled [Timeslider] [Import] [Export▾] │ 3├──────────────────────────────────────────────────────────────┤ 4│ 🟢 Alice 🟡 Bob 🔵 Charlie [所有协作者标签] │ 5├──────────────────────────────────────────────────────────────┤ 6│ │ 7│ **会议纪要 - 2024年产品规划** │ 8│ 时间:2024-01-1514:00 │ 9│ 参与:Alice、Bob、Charlie │10│ │11│ ## 议题一:Q1产品方向 │12│ │13│ Alice: 建议重点做移动端适配...🟢 │14│ Bob: 同意,但要先解决性能问题...🔵 │15│ Charlie: 性能优化可以并行推进...🟡 │16│ │17│ ## 议题二:技术选型 │18│ │19│ - React vs Vue: 暂定React │20│ - 数据库: PostgreSQL │21│ - 缓存: Redis │22│ │23├──────────────────────────────────────────────────────────────┤24│ [B] [I] [U] [H1▾] [列表] [代码] [链接] [评论] | Autosave ✓ │25└──────────────────────────────────────────────────────────────┘
会议记录实时协作示例
1# 场景:5人远程会议,用Etherpad记录 2 31. 会议主持人在 Etherpad 创建文档 4 URL: https://pad.example/p/meeting-20240115 5 62. 会议链接通过 Zoom/飞书 聊天发送 7"各位同事,会议记录链接:https://pad.example/p/meeting-20240115" 8 93. 所有人打开链接,直接开始编辑10 - 每个人可以设置自己的颜色和昵称11 - 实时看到彼此的输入12134. 会议结束后,主持人导出为 Markdown14 - 作为会议纪要保存到 Notion/飞书15165. 设置只读密码,防止后续误修改
API自动化
1# Python脚本:自动创建会议记录模板 2import requests 3 4ETHERPAD_URL = "https://pad.example" 5API_KEY = "your_api_key" 6 7defcreate_meeting_pad(title, participants): 8# 创建新文档 9 pad_id = f"meeting-{title}"10 r = requests.post(f"{ETHERPAD_URL}/api/1/createPad", data={11"apikey": API_KEY,12"padID": pad_id13 })1415# 写入会议模板16 content = f"""**{title} 会议记录**1718参与人: {', '.join(participants)}19时间: 待填写2021## 议程221.232.243.2526## 讨论27-2829## 决议30-3132## 待办事项33- [ ]34"""35 requests.post(f"{ETHERPAD_URL}/api/1/setText", data={36"apikey": API_KEY,37"padID": pad_id,38"text": content39 })4041returnf"{ETHERPAD_URL}/p/{pad_id}"4243# 使用44url = create_meeting_pad("Q1产品规划", ["张三", "李四", "王五"])45print(f"会议记录已创建: {url}")
常见问题
Q1: Etherpad和Notion/飞书文档相比有什么优势?
Etherpad最大的优势是零门槛协作——无需注册、打开链接就用,特别适合临时性的、不需要永久保存的协作场景(如会议记录、头脑风暴、临时评审)。但如果需要结构化管理、数据库功能,Notion/飞书更合适。
Q2: 如何确保文档数据安全?
1// settings.json 中启用安全设置 2{ 3// 强制HTTPS 4"ssl": true, 5 6// 禁用危险API 7"enableAdminAssetCaching": false, 8"enableNodeSessionCleaning": true, 910// 设置会话超时11"sessionNoPassword": false,12"sessionTime": 86400,1314// 内容过滤(防止XSS)15"sanitizeXSS": true16}
Q3: 性能如何?支持多少人同时编辑?
单个Pad支持约20-30人同时编辑而不明显卡顿。超过30人建议将内容分到多个Pad中。Etherpad使用Operational Transformation算法处理并发冲突,确保内容一致性。
Q4: 如何定期备份文档?
1# 备份所有文档(导出为HTML)2curl https://pad.example/api/1/listAllPads \3 -d "apikey=YOUR_KEY" | jq -r '.data.pads[]' | whileread pad_id; do4 curl "https://pad.example/api/1/getHTML?apikey=YOUR_KEY&padID=$pad_id" \5 | jq -r '.data.html' > "${pad_id}.html"6done78# 或者使用插件 ep_export_HTML 批量导出
总结
Etherpad 是实时协作工具领域的常青树,十五年如一日地稳定运行。它用极简的理念——无需账号、打开就用——解决了临时性协作的最大痛点。不需要邀请对方注册,不需要担心账号权限,生成链接发过去,对方就能开始编辑。
-
📝 核心优势:免登录协作、实时同步、修订历史、插件扩展、API完整 -
🛠️ 适合场景:会议记录、头脑风暴、临时评审、团队文档协作、教育课堂
如果你的团队经常需要临时协作——会议纪要需要多人同时填写,文档需要快速分享给外部人员协作编辑——Etherpad是比Google Docs更轻量、更自由的选择!
项目地址:https://github.com/ether/etherpad-lite官方网站:https://etherpad.org
夜雨聆风