简介
Open Notebook 是一款开源项目,可作为 NotebookLM 的隐私优先替代品。本文介绍如何通过 Docker 部署并接入 Gemini 模型。
一、文档说明
- GitHub 地址:https://github.com/lfnovo/open-notebook
- Docker 官网:https://www.docker.com/
- 适用场景:Mac 系统下通过 Docker 部署 lfnovo/open-notebook。仅配置 Google Gemini 模型(文本交互、TTS 等核心功能)
- 前置条件:已安装 Docker Desktop、拥有可用 Google 账号(用于获取 Gemini API Key)。
二、操作流程
步骤 1:创建、进入专属部署目录
所有操作均在 /Users/open-notebook 目录下完成,先通过终端创建、进入该目录:
mkdir -p /Users/open-notebook
cd /Users/open-notebook
步骤 2:获取有效 Gemini API Key
- 访问获取地址:Google AI Studio 官网 (https://aistudio.google.com/)(需登录 Google 账号)
- 登录后,Google AI Studio 页面点击页面左下角点「Get API key」

- 然后右上角点创建 API 密钥,给密钥取个名字,可以创建项目或者导入已有项目

- 成功后可以看到 API key 了,复制

步骤 3:编写核心配置文件
需创建 2 个配置文件:docker.env(环境变量,含 Gemini 密钥)和 docker-compose.yml(容器部署配置),配置内容固定可直接复用。
3.1 编写 docker.env 文件
- 作用:存储 Gemini API Key、数据库等环境变量,确保容器启动时加载有效配置。
touch docker.env && open -e docker.env
- 粘贴以下配置内容,替换
GEMINI_API_KEY为你的有效密钥,保存时需选择'格式→制作纯文本':
# 核心配置:Gemini API Key(必填,替换为你的有效密钥)
GEMINI_API_KEY=你上一步复制的的 Gemini 有效 API Key
# 数据库配置(固定不变,直接保留)
SURREAL_ADDRESS=localhost
SURREAL_PORT=8000
SURREAL_USER=root
SURREAL_PASS=root
SURREAL_NAMESPACE=open_notebook
SURREAL_DATABASE=production
3.2 编写 docker-compose.yml 文件
作用:定义容器镜像、端口映射、数据持久化等部署规则,无需修改。
touch docker-compose.yml && open -e docker-compose.yml
粘贴以下配置内容,直接保存(纯文本格式):
version: '3.8'
services:
open_notebook:
# 官方单容器镜像(稳定兼容 Gemini,无需修改)
image: lfnovo/open_notebook:v1-latest-single
# 端口映射:8502(Web 界面)、5055(API 服务,必需)
ports:
- "8502:8502"
- "5055:5055"
# 加载当前目录的 docker.env 环境变量
env_file:
- ./docker.env
# 数据持久化:本地文件夹保存笔记和数据库,删除容器不丢失数据
volumes:
- ./notebook_data:/app/data
- ./surreal_single_data:/mydata
# 容器异常自动重启(保障服务稳定性)
restart: always
步骤 4:启动容器并验证状态
4.1 启动容器
首次运行会自动拉取官方镜像,视网络情况需 1-5 分钟,耐心等待:
# 彻底启动(先停止删除旧容器,再后台启动新容器,确保配置生效)
docker compose down && docker compose up -d
启动成功标识:终端输出 Container open-notebook-open_notebook-1 Started 或末尾显示「Done」。
4.2 验证容器运行状态
# 查看容器状态,STATUS 列显示「running」即为正常
docker compose ps
若 STATUS 显示「exited」,说明启动失败,执行以下命令查看日志排查:
# 实时查看容器日志,按 Ctrl+C 退出
docker compose logs -f open_notebook
4.3 验证 Gemini 密钥加载成功(可选)
确认容器已读取到有效密钥:
docker compose exec open_notebook env | grep GEMINI_API_KEY
正常输出:GEMINI_API_KEY=你的有效密钥(说明加载成功)。
步骤 5:模型配置与使用
5.1 访问 Web 界面
- 打开 Mac 浏览器(Safari/Chrome),输入地址:
http://localhost:8502
- 打开成功

若 8502 端口被占用,修改 docker-compose.yml 中 8502:8502 为 8503:8502,重启容器后访问 http://localhost:8503。
5.2 配置 Gemini 模型
优先选择兼容模型(避免新模型可用性问题),操作如下:
- 进入 Web 界面后,点击侧边栏「⚙️Settings」→「Models」,可以看到可以配置四个类型的模型,先添加了对应模型,然后设置默认模型(可选)
- 配置聊天模型:在「Provider」下拉框中选择 Google(兼容性最好,无配额限制),「Model Name」输入你想要的模型 → 点击保存


- 配置默认模型

- Language 语言:
gemini-2.0-flash、gemini-2.5-pro-preview-06-05 - TTS 文本转语音:
gemini-2.5-flash-preview-tts、gemini-2.5-pro-preview-tts - Embedding 嵌入:
text-embedding-004
5.3 调用 Gemini 模型测试
- 回到主界面,点击「New Notebook」新建笔记

- 创建成功后打开,面板分为三个部分
- Sources 板块:用于添加知识来源(如文档、链接、文件等);
- Notes 板块:用于记录基于来源的见解、观察;
- Chat with Notebook 板块:集成 AI 对话功能(当前采用 Gemini Pro 模型),可通过提问理解笔记本内的内容(需先添加来源 / 笔记提供上下文)。
在输入框输入测试指令(如'解释 Docker 的核心优势''Vite 与 Webpack 核心区别解析')

- 点击输入框右侧「发送」按钮(箭头图标),等待 1-3 秒,即可看到 Gemini 模型输出结果,点击保存按钮即可保存到「Notes」下

- 数据持久化验证:创建笔记后关闭浏览器/容器,重新启动后,笔记仍保存在
/Users/open-notebook/notebook_data文件夹中,不会丢失。
如果你需要更复杂的配置,比如远程服务器部署,可以去它的 GitHub 页面查看详细文档。
三、常见问题排查
| 报错现象 | 核心原因 | 解决方案 |
|---|---|---|
| API key not valid / API_KEY_INVALID | Gemini API Key 无效/过期/复制错误 | 重新获取有效密钥,替换 docker.env 中的值,重启容器 |
| Model is not a LanguageModel: None | 模型配置未加载/密钥未生效/模型名称错误 | 1. 确认密钥有效;2. 选择 gemini-pro 而非新模型;3. 执行 docker compose down && up -d 彻底重启 |
| 500 Internal Server Error | 后端处理请求异常(密钥/网络/模型问题) | 查看容器日志定位原因;确保网络能访问 Google;验证密钥加载成功 |
| 无法访问 http://localhost:8502 | 端口被占用/容器未正常启动 | 1. 执行 lsof -i:8502 查看端口占用;2. 修改 yml 端口映射(如 8503:8502);3. 重启容器 |
| gemini-2.0-flash 报错 | 新模型可用性有限/账号无权限 | 切换为 gemini-pro 或 gemini-1.5-flash,优先保障基础功能正常 |
四、关键注意事项
- Gemini API Key 为个人凭证,请勿泄露给他人,避免被盗用额度
- Gemini 免费额度有限,可在 Google AI Studio 查看额度使用情况,额度耗尽需升级付费方案
- Gemini 不支持语音转文字(STT),仅支持文字输入和文本转语音(TTS)
- 笔记数据保存在
/Users/open-notebook/notebook_data,请勿手动删除该文件夹 - 修改任何配置后,必须执行
docker compose down && docker compose up -d彻底重启容器,否则配置不生效


