AI開発環境

ローカルLLMをブラウザで使う — Open WebUIとOllamaをつなぐ公式手順(Docker/pip)と、つながらない時のポート整理

Open WebUIを入れると、Ollamaで動かすローカルLLMをChatGPT風の画面で使える。Docker・pipの公式コマンド、Ollamaとの接続先URL、3000/8080/11434の関係、更新とバックアップの手順を公式ドキュメントだけで整理する。

作業台の上のゲーミングPCから光る配管が伸び、ガラス張りの小さな受付窓口を通って、奥の機械室へつながっているイメージ
AI生成のイメージ画像です

Open WebUIは「Ollamaの前に置く受付窓口」で、Docker一行で立つ。詰まるのは手順ではなく、3000・8080・11434という3つの番号の関係だ。

Ollamaの導入記事で、ターミナルからローカルLLMを走らせるところまでは書いた。ただ、毎回PowerShellで対話するのは正直しんどい。会話の履歴も残らない。

そこで名前が挙がるのがOpen WebUIだ。ブラウザで開くチャット画面を、自分のPCの中に立てるソフトである。

この記事は「使ってみた」記事ではない。Open WebUIの公式ドキュメント・GitHub README、Ollama公式FAQ、Docker公式ドキュメントの記載だけを、WindowsのゲーミングPC向けに並べ直した。コマンドは公式に載っているものしか書かない。

まず役割分担。Open WebUIは窓口、Ollamaが本体

Open WebUIを入れても、LLMが速くなるわけではない。推論をするのは相変わらずOllamaで、Open WebUIはその前に座る画面だ。

  • Ollama: モデルを読み込み、127.0.0.1:11434 で要求を待つ常駐サーバー。公式FAQに「既定で127.0.0.1のポート11434にバインドする」とある(出典: Ollama FAQ)
  • Open WebUI: ブラウザに画面を出し、裏でOllamaへ要求を投げる。会話・ユーザー・設定を自分側に保存する

現場でいえば、Ollamaが重機のオペレーター、Open WebUIが現場事務所の受付だ。受付が立派でも、掘る速さは重機(=GPUとVRAM)で決まる。だからVRAMの見方はVRAM別の早見表がそのまま効く。

Ollama以外にも、Open WebUIの公式Quick Startでは「Settings > Admin > Connections」からOllama・OpenAI・OpenAI互換APIをつなげると書かれている(出典: Open WebUI Quick Start)。この記事ではOllamaとの組み合わせに絞る。

入れ方は2ルート。Dockerかpipか

ルート1: Docker(公式の推奨)。 Quick Startで「Recommended」とされているのがこちらだ。Ollamaを同じPCで動かしている場合、READMEの既定コマンドはこうなる(出典: Open WebUI README)。

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

起動したらブラウザで http://localhost:3000 を開く(出典: Open WebUI README)。Quick Startの版では、ここに -e WEBUI_SECRET_KEY=your-secret-key が足されている(出典: Open WebUI Quick Start)。これの意味は後の更新の節で書く。

ルート2: pip。 Pythonで直接入れる方法だ。公式の手順はこの2行だけである(出典: Open WebUI Quick Start)。

pip install open-webui
open-webui serve

こちらは http://localhost:8080 で開く。注意点はPythonのバージョンで、Quick Startには「Python 3.11と3.12に対応、3.13はまだ非対応」とあり、本番運用には3.11を推奨している(出典: Open WebUI Quick Start)。

俺の整理はこうだ。Dockerを入れてあるならDocker、Dockerを入れたくないならpip(Python 3.11)。どちらでも、Ollama側は先に動いている前提だ。

ルート 公式コマンド 開くURL 前提
Docker(推奨) docker run -d -p 3000:8080 … localhost:3000 Docker環境
Docker(--network=host) docker run -d --network=host … localhost:8080 同上
pip pip install open-webui → open-webui serve localhost:8080 Python 3.11 / 3.12

出典: Open WebUI README / Quick Start / Troubleshooting

GPU入りのイメージとOllama同梱版

READMEには用途別のイメージが並んでいる(出典: Open WebUI README)。

  • :main … 標準。Ollamaは別に動かす
  • :cuda … NVIDIA GPU向け。--gpus all を付けて起動する
  • :ollama … Open WebUIとOllamaを1つのコンテナに同梱。GPU版は --gpus=all と -v ollama:/root/.ollama を付ける

同梱版のGPUコマンドは次の通りだ(出典: Open WebUI README)。

docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama

WindowsのDocker DesktopでGPUを使うには条件がある。Docker公式は「Docker DesktopのGPU対応はWSL2バックエンドのWindowsでのみ使える」としたうえで、NVIDIA GPU、最新のWindows 10/11、WSL2のGPU仮想化に対応したNVIDIAドライバ、最新のWSL2カーネルを要件に挙げる(出典: Docker Docs GPU support)。確認用のコマンドも公式にある。

docker run --rm -it --gpus=all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark

すでにWindowsネイティブ版のOllamaを入れているなら、GPUを握るのはOllama側だ。その場合は :main で画面だけ立てる形になる。土台のWSL2まわりはWSL2+CUDAの構築記事に分けてある。

つながらない原因はほぼ「番号」。仕組みの図解

Open WebUIで一番多い詰まりは「画面は開くがモデルが出ない」だ。公式Troubleshootingは、原因として「DockerコンテナがOllamaサーバーの127.0.0.1:11434に届かない」ことを挙げている(出典: Open WebUI Troubleshooting / README)。

ホスト(Windows)ブラウザlocalhost:3000-p 3000:8080Dockerコンテナ(Open WebUI)Open WebUIコンテナ内 :8080127.0.0.1:11434= コンテナ自身(Ollamaはいない)✕ 届かないボリューム open-webui/app/backend/data会話・設定host.docker.internal:11434Ollama(ホスト)127.0.0.1:11434既定の待ち受けloadGPU / VRAM推論はここで回る--network=host で起動した場合は -p が効かず、ブラウザは localhost:8080 を開く番号の出典: Open WebUI README / Troubleshooting、Ollama FAQ(既定 127.0.0.1:11434)
ブラウザが開くのは3000番、コンテナの中は8080番、Ollamaは11434番。つながらない原因の多くは、コンテナの中から見た「127.0.0.1」がホストではなくコンテナ自身を指すことだ。ホストのOllamaへは host.docker.internal:11434 で届く。会話や設定はコンテナではなくボリューム側に残る。

ポイントは、コンテナの中から見た127.0.0.1は、ホストではなくコンテナ自身だということだ。ホストで動くOllamaに届けるには、既定コマンドの --add-host=host.docker.internal:host-gateway が効いている必要がある。

公式の「Starting with Ollama」では、Dockerで動かすときの接続先は http://host.docker.internal:11434 とされ、同じマシンで直接動かす場合は既定の接続が自動で試される(出典: Open WebUI Starting with Ollama)。環境変数 OLLAMA_BASE_URL の既定値は http://localhost:11434 だ(出典: Open WebUI Environment Variables)。

公式が示す対処は2つある。

1. --network=host で起動する。 コンテナをホストのネットワークに直接つなぐ方法で、公式Troubleshootingのコマンドはこうだ(出典: Open WebUI Troubleshooting)。

docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main

この場合は -p の読み替えがなくなるので、開くURLは http://localhost:8080 に変わる(出典: Open WebUI README)。3000番を開いて「つながらない」と言っていたら、ここを疑う。

2. Ollamaの待ち受けを広げる。 公式Troubleshootingは「OLLAMA_HOST=0.0.0.0 で全ネットワークインターフェースで待ち受ける」と書き、設定後にOllamaの再起動が要るとしている(出典: Open WebUI Troubleshooting)。Windowsでの環境変数の設定は、Ollama公式FAQの「アカウントの環境変数を編集」から作成し、スタートメニューからOllamaを起動し直す手順だ(出典: Ollama FAQ)。

ただし0.0.0.0は、同じネットワーク上の他の機器からも11434番に届くようになる設定だ。KY活動でいえば、資材置き場の門を開けっぱなしにする判断にあたる。自宅LANの中でも、必要なときだけにしておくのが筋だと俺は考える。

別のPCで動くOllamaにつなぐなら、READMEの -e OLLAMA_BASE_URL=https://example.com 付きのコマンドを使う(出典: Open WebUI README)。

最初の起動でやること

1. 管理者アカウントを作る。 Quick Startには「最初の起動で管理者アカウントを作成する」とある。管理者はインスタンス全体の設定を持つ(出典: Open WebUI Quick Start)。新しく登録したユーザーの既定ロールは DEFAULT_USER_ROLE の既定値 pending(承認待ち)だ(出典: Open WebUI Environment Variables)。

2. 接続を確認する。 「Settings > Admin > Connections」でOllamaの接続先を見る。Dockerなら http://host.docker.internal:11434 だ(出典: Open WebUI Starting with Ollama)。

3. モデルを落とす。 公式の方法は2つ。管理画面の「Manage Ollama API Connections」にあるOllamaの横の「Manage」ボタンから落とすか、モデル選択欄にモデル名を打つと「Ollamaからダウンロードするか」を聞いてくる(出典: Open WebUI Starting with Ollama)。CLIの ollama pull と同じことを画面から頼んでいる形だ。

モデルの常駐時間はOllama側の設定で、公式FAQには「既定でモデルは5分間メモリに保持されてからアンロードされる」とあり、OLLAMA_KEEP_ALIVE で変えられる(出典: Ollama FAQ)。ゲームを起動する前にVRAMを空けたいときは、この5分を覚えておくと段取りが狂わない。

更新とバックアップ。データはコンテナの外にある

Open WebUIの更新は、公式の「Updating」ページの手順で行う。Docker runで入れた場合はこうだ(出典: Open WebUI Updating)。

docker rm -f open-webui
docker pull ghcr.io/open-webui/open-webui:main

このあと、最初と同じ docker run をもう一度打つ。コンテナを消しても会話が消えないのは、公式に「データ(チャット・ユーザー・設定・アップロード)はコンテナの中ではなく、Dockerボリュームかローカルのデータベースにある」と書かれている通りだ(出典: Open WebUI Updating)。図の下段の open-webui ボリュームがそれだ。pipで入れた場合は pip install -U open-webui で上げる。

同じページで強調されているのが2点ある。

  • WEBUI_SECRET_KEYを固定する。 固定しないと「コンテナを作り直すたびに新しい鍵が生成され、すべてのセッションが無効になる」。鍵は openssl rand -hex 32 で作る例が載っている(出典: Open WebUI Updating)
  • 更新前にバックアップを取る。 特にデータベース移行を含むリリースは「元に戻しにくい」とされ、ボリュームをtar.gzに固めるコマンドが示されている(出典: Open WebUI Updating)

段取り八分というやつで、更新そのものより、更新前の2点で結果が決まる。

次の一歩

Open WebUIは画面を良くするソフトで、速さはOllamaの下にあるGPUとVRAMで決まる。受付を立てる前に、ollama ps で「100% GPU」が出るモデルを選べているかを確かめたい。

  • 8GB VRAMなら8B級の4bitモデルから
  • 12〜16GBなら14B級まで視野に入る
  • それ以上は、GPU選びの段階で決める

今週のセール機をVRAM基準で仕分けた表と二刀流ランキングは、その「GB」で選べるように組んである。最強の1台より、VRAMと接続先の2点を外さない1台だ。


※本記事はOpen WebUI・Ollama・Dockerの公式ドキュメントとGitHub READMEの公開情報に基づく手順解説です。コマンドや既定値はバージョンにより変わるため、最新の手順は各公式ドキュメントをご確認ください。

出典