はじめに
独自のデータ、例えば仕事なら議事録やメールなど、プライベートなら自分のメモなどを読んでおいて、その内容に対して回答できる AI プログラムが、以前から欲しいと思っていました。
Google が提供する NotebookLM が、かなりいいように思いました。
NotebookLMとは?Google発の“AIノートブック”を徹底解説
こんな記事を見かけました。
「NotebookLM」と同等の機能をローカル環境で使える「Open Notebook」 - ZDNET Japan
これを試してみたいと思います。
Open Notebook を試してみる
Google NotebookLM とは
NotebookLM は、Google が提供するクラウドサービスで、PDF や音声、Google ドキュメント、YouTube 動画など多様なデータを読込み、AI がコンテンツの要約や分析を行うツールです。データを予めを読込んだ後、「要点をまとめて」「新旧の違いを整理して」といった指示すれば、回答を表示します。
Google「NotebookLM」とは何か?効果的な使い方を分かりやすく解説! | NTT docomo Business Watch | NTTドコモビジネス 法人のお客さま
Open Notebook とは
Open Notebook は、Google NotebookLM のような AI ノートを、自己ホストで再現できるオープンソースプロジェクトです。
LLM は、OpenAI などクラウドサービスを利用してもいいし、Ollama を使ってローカル環境だけで運用することもできます。
「Open Notebook」とは?Notebook LMを超える“自己ホスト型AIノート”の全貌 | LEXIA BLOG
LLM を利用できるようにする
まず、Open Notebook が使用する LLM を利用できるよう準備します。様々なプロバイダのモデルが使えるようになっています。
Model Provider Support | Open Notebook
LLM サービスの API キーを取得する
公式サイトの「クイックスタート」は OpenAI の ChatGPT API を使っていますが、無料枠が使える Google の Gemini API を使いたいと思います。
Ollama を導入する
Open Notebook 本体が自己ホストで運用できるので、LLM も自己ホストで運用できるといいですね。Ollama で用意した LLM を使うことができます。
Ollamaを使ってローカルでLLMを実行する方法とダウンロード方法
Windows 環境にソースコードから導入する
公式サイトの「クイックスタート」を見ると、Docker イメージが用意されていてコンテナを実行することで導入しています。また「ソースコードからインストール」する記述もあります。
自分が使っているのは Windows 機です。これに導入してみたいと思います。Docker 環境は使えません。ソースコードから導入できるでしょうか。
実行環境を用意する
導入手順を見ると、まず git clone https://github.com/lfnovo/open-notebook.git しています。
- Git
を導入しておきます。続いて、uv sync するので
- Python
- uv
を導入します。続いて、make start-all するので
- GNU Tools
ここまで用意して実行したところ、エラーになりました。Makefile を見てみると、docker compose up -d surrealdb しています。したがって
- Docker
が必要になっています。でも Windows ネイティブ環境で使えません。
個別にツールを導入したらどうでしょうか。
open-notebook/docs/deployment/development.md - lfnovo/open-notebook
でも、面倒なので諦めました。
make start-all はさらに、uv run run_api.py 、uv run --env-file .env surreal-commands-worker --import-modules commands 、npm run dev しています。
- Node.js
が必要になっています。
素直に Linux 環境で Docker を利用して導入するのがよさそうです。
Linux 環境に Docker を使って導入する
Docker を使って導入することにします。
改めて実行環境を用意する
Linux 環境を用意します。LLM はクラウドサービスを呼出することにして CPU のみの実行環境でいいでしょう。Open Notebook はフロントエンドが Next.js アプリなので、ウェブブラウザも使えるデスクトップ環境がいいでしょう。
以前に Google Compute Engine に用意した Linux デスクトップ環境を使おうと思います。
Google Compute Engine に Ubuntu デスクトップ環境を作ってリモート接続してみた #GoogleCloud - Qiita
Docker エンジンを導入しておきます。
Dockerの環境構築を解説|Ubuntuにインストール - カゴヤのサーバー研究室
docker-compose.yml(と docker.env)を用意する
「導入ガイド」に従って docker-compose.yml を用意します。
services:
open_notebook:
image: lfnovo/open_notebook:v1-latest-single
ports:
- "8502:8502"
- "5055:5055"
environment:
# API Server connection
- API_URL=http://localhost:5055
# Database connection (required)
- SURREAL_URL=ws://localhost:8000/rpc
- SURREAL_USER=root
- SURREAL_PASSWORD=root
- SURREAL_NAMESPACE=open_notebook
- SURREAL_DATABASE=production
env_file:
- ./docker.env
volumes:
- ./notebook_data:/app/data
- ./surreal_single_data:/mydata
Open Notebook を導入した環境でウェブブラウザを起動してアクセスするときの設定です。↑
Docker を実行したディレクトリに notebook_data と surreal_single_data ディレクトリが作られます。
さらに docker.env ファイルを用意します。docker-compose.yml に直接記述しても構いません。↓
# LLM API Key
GOOGLE_API_KEY=(取得した API キー)
あるいは
# LLM API Key
OLLAMA_API_BASE=http://localhost:11434
Docker コンテナを起動する
上記の設定を使って Docker コンテナを起動します。
$ docker compose up -d
ウェブブラウザで開く
ウェブブラウザを起動して Open Notebook サービスを開きます。
http://localhost:8502
管理画面でモデルを設定する
サイドメニューの「Models」を選択して「Model Management」画面を開きます。
「AI Providers」欄で「Google」または「Ollama」が有効になっていることを確認します。
画面下部で、「Language Models」と「Embedding Models」の設定します。「Add Model」ボタン押下して「Add language Model」画面を開いて、「Provider」を選択して「Model Name」を指定して「Add Model」します。
例えば「Language Models」には「gemini-2.0-flas (google)」、「Embedding Models」には「text-embedding-004 (google)」を追加します。
open-notebook/docs/features/ai-models.md - lfnovo/open-notebook
上記で設定したモデルが「Default Model Assignments」欄で指定できるようになるので、「Chat Model」「Transformation Model」「Embedding Model」は少なくとも指定しておきます。
別のクライアント機からアクセスする
Compute Engine に用意した Linux デスクトップ環境で Open Notebook を稼動して、同じ環境でウェブブラウザを起動してアクセスしました。Compute Engine の Linux 環境と別のクライアント機からアクセスして利用してみたいと思います。
docker-compose.yml を修正する
docker-compose.yml を修正します。
(前略)
environment:
# API Server connection
- API_URL=http://(Open Notebook サーバの IP アドレス):5055
(後略)
Docker コンテナを停止、削除した上で改めて起動します。
ウェブブラウザで開く
Compute Engine のインスタンスの「外部 IP アドレス」でアクセスします。
http://(Open Notebook サーバの IP アドレス):8502
ところが、ページを開けません。
ポート 8502 を開放する
Open Notebook のアプリサーバはポート 8502 でアクセスします。
したがって、Compute Engine のインスタンスに対してポート 8502 の通信を許可しないといけません。
Google Cloud の「VPC ネットワーク」で「ファイアウォールルール」を作成します。
- 名前:任意。例えば「allow-open-notebook」
- 方向:Ingress
- 一致したときのアクション:許可
- ターゲット:指定されたターゲットタグ
- ターゲットタグ:任意。例えば「oepn-notebook-server」
- 送信元フィルタ:IPv4 範囲
- 送信元 IPv4 範囲:0.0.0.0/0
- 宛先フィルタ:なし
- プロトコルとポート:指定したプロトコルとポート
- プロトコル:TCP
- ポート:8502
- プロトコル:TCP
以上で設定したファイアウォールのターゲットタグを、Compute Engine のインスタンスの「ネットワークタグ」に追加します。
クライアントのブラウザで開き直すと、Open Notebook の画面は開きますが、「Unable to Connect to API Server」が表示されます。
docker-compose.yml をさらに修正する
ウェブブラウザで開いているクライアントアプリが API サーバと通信しているのですが、サーバ機で動いているアプリサーバを経由するのでなく、クライアントアプリが API サーバに直接アクセスしているようです。
したがって API サーバの URL は、クライアントアプリが実行されているクライアントから見た IP アドレスでないといけません。Compute Engine のインスタンスの「外部 IP アドレス」を指定するよう修正します。
(前略)
environment:
# API Server connection
- API_URL=http://(サーバの外部 IP アドレス):5055
(後略)
ところが、まだ「Unable to Connect to API Server」になります。
ポート 5055 を開放する
Open Notebook の API サーバはポート 5055 でアクセスします。
したがって、Compute Engine のインスタンスに対してポート 5055 の通信を許可しないといけません。
前述のファイアウォールルールを修正します。
- プロトコルとポート:指定したプロトコルとポート
- プロトコル:TCP
- ポート:8502,5055
- プロトコル:TCP
Open Notebook の画面が開けるようになりました。
Open Notebook を使ってみる
Open Notebook が使えるようになりました。使い方は Google NotebookLM と同じですね。
ノートブックを作成する
まず、「ノートパソコン」を作成します。
ノートブックにソースを追加する
続いて、「ソース」を追加します。
ノートブックでチャットを始める
続いて、「チャット」を始めてみます。



