ローカルAIをChatGPTのような画面で使う手順──ブラウザチャットUIの作り方
Ollama単体はターミナルでのやり取りが基本になる。ブラウザのチャット画面が欲しい場合、Open WebUIをpipなら`pip install open-webui`、Dockerなら公式イメージで追加すれば、ChatGPTに近い見た目でOllamaのモデルを操作できる。公式READMEで確認したコマンドと、詰まりやすいポート・接続設定を整理した。

目次
Ollamaをollama runで動かすところまでは多くの解説記事がカバーしている。だが「チャット ai ローカル 日本語」「ローカル ai チャット gpt」で検索している人の多くは、その先の「ターミナルではなく、ChatGPTのようなブラウザ画面で使いたい」を求めているはずだ。
その定番がOpen WebUIというオープンソースのプロジェクトで、Ollama(や他のOpenAI互換API)をバックエンドにしたブラウザチャットUIを提供している。この記事では公式README・公式ドキュメント(docs.openwebui.com)に書かれている導入コマンドを整理し、実際に自分の環境で確認できたことと、確認できなかったことを分けて書く。
3行まとめ
- Open WebUIの導入方法は公式ドキュメントによるとpip・uv・Docker・Kubernetesの4通り。Dockerが「公式にサポートされ推奨」される方式で、
:main/:cuda/:ollama/:main-slimの4種類のイメージタグがある- 公式ドキュメントには「Python 3.11と3.12をサポート、3.13は依存パッケージが対応しておらずまだサポート外」と明記されている。筆者の検証環境はPython 3.14.7で、3.13より新しいため同様に動作しない可能性が高い(未検証)
- Apple Silicon Mac(M1/M2/M3)でDockerコンテナが起動時に無応答でフリーズする既知の症状が公式トラブルシューティングに掲載されている。原因はx86イメージがRosettaエミュレーションで実行されるアーキテクチャ不一致で、
--platform linux/arm64を明示すれば回避できるとされる
Open WebUIとは何をするものか
Open WebUIは、Ollamaのようなローカルで動くLLMサーバーに対して、ChatGPTに近い見た目のブラウザ画面から会話できるようにするツールだ。公式READMEには「完全にオフラインで動作するよう設計された、自己ホスト型のAIプラットフォーム」と説明されており、Ollamaと OpenAI互換APIの両方をバックエンドとして接続できる。
インストール方法は2つある。pip(Python)経由とDocker経由だ。
方法1: pipでインストールする
公式READMEに記載されている手順はシンプルで、Pythonの環境があればターミナルで完結する。
pip install open-webui
open-webui serve
これでhttp://localhost:8080にサーバーが立つ。公式READMEには「互換性の問題を避けるため、Python 3.11を使うこと」と明記されている。
公式ドキュメントのQuick Startページを確認すると、この「Python 3.11を使うこと」にはもう少し具体的な理由が書かれていた。
Open WebUI supports Python 3.11 and 3.12. Python 3.13 is not supported yet: a handful of our dependencies still need to ship 3.13-compatible releases, and until they do, installs on 3.13 will fail or break at runtime.
(Open WebUIはPython 3.11と3.12をサポートしている。Python 3.13はまだサポートされていない。一部の依存パッケージが3.13対応版をまだリリースしておらず、それが揃うまでは3.13でのインストールは失敗するか、実行時に壊れる)
同ページはさらに「本番運用ではDockerイメージか、最新のPython 3.11を使うこと。これが最もテストされている組み合わせ」とし、「3.12も動作するが、3.12特有のまれな不具合報告があり3.11では再現していない」とも述べている。pip installが失敗した場合の代替としてpython -m open_webui serveで直接起動する方法、データ保存先を指定するDATA_DIR=./data open-webui serveも案内されていた。
pip以外に、Pythonのパッケージ・バージョン管理ツールuvを使う方法も公式ドキュメントに載っている。
curl -LsSf https://astral.sh/uv/install.sh | sh
DATA_DIR=~/.open-webui uvx --python 3.11 open-webui@latest serve
uvxはPythonのバージョンを--python 3.11で明示的に指定できるため、システムのPythonが3.13以降でも3.11環境を独立して呼び出せる。公式ドキュメントは「DATA_DIRを設定しないと、チャット履歴や設定が一時フォルダに保存され、プロセス終了時に消える可能性がある」と注意している。
方法2: Dockerでインストールする
Dockerを使う場合、Ollamaが同じマシンで動いているかどうかでコマンドが変わる。公式READMEに載っているコマンドは次の通り。
Ollamaが同じマシンで動いている場合:
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にアクセスする。ポートが8080ではなく3000になっている点に注意が必要だ。
Ollamaも一緒にコンテナで動かしたい場合(GPUなしの環境向け):
docker run -d -p 3000:8080 -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
:ollamaタグのイメージを使うと、Open WebUIとOllamaが1つのコンテナにまとまった状態で立ち上がる。GPUを使いたい場合は--gpus=allを追加した別のコマンドが公式READMEに載っている。
公式ドキュメントによると、イメージはGitHub Container Registry(ghcr.io/open-webui/open-webui)に加えてDocker Hub(openwebui/open-webui)にも公開されており、どちらも中身は同一とされている。タグは用途によって次のように分かれる。
| タグ | 用途 | 公式ドキュメントの説明 |
|---|---|---|
:main |
標準イメージ(推奨) | mainブランチの最新ビルド。:latestと同一 |
:dev |
先行(nightly)ビルド | devブランチの変更が即座に反映される、リリース前の検証用 |
:main-slim |
軽量イメージ | Whisper・埋め込みモデルは初回使用時にダウンロード |
:cuda |
NVIDIA GPU対応 | docker runに--gpus allを追加して使う |
:ollama |
Ollama同梱 | Open WebUIとOllamaを1コンテナにまとめた構成 |
:vX.Y.Z |
特定バージョン固定 | 本番環境ではこちらを推奨(:mainは自動更新され続けるため) |
導入方法をまとめた比較表は次の通り。
| 方法 | 前提条件 | アクセス先ポート | 公式の位置づけ |
|---|---|---|---|
| pip | Python 3.11/3.12(3.13は未対応) | localhost:8080 |
低リソース環境・手動セットアップ向け |
| uv | uvランタイム(Pythonバージョンをuvxで指定可) | localhost:8080 |
pipより環境分離がしやすい |
| Docker(Open WebUIのみ) | 別途Ollamaが同一マシンで起動済み | localhost:3000 |
公式サポート・多くのユーザーに推奨 |
Docker(:ollamaタグ) |
Dockerのみ(GPUなし可) | localhost:3000 |
Ollamaごと1コンテナで完結 |
| Kubernetes | クラスタ環境 | 構成による | エンタープライズ向けのスケーリング・オーケストレーション |
接続エラーが出たときの対処
公式READMEのトラブルシューティング項目には、よくあるエラーとして「WebUIのDockerコンテナがOllamaサーバー(127.0.0.1:11434)に到達できない」ケースが挙げられている。対処法として、--network=hostフラグを使う次のコマンドが案内されている。
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
この場合、アクセス先のポートは3000ではなく8080に戻る(http://localhost:8080)。ポート番号がインストール方法によって8080だったり3000だったりするのは、初見だと混乱しやすいポイントだと思う。
さらに公式のトラブルシューティングページには、この記事の検証環境(MacBook Air, Apple M2)と同じApple Silicon環境で起きる別の既知の症状が載っていた。
On macOS Apple Silicon, the container freezes during startup right after the migrations finish and this line prints: WARNING: CORS_ALLOW_ORIGIN IS SET TO '*' - NOT RECOMMENDED FOR PRODUCTION DEPLOYMENTS. There is no "Started server process", no ASCII banner, no error. It hangs indefinitely.
(macOSのApple Siliconでは、マイグレーションが終わった直後、上記のCORS警告が表示された状態でコンテナがフリーズすることがある。「Started server process」というログもASCIIバナーもエラーも出ないまま、無期限にハングする)
公式ドキュメントが挙げる原因は、Dockerのグローバル設定にDOCKER_DEFAULT_PLATFORM=linux/amd64が入っていることで、ARMホスト上でx86イメージがRosettaエミュレーションで動いてしまい、ネイティブ拡張のインポート中に止まるというものだ。対処法として、docker run --platform linux/arm64 ...のようにプラットフォームを明示するか、echo $DOCKER_DEFAULT_PLATFORMでグローバル設定を確認して解除することが案内されている。x86イメージをApple Siliconでエミュレーション実行すること自体が「ベストエフォートでサポート外」とも明記されていた。この記事の検証環境ではDocker自体が未導入のため、この症状が実際に再現するかどうかは確認していない。
環境変数に関しては、公式ドキュメントに次のようなものも載っていた。
OLLAMA_BASE_URL=https://example.com: 同一マシン以外で動くOllamaサーバーに接続する場合に指定するWEBUI_AUTH=False: ログイン画面を省略する「シングルユーザーモード」。公式は「この設定変更後にマルチアカウントモードへ戻すことはできない」と警告しているWEBUI_SECRET_KEY: コンテナを再作成するたびにログアウトされるのを防ぐための鍵。openssl rand -hex 32で生成する
ライセンスで確認しておくべき1点
公式READMEのLicenseセクションには、「現行のコードベースは、"Open WebUI"というブランディングを保持することを追加要件とする Open WebUI License の下にあるコンポーネントを含む」と明記されている。無条件のMITやApache 2.0とは条件が異なるので、社内ツールとして改変・再配布する予定がある場合は、READMEからリンクされているLICENSEファイルを事前に確認した方がいい。
自分の環境で確認できたこと・できなかったこと
この記事を書いている環境(MacBook Air, Apple M2, 8GB)には、すでにOllamaがバックグラウンドサービスとして起動していた。curl http://localhost:11434/api/versionを叩くと{"version":"0.33.0"}という応答が実際に返ってきており、Open WebUIを追加するならこのOllamaにpip経由で接続する形が一番シンプルなはずだ。
ただし、この記事の時点でOpen WebUIそのもののインストールは行っていない。理由は単純で、このマシンのディスク空きが6.3GBしかなかったからだ(df -h /で確認)。pip版でもDocker版でも、Open WebUI自体に加えてPythonの依存パッケージやコンテナイメージが数百MB〜数GB単位で必要になる可能性があり、空き容量に対してリスクが高いと判断して見送った。また、このマシンにはDockerもインストールされていない状態だった(which dockerで確認)。
Pythonのバージョンはpython3 --versionで確認すると3.14.7だった。公式ドキュメントには「3.13は依存パッケージ側が未対応でインストールが失敗するか実行時に壊れる」と明記されており、3.14はそれより新しいバージョンのため、少なくとも3.13と同じ理由(依存パッケージの3.13/3.14対応待ち)で失敗する可能性は高いと考えられる。ただし公式ドキュメントに3.14についての名指しの記載はなく、この記事では実際にpipインストールを試していないため、「3.14で失敗するかどうか」自体は推測の域を出ない。uvであればuvx --python 3.11 open-webui@latest serveのようにPythonバージョンを個別指定できるため、システムのPythonが3.14でもこちらは動く可能性があるが、これも実機では確認していない。
Ollamaの基本的な使い方や、8GBメモリでどのモデルサイズまで実用速度が出るかはローカルAIの最低スペックはどこまで低くて良いかで実測した。コーディング用途での実用性はローカルLLMでコーディングエージェントは実用になるか、そもそもの導入ステップはローカルLLMとは何かにまとめている。
セットアップを最後まで試さなかった理由
- ディスク容量が理由でインストールを見送った。 空き6.3GBという状態で数百MB〜数GB級のインストールを試すのは、他の作業環境を壊すリスクの方が大きいと判断した。実際にどれだけの容量を消費するかは、公式ドキュメントにも具体的な数値の記載がなく、確認できていない
- Python 3.14.7でpip版・uv版が実際に動くかは未検証。 公式ドキュメントで確認できたのは「3.11/3.12サポート、3.13は未対応」という事実までで、3.14固有の挙動は記載も実機確認もない
- Docker版は、そもそもこのマシンにDockerが入っていないため試せなかった。
--network=hostが必要になるケースの詳細な挙動、Apple Siliconでのアーキテクチャ不一致によるフリーズ症状(前述)についても、公式ドキュメントの記載を転記したのみで実機検証はしていない - ブラウザ画面自体の見た目・操作感は確認していない。 インストールしていないため、ChatGPTとの見た目の近さ・機能の使い勝手について、この記事では一切評価していない
- WEBUI_AUTH=FalseやWEBUI_SECRET_KEYなどの環境変数も、公式ドキュメントに書かれている内容を転記したのみで、自分の環境で実際に設定して挙動を確かめたわけではない
出典・参照資料
AIニュースの解説を動画でも
YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。
コメント
まだコメントはありません。最初のコメントを書いてみませんか?
AIについて聞きたいことはありますか?
質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。
質問箱を見る →新しい記事をメールで受け取る
AIの新しい発表を、出典付きで整理して届けます。