自分のPCだけで動く「自分専用AI」って、実は拍子抜けするくらい簡単に作れる。
ChatGPT や Claude に質問を投げるたび、「このデータ、外に出して大丈夫だっけ」と一瞬手が止まったことはないだろうか。個人のメモや検討中のコード、ちょっとした愚痴まで、クラウドの向こう側に送るのは地味にストレスになる。
この記事では、誰でも知っている コンテナ(Docker) と ローカルAI(Ollama) だけを使って、ネットに一切データを送らない「自分専用AI」をPC上に立てるまでを、インストールの最初の一歩から実際にやってみた記録として書く。端折らずに全部書いたので、上から順にコピペしていけば同じところまで辿り着けるはず。
Windows を前提に書いている(Mac/Linux でも docker compose の部分はほぼそのまま使える)。本記事の設定は CPU 動作が前提で、GPU が無くても動く(遅いが動く)。
全体像:クラウドに送るか、手元で完結させるか
まず、クラウドAIとローカルAIで何が根本的に違うのかを図にした。
クラウドAIは質問がいったん外部サーバーに渡る。ローカルAIは質問も回答もPCの中だけで完結し、外に出ていかない。この違いを、実際に手元で確認できるところまで作ってみる。
用意するもの
| 項目 | 目安 |
|---|---|
| OS | Windows 10/11(64bit)※Mac/Linux でも大筋同じ手順 |
| メモリ | 8GB以上(16GB推奨。モデルの大きさ次第) |
| ディスク空き容量 | 10GB以上(モデル1つあたり数GB使う) |
| GPU | 不要(本記事の設定はCPU動作。GPUを使うには別途設定が要る) |
特別なスペックは要らない。普段使いのノートPCで十分試せる。
手順① Docker Desktop をインストールする
まずコンテナを動かす土台になる Docker Desktop を入れる。
- 公式サイト(https://www.docker.com/products/docker-desktop/)を開く
- 自分のOS(Windows/Mac/Linux)を選んでインストーラーをダウンロード
- インストーラーを実行し、画面の指示に従って進める
- Windowsの場合、途中で WSL2 の有効化 を求められることがある。求められたら許可して進める(初回は再起動が必要になることがある)
- インストール完了後、Docker Desktop を起動し、クジラのアイコンがタスクトレイに常駐するのを待つ
- ターミナル(PowerShellでOK)でインストールできたか確認する
docker --version
docker compose version
バージョンが表示されれば準備完了。ここまでは普通のアプリのインストールと同じで、難しいことは何もない。
セットアップの流れ
Docker Desktop が入ったら、ここから先の流れは次の5ステップだ。
「Docker Desktopをインストール」までは終わったので、次は設定ファイルを作るところから進める。
手順② 設定ファイル(docker-compose.yml)を用意する
好きな場所に作業用フォルダを作り、その中に docker-compose.yml という名前で以下をそのまま保存する。
services:
ollama:
image: ollama/ollama
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
restart: unless-stopped
volumes:
ollama_data:
ポイントは image: ollama/ollama の行だ。Ollama 本体はこの Docker イメージにまるごと入っているので、Ollama を別途インストールする必要はない。次の docker compose up を実行すると、このイメージが自動でダウンロードされる。それが Ollama 本体のインストールにあたる。
書いている設定はこれだけ——ポート(11434)とモデルの保存場所(volumes)を指定しているだけで、環境変数などの追加設定はいらない。CPUで動かすぶんには、これで全部だ。実際これは、Ollama 公式が案内している CPU 用の起動方法(docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama)を、そのまま docker-compose.yml に書き直したものだ(出典:Ollama 公式ドキュメント Docker)。GPU を使いたい場合だけ別の設定が要るが、まずはこのまま動かせばいい。
ファイルにしておくのは、毎回長い docker run ... を打たずに docker compose up -d の一言で同じ環境を再現できるからだ。volumes でモデルをコンテナの外(PC側)に保存しているので、コンテナを作り直してもダウンロード済みのモデルは消えない。
手順③ 起動してモデルを入れる
docker-compose.yml を保存したフォルダで、以下を順に実行する。
# コンテナを起動
docker compose up -d
# 起動できたか確認する
docker compose ps
# コンテナの中でモデルを取得する
docker compose exec ollama ollama pull llama3
docker compose ps を実行して ollama の STATUS が Up(running)になっていれば、ここまでは成功している。まだの場合は Docker Desktop 自体が起動しているか確認する。
初回はモデル本体(数GB)のダウンロードが走るので、回線速度によっては数分〜十数分かかる。ここが一番退屈な工程なので、コーヒーでも淹れて待つといい。
手順④ 対話する
モデルの取得が終わったら、実際に話しかけてみる。
docker compose exec ollama ollama run llama3
実行すると >>> というプロンプトが出るので、そこに質問を打ち込む。例えばこう聞いてみる。
>>> こんにちは、あなたは何ですか?
こんにちは!私はローカル環境で動作しているAIアシスタントです。インターネット経由の
サーバーではなく、あなたのPC上のDockerコンテナ内で処理しています。何かお手伝いできることはありますか?
このように文章として返事が返ってくれば成功だ(実際の言い回しはモデルによって変わる)。ここまで来れば、ネットに1バイトも送らずに会話できるチャットボットが手元にできたことになる。応答が無い・エラーが出る場合は、ollama pull が完了しているか、モデル名の綴りが合っているかを見直す。
対話で試すだけでなく、この Ollama を実際のアプリに組み込んだ話は個人ブログ(LLM(Ollama/OpenAI)で映画タグを自動生成するバッチを Spring Boot に組み込んだ話・外部サイトに移動します)に書いています。
おまけ:ブラウザから使いたい人へ(Open WebUI)
ターミナルでのやり取りに抵抗がある人は、ブラウザのチャット画面(Open WebUI)を追加できる。docker-compose.yml に以下を足すだけだ。
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
- open-webui_data:/app/backend/data
depends_on:
- ollama
restart: unless-stopped
(volumes: の下に open-webui_data: も追加する)
docker compose up -d を実行し直し、ブラウザで http://localhost:3000 を開けば、ChatGPTのような画面でローカルAIと話せる。ここは深追いせず、興味があれば触ってみる程度でいい。
動いている時、データはどう流れているか
実際に会話している最中、データがどこを通っているかを図にすると次のようになる。
入力も生成も、すべてコンテナとモデルの間で完結していて、インターネットには一切出ていかない(点線が「通信していない」ことを表している)。この境界を自分の目で確認できたのが、実際にやってみて一番安心した点だった。
クラウドAPIと何が違うのか
| 観点 | クラウドAPI(ChatGPT等) | ローカルAI(Ollama × Docker) |
|---|---|---|
| データの行き先 | 外部サーバーに送信 | PC内で完結、外に出ない |
| 費用 | 従量課金 | 電気代のみ |
| 応答速度 | 速い(大規模GPU) | PCのスペック次第 |
| 精度・最新性 | 高い | モデル次第、劣ることが多い |
| セットアップ | ほぼ不要 | インストールと設定ファイルが要る |
やってみて分かったこと
性能で比べればクラウドの方が上だと思う。ただ実際に動かしてみて分かったのは、ローカルで動かす価値は「速さ」より「自分のデータを外に出さずに試せること」だという点だった。ちょっとした下書きや検討中のコードを、深く考えずに投げられる気楽さは、精度とは別の軸の価値だと感じた。
まずは軽いモデルで一度動かしてみると、「自分のPCの中だけで完結するAI」の手触りがつかめると思う。
個人ブログ(https://mint041223techblog.netlify.app/)に日々の開発で気づいたことを詳しく書いています。(外部サイトに移動します)。