Open Notebook 是一个面向资料学习和研究的开源应用,可以导入 PDF、网页、音视频和 Office 文档,再围绕来源进行搜索、聊天、笔记整理和播客生成。它与普通聊天工具最大的区别,是把资料、引用、模型配置和笔记保存在自己的工作空间中。
自托管不等于完全离线:如果选择 OpenAI、Anthropic、Google 等云端模型,提交给模型的上下文仍会发送到对应服务。只有同时使用本地部署和本地模型,才能把资料处理链路尽量留在自己的设备上。
部署前准备
官方快速部署只要求 Docker Desktop,Linux 服务器也可以使用 Docker Engine 与 Compose 插件。开始前确认:
|
|
还应准备:
- 至少一个持久化目录,用来保存数据库和应用数据;
- 一个随机的
OPEN_NOTEBOOK_ENCRYPTION_KEY; - 如果要对外开放,准备域名、HTTPS 和访问控制;
- 云端模型的 API Key,或者已经可访问的 Ollama/LM Studio 服务。
下载官方 Compose 文件
新建一个独立目录,避免数据文件散落:
|
|
不要直接使用几个月前博客中复制的 Compose。Open Notebook 的镜像、端口和数据库配置仍可能调整,应以官方仓库当前文件为准。
启动前必须修改的配置
在 docker-compose.yml 或配套 .env 中修改加密密钥:
|
|
这个密钥用于保护数据库中的 API Key。部署后不要随意更换,否则旧凭据可能无法解密。
官方本地示例允许 SurrealDB 使用默认 root:root,但这只适合绑定在本机的测试环境。准备局域网或公网部署时,同时设置数据库用户和密码:
|
|
数据库调试端口应继续绑定 127.0.0.1:8000,不要为了“访问方便”改成 0.0.0.0:8000。
启动并检查容器
|
|
等待容器启动后打开:
|
|
默认端口中,8502 是 Web UI,5055 是 REST API;8000 是 SurrealDB 的本地调试端口。docker compose ps 应显示应用和数据库容器处于运行状态。
如果页面打不开,先检查日志:
|
|
配置第一个模型
进入 Web UI 后:
- 打开 Models。
- 选择 OpenAI、Anthropic、Google、Ollama、LM Studio 或其他支持的 Provider。
- 添加 API Key 或本地服务地址。
- 点击 Test 验证连接。
- 点击 Sync Models,同步并勾选实际要使用的模型。
- 在 Default Model Assignments 中自动或手动分配默认模型。
不是每个 Provider 都同时支持 LLM、Embedding、语音识别和语音合成。聊天成功但资料检索失败时,重点检查是否配置了可用的 Embedding 模型,而不是只更换聊天模型。
用一份小资料完成验收
不要一上来导入整个资料库。建议建立测试 Notebook,并只添加:
- 一份可以复制文字的短 PDF;
- 一个公开网页;
- 一段手写测试笔记。
然后依次验证:
- 来源是否完成解析;
- 搜索能否找到 PDF 中的独特句子;
- 回答能否显示来源或引用;
- 新建笔记后能否再次打开;
- 重启容器后资料是否仍然存在。
最后一项可以确认 surreal_data 和 notebook_data 等持久化目录是否真正生效。
常见故障
8502 端口被占用
修改 Compose 左侧的宿主机端口,例如:
|
|
修改后访问 http://localhost:18502,容器内部端口仍保持 8502。
数据库反复重启
先看 SurrealDB 日志。Linux 上常见原因是挂载目录没有写入权限,或者使用了旧数据库文件但镜像版本已经变化。修权限前先备份数据目录,不要直接删除持久化目录重装。
模型测试成功但问答失败
依次检查默认 LLM、Embedding 模型和来源解析状态。私有模型服务还要确认容器能访问宿主机地址;容器中的 localhost 指向容器本身,并不一定是运行 Ollama/LM Studio 的宿主机。
更新和备份
更新前备份 Compose、.env、数据库和应用数据目录,然后执行:
|
|
不要只备份 docker-compose.yml。真正需要恢复的是持久化数据、加密密钥和数据库凭据。
与 NotebookLM 怎么选
如果你希望开箱即用、不维护服务器,并且接受 Google 托管,NotebookLM 更省事。Open Notebook 更适合需要自托管、多 Provider、REST API、定制工作流或本地模型的人。代价是你要负责升级、备份、权限和模型成本。