Docmost 被很多人视为 "Notion 的轻量化私有部署替代品"。
相比于重量级的 Confluence 或者功能极其复杂的 Outline,Docmost 的优点主要集中在以下几个方面:
- 极致的"开箱即用"与轻量化
- 部署简单 :正如你刚才体验到的,通过一个简单的
docker-compose.yml文件和三个镜像(主程序、Postgres、Redis)就能跑起来。它不像有些开源工具(如 Appflowy)部署过程极其繁琐。- 性能出色:它采用 Node.js 开发,内存占用相对较低,在低配云服务器或 NAS 上运行非常流畅,响应速度极快。
- 优秀的实时协作体验 (Real-time Collaboration) 这是 Docmost 的杀手锏。
- 多人同时编辑:它支持类似 Google Docs 或 Notion 的多人实时在线编辑,你可以看到其他人的光标位置和实时修改内容。
- WebSocket 驱动:底层基于 Yjs 等成熟的协同算法,确保了编辑冲突极少,同步几乎无延迟。
- 极简且现代的 UI/UX
- Notion 风格的块编辑器 :支持
/指令快速插入标题、表格、列表、代码块、数学公式 ( L a T e x LaTex LaTex) 等。- 无干扰设计:界面非常干净,没有多余的边框和复杂的菜单,用户上手几乎零学习成本。
- 灵活的内容组织架构
- Spaces (空间):你可以为技术、行政、产品分别创建独立的空间。
- 无限层级:文档支持嵌套,你可以像文件管理器一样自由组织文档结构。
- 权限控制:支持细粒度的权限分配(Owner, Manager, Editor, Viewer),适合团队办公。
以windows系统举例:通过 Docker 部署 Docmost 非常方便,主要流程与 Linux 类似,但针对 Windows 环境(特别是 Docker Desktop)有一些需要注意的细节。
以下是详细的操作指南:
1. 环境准备
- 安装 Docker Desktop :确保你已经安装并启动了 Docker Desktop for Windows。
- 启用 WSL 2 :建议在 Docker Desktop 设置中勾选 "Use the WSL 2 based engine",这能提供更好的性能和兼容性。
- 打开终端 :建议使用 PowerShell 或 Windows Terminal,而不是传统的 CMD。
2. 创建部署目录
在 Windows 上找一个你方便管理的位置(例如 D 盘或用户文档目录下):
powershell
mkdir C:\docmost-app
cd C:\docmost-app
3. 创建配置文件
在该目录下创建一个名为 docker-compose.yml 的文件。你可以使用记事本或 VS Code 打开,并粘贴以下内容:
yaml
services:
docmost:
image: docmost/docmost:latest
container_name: docmost
depends_on:
- db
- redis
environment:
# 如果只是本地测试,保持 localhost;如果局域网访问,改为你的电脑 IP
APP_URL: "http://localhost:3000"
# 必须修改:随机长字符串,用于 session 加密,注意,长度一定要大于32位
APP_SECRET: "WindowsSecretKey123456"
# 数据库连接
DATABASE_URL: "postgresql://docmost:yourpassword@db:5432/docmost"
REDIS_URL: "redis://redis:6379"
ports:
- "3000:3000"
restart: unless-stopped
volumes:
- docmost_data:/app/data/storage
db:
image: postgres:16-alpine
container_name: docmost-db
environment:
POSTGRES_DB: docmost
POSTGRES_USER: docmost
POSTGRES_PASSWORD: yourpassword
restart: unless-stopped
volumes:
- db_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
container_name: docmost-redis
restart: unless-stopped
volumes:
- redis_data:/data
volumes:
docmost_data:
db_data:
redis_data:
4. 启动容器
在 PowerShell 中执行以下命令启动:
powershell
docker-compose up -d
启动完成后,你可以在 Docker Desktop 的 Dashboard 界面看到三个运行中的容器:docmost、docmost-db 和 docmost-redis。
5. 访问与初始化
- 打开浏览器 :访问
http://localhost:3000。 - 设置管理员:你将看到 Docmost 的初始化页面,按照提示创建管理员账号。
- 开始使用:进入后台后,你可以创建 Space(空间)并开始编写文档。
6. Windows 环境下的常见问题
- 端口占用 :如果 3000 端口被其他程序占用,可以在
docker-compose.yml中将"3000:3000"改为"3001:3000",然后通过localhost:3001访问。 - 持久化数据位置 :在上面的配置中,数据存储在 Docker 管理的 Named Volumes 中。如果你想在 Windows 文件夹里直接看到数据库文件,可以将
volumes改为相对路径(例如./db_data:/var/lib/postgresql/data),但注意这在 WSL 2 模式下有时会有文件权限问题。 - 关机重启 :Docker Desktop 默认随 Windows 启动,只要 Docker 启动了,设置了
restart: unless-stopped的 Docmost 也会自动运行。
7. 升级更新步骤
当 Docmost 发布新版本时,在 C:\docmost-app 目录下执行:
powershell
docker-compose pull
docker-compose up -d
8. 常见问题
Docmost 对安全性要求较高,要求 APP_SECRET 必须至少包含 32 个字符。
直接在 docker-compose.yml 中修改该变量,或者按照以下步骤生成一个强随机字符串。
解决方法
-
生成一个 32 位以上的字符串
你可以手动输入一串很长的随机字符,或者在 Windows PowerShell 中运行以下命令来生成一个:
powershell-join ((65..90) + (97..122) + (48..57) | Get-Random -Count 32 | % {[char]$_}) -
修改
docker-compose.yml找到
docmost服务下的environment部分,更新APP_SECRET。例如:yamlenvironment: APP_URL: "http://localhost:3000" # 确保下面这一串字符超过 32 位 APP_SECRET: "aB3kL9mP2qR5sT8uV1wX4yZ7iO0nM2qW5eR8tY1uI4" DATABASE_URL: "postgresql://docmost:yourpassword@db:5432/docmost" REDIS_URL: "redis://redis:6379" -
重新应用配置
修改并保存文件后,在终端执行:
powershelldocker-compose up -d
为什么会有这个限制?
Docmost 使用这个密钥来对用户会话(Session)和敏感数据进行加密。如果密钥太短,容易受到暴力破解攻击,因此系统强制要求 l e n g t h ≥ 32 length \ge 32 length≥32 以确保安全性。