在数字化浪潮 🌊 与远程办公常态化双重驱动下,私有化知识库已成为团队提效的 “数字大脑🧠“。面对市面上五花八门的开源/商业工具,不少读者都在后台留言:“到底哪款才能兼顾安全性和易用性?”、“个人开发者和小团队该怎么选❓”。
💡 本次我们深度实测了五款标杆产品 🎯 - zyplayer-doc、MrDoc、showdoc、outline、docmost。后续还会带来每款产品的详细使用文章 📖。
参赛选手
选手介绍
❶ zyplayer-doc
- 定位:企业级开源文档协同工具
- 亮点:有AI加持的文档管理工具。可以创建开发使用的API文档,对开发型的团队比较友好。
- 场景:适合需要统一管理多平台技术文档的研发团队
❷ MrDoc(觅思文档)
- 定位:个人/小团队知识管理系统
- 亮点:支持书籍式目录结构,内置思维导图编辑器
- 场景:教育机构、自媒体创作者的知识沉淀利器
❸ showdoc
- 定位:极简团队文档工具
- 亮点:10分钟快速部署,手机端适配优秀
- 场景:敏捷开发团队的需求文档协作
❹ outline
- 定位:企业级知识库(原GitBook团队打造)
- 亮点:所见即所得编辑器,支持Slack/Google集成
- 场景:远程团队知识共享与协同创作
❺ docmost
- 定位:类Notion开源替代
- 亮点:与很多Google模块无缝结合,提供Chrome剪藏插件
- 场景:个人知识库与团队文档协同
收费模式
工具 | 开源协议 | 自托管 | 商业版 | 授权费用 | 授权模式 |
---|---|---|---|---|---|
zyplayer-doc | Apache-2.0 | √ | √ | 1账号/免费、5账号/500、不限账号/5K、旗舰版/10K | 永久 |
MrDoc | AGPL-3.0 | √ | √ | 998/域名 | 永久 |
showdoc | Apache-2.0 | √ | √ | 免费版/0、高级版/99、专业版/299、旗舰版/999 | 按年 |
outline | Apache-2.0 | √ | √ | 商业版/4美元、企业版/5美元 | 按月 |
docmost | AGPL-3.0 | √ | √ | 联系客服定价 | 未知 |
界面概览
zyplayer-doc
- 类 飞书 的布局,左侧树形目录+右侧三栏式设计 - 支持暗黑模式切换,界面元素偏技术风格
MrDoc
- 类似 语雀 的布局,文集里面包含着文档,进入文集可以显示全部文档的目录结构。
showdoc
- 默认自适应流式布局 ,也支持卡片布局。
outline
- 类Notion块编辑器,支持拖拽排版
- 企业级权限管理界面,卖点是多人协作
docmost
- 界面相对比较简洁,显示内容不多。
- 文章编辑类似 飞书 ,使用 “/” 符号唤出模块。
- 如果新增人员需要部署邮件服务。
功能PK
核心功能矩阵
功能维度 | zyplayer | MrDoc | showdoc | outline | docmost |
---|---|---|---|---|---|
Markdown支持 | √ | √ | √ | √ | √ |
API文档生成 | √ | ❌️ | ❌️ | ❌️ | ❌️ |
版本历史 | √ | √ | √ | √ | √ |
AI知识库 | √ | ❌️ | ❌️ | ❌️ | ❌️ |
全文搜索 | √ | √ | √ | √ | √ |
数据库支持 | MySQL | SQLite | MySQL | PostgreSQL | PostgreSQL |
移动端APP | ❌️ | √ | √ | √ | √ |
结束语
这里我先不做推荐🤔,我将用以下5篇文章📑
- 「showdoc 安装与使用指南 」
- 「MrDoc 安装与使用指南 」
- 「zyplayer 安装与使用指南 」
- 「docmost 安装与使用指南 」
- 「outline 安装与使用指南 」
对这几款软件进行详细的介绍 📝,其中包括界面操作 🖥️、部署方式 🌐、主要功能 🔧,如果你对私有化部署知识库感兴趣 🤓,三连支持一下 👍👍👍,关注我接下来的更新吧!🔔
附录:Docker部署方式
❶ zyplayer-doc
# 拉取镜像docker pull zyplayer/zyplayer-doc:latest
# 指定端口和数据库后启动docker run -i -t -d -p 8083:8083 --name zyplayer \-e DATASOURCE_HOST_PORT=mysql数据库IP:端口 \-e DATASOURCE_DATABASE=mysql数据库名称 \-e DATASOURCE_USER=mysql数据库用户名 \-e DATASOURCE_PASSWORD=mysql数据库用密码 \-v /文件存储路径:/zyplayer/files \zyplayer/zyplayer-doc:latest
启动后访问:http://127.0.0.1:8083 ,默认账号:zyplayer 密码:123456
❷ MrDoc(觅思文档)
mkdir /optcd /optgit clone https://gitee.com/zmister/MrDoc
docker run -d --name mrdoc \-p 10086:10086 \-v /opt/MrDoc:/app/MrDoc \jonnyan404/mrdoc:latest
- 默认用户:admin
- 默认密码:请执行
docker logs mrdoc 2>&1|grep pwd
获取
❸ showdoc
[[ShowDoc]]
❹ outline
如果已经安装了
docker run -d --name outline \-e SECRET_KEY=your-secret-key \-e UTILS_SECRET=your-utils-secret \-e URL=http://localhost:3000 \-e DATABASE_URL=postgres://user:pass@host:port/db \-e REDIS_URL=redis://redis:6379 \-p 3000:3000 outlinewiki/outline
使用这个env示例文件创建docker.env,请确保在“必需”部分中包含所有值,并在“可选”部分中至少包含一个身份验证提供程序,以使应用程序成功启动。
# 创建`docker-compose.yml`文件,填入如下内容services: outline: image: docker.getoutline.com/outlinewiki/outline:latest env_file: ./docker.env expose: - "3000" volumes: - storage-data:/var/lib/outline/data depends_on: - postgres - redis
redis: image: redis env_file: ./docker.env expose: - "6379" volumes: - ./redis.conf:/redis.conf command: ["redis-server", "/redis.conf"] healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 30s retries: 3
postgres: image: postgres env_file: ./docker.env expose: - "5432" volumes: - database-data:/var/lib/postgresql/data healthcheck: test: ["CMD", "pg_isready", "-d", "outline", "-U", "user"] interval: 30s timeout: 20s retries: 3 environment: POSTGRES_USER: 'user' POSTGRES_PASSWORD: 'pass' POSTGRES_DB: 'outline'
https-portal: image: steveltn/https-portal env_file: ./docker.env ports: - '80:80' - '443:443' links: - outline restart: always volumes: - /Users/renmeng/docker_mapping/outline/https-portal:/var/lib/https-portal healthcheck: test: ["CMD", "service", "nginx", "status"] interval: 30s timeout: 20s retries: 3 environment: DOMAINS: 'docs.mycompany.com -> http://outline:3000' STAGE: 'production' WEBSOCKET: 'true' CLIENT_MAX_BODY_SIZE: '0'
# 使用以下命令创建数据库:docker compose run --rm outline yarn db:create --env=production-ssl-disabled
❺ docmost
创建docker-compose.yml
文件,填入如下内容
version: "3"
services: docmost: image: docmost/docmost:latest depends_on: - db - redis environment: APP_URL: "http://localhost:3000" APP_SECRET: "fN12dy9Qbiq3F7mpg4F9dLRkgXq6K9pOmpYwYWtczZ6Egs4VunP/5U8lhrD2vTUl" DATABASE_URL: "postgresql://docmost:STRONG_DB_PASSWORD@db:5432/docmost?schema=public" REDIS_URL: "redis://redis:6379" ports: - "3000:3000" restart: unless-stopped volumes: - /Users/renmeng/docker_mapping/docmost/data:/app/data/storage
db: image: postgres:16-alpine environment: POSTGRES_DB: docmost POSTGRES_USER: docmost POSTGRES_PASSWORD: STRONG_DB_PASSWORD restart: unless-stopped volumes: - /Users/renmeng/docker_mapping/postgre_data/docmost/data:/var/lib/postgresql/data
redis: image: redis:7.2-alpine restart: unless-stopped volumes: - /Users/renmeng/docker_mapping/redis_data/data:/data
应APP_URL
替换为您选择的域名。例如https://example.com
或https://docmost.example.com
。
该APP_SECRET
值必须替换为较长的随机密钥(至少 32 个字符)。
您可以使用 生成密钥openssl rand -hex 32
。如果保留默认值,应用将无法启动。
用安全密码替换STRONG_DB_PASSWORD
环境变量。POSTGRES_PASSWORD
使用您选择的 Postgres 密码更新DATABASE_URL
默认值。STRONG_DB_PASSWORD
要配置电子邮件或文件存储驱动程序,请参阅配置文档。
默认的文件存储驱动程序是local storage
。除非您想使用 S3 存储,否则无需执行任何操作。