Docmost:开源团队知识库部署教程,支持实时协作的 Notion 替代
Docmost:开源团队知识库部署教程,支持实时协作的 Notion 替代
Docmost 是一款现代化的开源团队知识库与协作文档平台,定位为 Notion、Confluence 的自托管替代方案。它提供富文本编辑器、嵌套页面结构、实时多人协作、空间(Space)权限管理、评论、页面历史版本等核心功能,界面简洁现代,上手门槛极低。对于不希望将内部知识沉淀在第三方 SaaS 上的团队,Docmost 是目前最轻量、部署最简单的选择之一。
与 Notion 相比,Docmost 最大的优势是数据完全自主可控。公司的产品文档、运营 SOP、技术 Wiki、会议记录等核心资产存储在自己的服务器上,不受平台规则变化和账号封禁风险的影响。Docmost 基于 Node.js 后端 + React 前端开发,配合 PostgreSQL 存储结构化数据,Redis 处理实时协作消息,整体架构轻巧,资源占用低。
1 核 2GB 的入门机型即可流畅运行 10-20 人的知识库系统。本文将使用 Docker Compose + Caddy 完成 Docmost 的完整部署配置。
服务器配置
Docmost 是典型的轻量级 Web 应用,空载内存占用约 200-400MB(含 PostgreSQL + Redis),即使在文档量较大的情况下,资源消耗依然可控。1 核 2GB 机型完全满足中小团队需求。
推荐使用雨云服务器 rainyun-com部署 Docmost,注册填优惠码2026off领 5 折优惠券,1 核 2GB 机型即可流畅运行,是搭建团队内部知识库性价比最高的选择。
推荐配置:
| 项目 | 规格 |
|---|---|
| CPU | 1 核 |
| 内存 | 2 GB |
| 磁盘 | 20 GB SSD(存储文档和附件) |
| 操作系统 | Ubuntu 22.04 LTS |
| 带宽 | 3 Mbps 及以上 |
环境要求
- Docker 24.0+
- Docker Compose v2.20+
- 已解析到服务器的域名
- 开放 80/443 端口
curl-fsSLhttps://get.docker.com|shsystemctlenable--nowdockerdocker--version&&dockercompose version准备工作
创建目录结构
mkdir-p/opt/docmostcd/opt/docmostmkdir-pdata/postgres data/redis data/storage生成 APP_SECRET
Docmost 需要一个用于加密 session 的密钥:
# 生成 64 位随机密钥openssl rand-hex32# 记录输出,填入 APP_SECRET部署配置
创建/opt/docmost/docker-compose.yml:
version:"3.9"services:docmost:image:docmost/docmost:latestcontainer_name:docmostrestart:unless-stoppedports:-"127.0.0.1:3000:3000"volumes:-./data/storage:/app/data/storageenvironment:APP_URL:"https://wiki.yourdomain.com"APP_SECRET:"${APP_SECRET}"DATABASE_URL:"postgresql://docmost:${POSTGRES_PASSWORD}@postgres:5432/docmost?schema=public"REDIS_URL:"redis://redis:6379"# 邮件配置(用于邀请成员、密码重置)MAIL_DRIVER:smtpSMTP_HOST:"${SMTP_HOST}"SMTP_PORT:"587"SMTP_SECURE:"false"SMTP_USERNAME:"${SMTP_USERNAME}"SMTP_PASSWORD:"${SMTP_PASSWORD}"MAIL_FROM_ADDRESS:"noreply@yourdomain.com"MAIL_FROM_NAME:"Docmost"# 存储配置(本地存储)STORAGE_DRIVER:local# 时区TZ:"Asia/Shanghai"depends_on:postgres:condition:service_healthyredis:condition:service_healthynetworks:-docmost_netpostgres:image:postgres:16-alpinecontainer_name:docmost-postgresrestart:unless-stoppedenvironment:POSTGRES_DB:docmostPOSTGRES_USER:docmostPOSTGRES_PASSWORD:"${POSTGRES_PASSWORD}"volumes:-./data/postgres:/var/lib/postgresql/datahealthcheck:test:["CMD-SHELL","pg_isready -U docmost"]interval:10stimeout:5sretries:5networks:-docmost_netredis:image:redis:7-alpinecontainer_name:docmost-redisrestart:unless-stoppedvolumes:-./data/redis:/datacommand:redis-server--appendonly yes--maxmemory 128mb--maxmemory-policy allkeys-lruhealthcheck:test:["CMD","redis-cli","ping"]interval:10stimeout:5sretries:5networks:-docmost_netnetworks:docmost_net:driver:bridge创建/opt/docmost/.env:
APP_SECRET=your_64_char_hex_secret_here POSTGRES_PASSWORD=your_strong_postgres_password # SMTP 配置(可选,用于邀请邮件) SMTP_HOST=smtp.yourmailprovider.com SMTP_USERNAME=your-email@yourdomain.com SMTP_PASSWORD=your-smtp-password启动服务:
cd/opt/docmostchmod600.envdockercompose up-ddockercompose logs-fdocmost等待日志出现Server started on port 3000后,服务启动完成。
Caddy 反向代理
Docmost 使用 WebSocket 进行实时协作同步,Caddy 需要正确处理 WebSocket 升级请求。
编辑/etc/caddy/Caddyfile:
wiki.yourdomain.com { reverse_proxy localhost:3000 { header_up Host {host} header_up X-Real-IP {remote_host} header_up X-Forwarded-For {remote_host} header_up X-Forwarded-Proto {scheme} # 保持长连接(WebSocket 实时协作) transport http { keepalive 30s keepalive_idle_conns 10 } } # 附件上传大小限制 request_body { max_size 50MB } encode gzip header { Strict-Transport-Security "max-age=31536000; includeSubDomains" X-Content-Type-Options "nosniff" X-Frame-Options "SAMEORIGIN" Referrer-Policy "strict-origin-when-cross-origin" } }重载 Caddy:
systemctl reload caddy核心功能配置
初始化管理员账号
首次访问https://wiki.yourdomain.com时,系统会引导创建第一个管理员账号,填写用户名、邮箱和密码后完成初始化。
创建工作区空间(Space)
Docmost 使用「Space」作为顶层组织单位,类似 Notion 的「工作区」或 Confluence 的「空间」:
- 点击左侧「+」创建新 Space
- 设置 Space 名称(如「产品文档」「工程 Wiki」「运营手册」)
- 选择访问权限:公开(组织内所有成员可见)或私有(仅受邀成员)
页面嵌套结构
Docmost 支持无限层级的嵌套页面,组织方式类似文件目录:
产品文档/ ├── 产品需求/ │ ├── 2026 Q1 需求清单 │ └── 用户故事地图 ├── 接口文档/ │ ├── 认证接口 │ └── 数据接口 └── 版本历史/ ├── v2.0 更新日志 └── v1.9 更新日志在页面标题下方拖拽页面可以快速调整层级结构。
邀请团队成员
进入「Settings」→「Members」→「Invite Member」,输入邮箱地址发送邀请链接。成员点击邮件中的链接后注册账号,自动加入工作区。
若未配置 SMTP,可以在邀请界面直接复制邀请链接手动发送给成员。
权限管理
Docmost 提供精细的权限控制:
- 工作区级别:管理员、普通成员
- Space 级别:全部成员可见 / 仅特定成员
- 页面级别:编辑权限、评论权限、只读权限
使用技巧
富文本编辑快捷键
Docmost 的编辑器支持 Markdown 语法快捷输入:
##+ 空格:创建 H2 标题-+ 空格:创建无序列表1.+ 空格:创建有序列表- ` ````+ 语言名:插入代码块
[]+ 空格:创建任务复选框
@提及与评论
在文档中输入@可以提及团队成员,触发通知。选中文本后点击「Comment」按钮可以对特定段落添加评论,适合文档审阅场景。
页面历史版本
每次保存自动生成版本快照,通过页面右上角「History」可以查看所有历史版本并恢复到任意时间点。
导出文档
支持将页面导出为 Markdown 或 PDF 格式,便于外部分享或离线查阅。
批量备份
# 备份数据库dockercomposeexecpostgres pg_dump-Udocmost docmost\>/backup/docmost-db-$(date+%Y%m%d).sql# 备份附件存储tarczf /backup/docmost-storage-$(date+%Y%m%d).tar.gz\/opt/docmost/data/storage/# 自动备份(写入 crontab)# 0 2 * * * cd /opt/docmost && docker compose exec -T postgres pg_dump -U docmost docmost > /backup/docmost-db-$(date +\%Y\%m\%d).sql常见问题
Q:实时协作不同步,两个用户编辑同一文档时看不到对方的修改
A:实时协作依赖 WebSocket 连接。检查 Caddy 是否正常代理了 WebSocket 请求,可以在浏览器开发者工具的「Network」标签中查看是否有ws://或wss://连接建立。
Q:图片或附件上传失败
A:检查/opt/docmost/data/storage/目录权限是否正确(Docmost 容器需要写入权限),以及 Caddy 的request_body max_size是否足够大。
Q:忘记管理员密码如何重置
# 进入容器执行密码重置命令dockercomposeexecdocmostnode-e" const {hash} = require('argon2'); hash('NewPassword123!').then(h => console.log(h)); "# 将输出的哈希值更新到数据库dockercomposeexecpostgres psql-Udocmost-ddocmost\-c"UPDATE users SET password='<hash>' WHERE email='admin@yourdomain.com';"Q:如何迁移到新服务器
迁移非常简单,只需:
- 在新服务器上部署相同的
docker-compose.yml - 将
/opt/docmost/data/整个目录传输到新服务器 - 恢复数据库:
cat docmost-db.sql | docker compose exec -T postgres psql -U docmost docmost - 修改
.env中的APP_URL和 DNS 解析
Q:如何升级 Docmost 版本
cd/opt/docmostdockercompose pull docmostdockercompose up-ddockercompose logs-fdocmostDocmost 支持自动数据库迁移,升级通常无需手动操作。
Docmost 提供了接近 Notion 的使用体验,同时保持了极低的资源消耗和简单的部署流程。对于希望将团队知识库掌握在自己手中的组织,这是目前开源生态中最值得尝试的方案之一。整个部署过程不超过 20 分钟,建议在雨云服务器 rainyun-com的 1 核 2GB 机型上运行,注册填优惠码2026off领取 5 折优惠券,以极低的月度成本运营一套功能完整的团队知识管理平台。
