ミニPCでOllama + Open WebUIを動かす:CPUだけで使えるモデルサイズの目安とLAN内への公開

Photo: Steve A Johnson / Pexels
先に結論です。GPU のない N100 クラスのミニPCでも、3B〜4B パラメータ程度の量子化モデルなら、チャット用途で「待てる」速度で動く とされています。7B〜8B も動きますが、返答が出てくるまでの待ち時間が長くなります。構成は Ollama と Open WebUI を同じ Docker Compose にまとめ、Open WebUI のポートだけを LAN に出す 形にすると、設定が単純で安全です。
CPUだけで使えるモデルサイズの目安
ローカル LLM で一番効くのは、CPU の速さよりも メモリの量と速さ です。モデルは丸ごとメモリに載せて動かすため、載らないサイズはそもそも動きません。
Ollama で配布されている標準のモデルは 4bit 程度に量子化されていて、ファイルサイズの目安は次のとおりです。
| パラメータ数 | モデルの大きさ(目安) | 必要なメモリの目安 | CPUだけでの体感 |
|---|---|---|---|
| 1B〜2B | 1〜2GB | 8GB で余裕 | 軽い。要約・言い換え向き |
| 3B〜4B | 2〜3GB | 8GB でも可、16GB 推奨 | 普段使いの本命 |
| 7B〜8B | 5GB 前後 | 16GB 以上 | 動くが待ち時間が長い |
| 14B 以上 | 9GB 以上 | 32GB 以上 | CPU だけでは実用的でないことが多い |
実際に必要なメモリは、モデルの大きさに加えて会話の長さ(コンテキスト)の分と、OS・他のコンテナの分が乗ります。モデルの大きさの 1.5〜2 倍の空きメモリ を見ておくと安心です。
N100 のミニPCはメモリが 1 スロット(最大 16GB 程度とされる機種が多い)のものが多いため、3B〜4B を中心に使い、必要なときだけ 7B〜8B を試す くらいが現実的な線だと私は考えています。最初に試すなら qwen3:4b、gemma3:4b、llama3.2:3b あたりが候補になります。日本語の出来はモデルによって差が大きいので、2〜3 種類を入れて比べてみてください。
また、メモリはシングルチャネルよりデュアルチャネルのほうが生成速度が出るとされています。これから買うなら、メモリを 2 枚挿せるミニPCを選ぶのも一つの手です。メモリ増設できるミニPC(デュアルチャネル対応)
Docker Composeで2つをまとめて立てる
Ollama はホストに直接インストールする方法もありますが、自宅サーバーで他のコンテナと並べて管理するなら、Compose にまとめるほうが更新や作り直しが楽です。
services:
ollama:
image: ollama/ollama
container_name: ollama
restart: unless-stopped
volumes:
- ./ollama:/root/.ollama # ダウンロードしたモデルの置き場
# ports は書かない(LANには出さない)
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
depends_on:
- ollama
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
- ./open-webui:/app/backend/data # ユーザー・会話履歴の保存先
ポイントは 2 つです。
- Ollama の 11434 番ポートは公開しない:Open WebUI からは Compose 内のサービス名
ollamaで届くので、外に出す必要がありません。Ollama の API には認証がないため、LAN に出すと誰でもモデルを動かせる状態になります OLLAMA_BASE_URLは環境変数で指定する:古い記事にあるOLLAMA_API_BASE_URLは今の版では使われていないとされています
起動してモデルを取得します。
docker compose up -d
docker exec -it ollama ollama pull qwen3:4b
docker exec -it ollama ollama list
モデルは数 GB あるので、取得には回線次第で数分〜十数分かかります。保存先の ./ollama は、システム用 SSD の空き容量に余裕がある場所にしてください。
Ollamaをホストに入れている場合
すでにホストに Ollama をインストールしている場合は、Open WebUI のコンテナから localhost では届きません(コンテナの中の localhost を指すため)。次のように書き換えます。
open-webui:
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:11434
あわせて、ホスト側の Ollama が 127.0.0.1 だけで待ち受けていると繋がらないため、sudo systemctl edit ollama で Environment="OLLAMA_HOST=0.0.0.0:11434" を足して再起動する必要があります。この場合は 11434 番が LAN にも開くので、ファイアウォール(ufw など)で他の機器からの接続を閉じておきます。
LAN内の家族が使えるようにする
ブラウザで http://<ミニPCのIPアドレス>:3000 を開くと、Open WebUI の画面が出ます。
最初に作ったアカウントが管理者になる ので、セットアップしたらすぐ自分のアカウントを作ってください。そのうえで次の設定をしておきます。
- 新規登録を止める:管理者パネルの設定で新規サインアップを無効にし、家族のアカウントは管理者から作る。環境変数
ENABLE_SIGNUP=falseでも止められるとされています - 使えるモデルを絞る:重い 7B〜8B を家族が選ぶと、その間ほかの人の返答が止まったように遅くなります。普段使い用に 1 つ既定のモデルを決めておくと混乱が減ります
- 管理画面に保存した接続先を確認する:Open WebUI は管理画面で保存した Ollama の接続先が環境変数より優先されることがあり、Compose を書き換えても繋がらないときはここを見ます
http://192.168.x.x:3000 のままだと覚えにくいので、Nginx Proxy Manager などでサブドメインを振ると家族にも案内しやすくなります。外出先から使いたい場合は、ポート開放ではなく Tailscale 経由にするのが安全です。
遅い・止まるときに見るところ
docker statsでメモリを見る:メモリが足りずにスワップしていると、極端に遅くなります。1 つ小さいモデルに替えるのが一番効きます- モデルを複数同時に読み込んでいないか:
docker exec -it ollama ollama psで、今メモリに載っているモデルを確認できます - CPU 温度:生成中は CPU がほぼ全力で回るため、ファンが回り続けたり温度で速度が落ちたりします。長時間使うなら置き場所と冷却も見直してください
まとめ
- GPU なしの N100 クラスなら、3B〜4B の量子化モデルが普段使いの中心。7B〜8B は 16GB 以上のメモリで「動くが待つ」と考える
- 必要メモリはモデルの大きさの 1.5〜2 倍を目安にし、他のコンテナの分も残す
- Ollama と Open WebUI は同じ Compose にまとめ、LAN に出すのは Open WebUI の 3000 番だけにする
- 最初のアカウントが管理者になるので、作成後すぐに新規登録を止め、家族のアカウントは管理者から作る
運営者が作った Excel テンプレートを BOOTH で配布しています。IT 資産管理台帳(無料 Lite 版あり) / IT 資格の学習管理シート


