「毎回ターミナルを開いてコマンドを叩くのは非効率で、普通のチャット画面がほしい」
そんな悩みを持つサーバー管理者やインフラエンジニアは多い。Ollamaは強力なローカルLLM実行環境だが、標準ではCLIとREST APIしか持たない。チーム全員に使ってもらうには、ブラウザからアクセスできるUI層が必要だ。
この記事では、Open WebUIをDockerでUbuntu Serverに導入し、ChatGPT風のインターフェースをチームで共有するまでの具体的な手順を解説する。ユーザー管理・モデル切替・Nginxによるセキュアな公開まで一通りカバーする。
この記事のポイント
・docker run 1コマンドでOpen WebUIをOllama連携済みで起動できる
・管理者・一般ユーザーの権限分けで社内共有環境を安全に構築できる
・Nginxリバースプロキシ+Let's EncryptでHTTPS化して本番運用可能
・コンテナが起動しない・モデルが表示されないなど頻出トラブルの対処法を網羅
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
コマンドラインだけでは限界がある — なぜOpen WebUIが必要か
Ollamaを使ってローカルLLMを動かす環境を構築すると、すぐに気づく問題がある。自分はCLIで操作できても、技術的な知識のない同僚や上司が使えない、という壁だ。実際、知人のインフラエンジニアから同様の話を聞いた。「Ollamaは動かせた。でも情報システム部以外の社員に展開しようとしたら、ターミナル操作を教えるところから始めなければならず、現実的ではなかった」という。
Open WebUIは、Ollamaに対してChatGPT風のブラウザUIを提供するオープンソースのフロントエンドだ。チャット履歴の保存、複数モデルの切替、プリセットプロンプト、マルチユーザー対応など、業務活用に必要な機能が揃っている。OllamaのREST APIと連携するため、Ollama側の設定変更はほぼ不要で導入できる。
ローカルLLMの社内展開を検討している場合、まず社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢でローカルLLMの選定背景を整理した上で、本記事の手順に進むと全体の流れが掴みやすい。
Open WebUI導入の前提条件と全体構成を確認する
手順に入る前に、必要な環境を確認する。Open WebUIはDockerコンテナで動かすのが最も確実だ。以下が最低限の要件になる:
・Ubuntu Server 22.04 LTS 以上(本記事の動作確認環境)
・Ollamaがインストール済みで、少なくとも1つのモデルが取得済みであること
・Docker Engine 24.0以上(docker composeコマンドが使えること)
・空きメモリ: Open WebUI自体は起動時に約500MB程度を消費する
Ollamaのインストールがまだの場合は、先にUbuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイドを参照してほしい。本記事はOllamaが動いている前提で進める。
全体の構成はシンプルだ。Ubuntu Server上にDockerコンテナとしてOpen WebUIが動き、Ollamaのデフォルトエンドポイント(http://localhost:11434)に接続する。チームメンバーはブラウザでOpen WebUIのポートにアクセスするだけで使い始められる。本番運用ではNginxをリバースプロキシとして前段に置き、443番ポート(HTTPS)で公開する構成が定石だ。
DockerでOpen WebUIをインストールする
1. OllamaがDockerから接続可能か確認する
DockerコンテナからホストマシンのOllamaに接続するには、Ollamaが0.0.0.0 でリッスンしている必要がある。まず確認する。# Ollamaが 0.0.0.0:11434 でリッスンしているか確認 $ ss -tlnp | grep 11434 LISTEN 0 4096 0.0.0.0:11434 0.0.0.0:* users:(("ollama",pid=1234,fd=7)) # localhostのみの場合(127.0.0.1:11434)はDocker内から接続できない # → /etc/systemd/system/ollama.service.d/override.conf に以下を追加して再起動 [Service] Environment="OLLAMA_HOST=0.0.0.0:11434"
sudo systemctl daemon-reload && sudo systemctl restart ollama を実行する。2. Open WebUIコンテナを起動する
GPUなし(CPUのみ)環境の場合は次のコマンドで起動する。# CPU環境向け Open WebUI 起動(Ollama がホストで動いている場合) $ docker run -d \ --name open-webui \ --add-host=host.docker.internal:host-gateway \ -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \ -v open-webui:/app/backend/data \ -p 3000:8080 \ --restart always \ ghcr.io/open-webui/open-webui:main # 起動確認 $ docker ps | grep open-webui a1b2c3d4e5f6 ghcr.io/open-webui/open-webui:main "bash start.sh" Up 30 seconds 0.0.0.0:3000->8080/tcp open-webui
--gpus all を追加し、イメージを ghcr.io/open-webui/open-webui:cuda に変更する。nvidia-container-toolkitが事前に必要だ。起動後、
http://サーバーIP:3000 をブラウザで開くとOpen WebUIのセットアップ画面が表示される。初回アクセスまで10~20秒ほどかかることがある。なお、Ollamaで使えるモデルの種類と選び方については、ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイントで詳しく解説している。Llama3.3・Mistral・Gemma 3・Phi-4の使い分けを事前に確認しておくと、Open WebUI上でのモデル切替設定もスムーズに進む。
Open WebUIの初期設定と管理者アカウントを作成する
1. 管理者アカウントの登録
初回アクセス時は「Get started」画面が表示される。最初に登録したアカウントが自動的に管理者(Admin)になるため、組織の担当者が先に登録することが重要だ。後から変更もできるが、最初から正しいアカウントで登録しておくほうが設定ミスが少ない。・名前・メールアドレス・パスワードを入力して「Create Admin Account」をクリック
・ログイン後、左サイドバーの歯車アイコン「Settings」から管理画面に入れる
2. Ollama接続の確認
管理画面の「Settings」>「Connections」を開く。「Ollama API」の欄にhttp://host.docker.internal:11434 が表示されていれば接続済みだ。右側のチェックボタンを押して緑のチェックマークが出ることを確認する。モデルの一覧は「Settings」>「Models」から確認できる。Ollama側で取得済みのモデル(例:
llama3.3:70b-instruct-q4_0、mistral:7b-instruct-q8_0)が自動的に表示される。表示されない場合はトラブルシュートのセクションを参照してほしい。3. システムプロンプトのデフォルト設定
管理画面の「Settings」>「Interface」から、全ユーザー共通のデフォルトシステムプロンプトを設定できる。業務用途では「あなたは社内アシスタントです。回答は必ず日本語でお願いします」のように設定しておくと、ユーザーが毎回設定しなくて済む。モデルの切替・チャット機能・プリセットプロンプトを活用する
Open WebUIの操作は直感的だが、業務活用に効く機能を押さえておく。1. モデルの切替とマルチモデル比較
チャット画面上部のドロップダウンからモデルを即座に切り替えられる。同じ質問を複数モデルで並べて比較する「マルチモデル比較」機能もある。モデル名の横の「+」ボタンを押すと並列チャットが開始され、回答を横断比較できる。軽量な要約タスクには
phi-4:14b-q4_0、高精度な技術文書の解析には llama3.3:70b-instruct-q4_0 というように使い分けるのが実際の現場での定番パターンだ。用途とモデルサイズの詳しい対応については別記事で解説している。2. プリセットプロンプト(プロンプトテンプレート)
「Prompts」メニューからチーム共有のプリセットを作成できる。「議事録要約」「英文メール下書き」「Bashスクリプト生成」などを登録しておくと、ユーザーがチャット入力欄でスラッシュコマンド(例:/gijiroku)で呼び出せる。チーム全員がプロンプトエンジニアリングを意識しなくても一定品質の出力が得られるのが大きなメリットだ。3. チャット履歴のエクスポートと検索
過去のチャット履歴はサイドバーから検索でき、JSON形式でエクスポートも可能だ。業務で生成した文書やスクリプトを後から参照する際に役立つ。データはDockerボリューム(open-webui)に保存されるため、コンテナを削除・更新してもデータは保持される。
チームで使うためのユーザー管理と権限設定
1. 新規ユーザーの招待と承認フロー
デフォルトでは「Sign up is open」設定になっており、URLを知っている全員がアカウントを作れる。社内展開では必ず「Admin approval required」に変更しておく。管理画面の「Admin Panel」>「Settings」>「General」から設定できる。2. ロール設定(Admin / User / Pending)
・Admin: モデル追加・ユーザー管理・全設定変更が可能・User: チャット・プリセット利用が可能。モデルやシステム設定は変更不可
・Pending: 管理者承認待ち。ログインできるがチャット機能は使えない
情シス担当がAdminとなり、一般社員はUserロールで運用するのが典型的な構成だ。
3. モデルのアクセス制限
特定モデルを管理者専用にしたい場合は、「Models」設定でモデルごとに「Visibility」を「Private」に設定できる。例えば、高コストな70B系モデルは管理者のみ利用可能にし、一般ユーザーには7B~14Bの軽量モデルを割り当てる運用も可能だ。GPU負荷の集中を防ぐ意味でも有効な設定だ。NginxリバースプロキシでHTTPS化して本番公開する
1. Nginxのインストール
$ sudo apt update && sudo apt install -y nginx $ nginx -v nginx version: nginx/1.24.0 (Ubuntu)
2. リバースプロキシの設定ファイルを作成する
# /etc/nginx/sites-available/open-webui を作成 $ sudo tee /etc/nginx/sites-available/open-webui << 'EOF' server { listen 80; server_name ai.example.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_buffering off; proxy_read_timeout 300s; proxy_send_timeout 300s; } } EOF $ sudo ln -s /etc/nginx/sites-available/open-webui /etc/nginx/sites-enabled/ $ sudo nginx -t && sudo systemctl reload nginx
3. Let's EncryptでHTTPS化する
$ sudo apt install -y certbot python3-certbot-nginx $ sudo certbot --nginx -d ai.example.com # メールアドレスを入力し、利用規約に同意(y)するとSSL証明書が自動取得・設定される # 自動更新タイマーの確認 $ sudo systemctl status certbot.timer * certbot.timer - Run certbot twice daily Active: active (waiting)
http://ai.example.com へのアクセスが自動的に443番ポートへリダイレクトされる。注意: 社外からのアクセスを許可しない場合は、ufw等でポートを制限することを忘れずに設定する。インターネットに直接露出させると認証画面が公開されることになるため、VPN越しのアクセスに限定することを推奨する。
よくあるトラブルと対処法
Open WebUI導入時に頻出するトラブルを押さえておく。1. 「Connection Error」が表示されてOllamaに接続できない
原因の多くはOLLAMA_BASE_URL の設定ミスか、Ollamaが 0.0.0.0 でリッスンしていないことだ。/etc/systemd/system/ollama.service.d/override.conf に Environment="OLLAMA_HOST=0.0.0.0:11434" を追加して sudo systemctl daemon-reload && sudo systemctl restart ollama を実行する。その後、リッスン状態を確認する。# Ollamaのリッスン状態確認 $ ss -tlnp | grep 11434 LISTEN 0 4096 0.0.0.0:11434 0.0.0.0:* users:(("ollama",pid=1234,fd=7)) # curlでコンテナ外からOllama APIへ疎通確認 $ curl http://localhost:11434/api/tags {"models":[{"name":"llama3.3:70b-instruct-q4_0","modified_at":"..."}]}
2. モデルが一覧に表示されない
Open WebUI管理画面の「Connections」で緑のチェックが出ていてもモデルが表示されない場合は、モデルがOllama側で正しくプルされているかを確認する。# Ollama側でのモデル一覧確認 $ ollama list NAME ID SIZE MODIFIED llama3.3:70b-instruct-q4_0 abc123def456 43 GB 2 hours ago mistral:7b-instruct-q8_0 def456abc789 7.7 GB 3 days ago # モデルが空の場合はプルして取得 $ ollama pull mistral:7b-instruct-q8_0
3. ストリーミング応答が途切れる
Nginxの設定にproxy_buffering off; が含まれているかを確認する。proxy_read_timeout のデフォルト(60秒)が短く、長い応答で切断されることもある。Nginx設定ファイルに proxy_read_timeout 300s; を追記して sudo systemctl reload nginx を実行する。4. コンテナを再起動するとデータが消える
-v open-webui:/app/backend/data オプションでボリュームマウントが正しくされているか確認する。ボリュームを指定せずに起動するとコンテナ削除時にデータが消える。# Dockerボリュームの確認 $ docker volume ls | grep open-webui local open-webui # ボリュームの詳細(マウントパスの確認) $ docker volume inspect open-webui [{"Name":"open-webui","Driver":"local","Mountpoint":"/var/lib/docker/volumes/open-webui/_data",...}]
まとめ
Open WebUIをDockerでUbuntu Serverに導入することで、OllamaのローカルLLM環境をチーム全員が使えるブラウザUIに変えられる。管理者・ユーザーの権限分けと、NginxによるHTTPS化を組み合わせることで、社内本番環境としての運用にも十分耐えられる構成になる。| 作業 | コマンド・設定 |
|---|---|
| Open WebUI起動(CPU) | docker run -d --name open-webui --add-host=host.docker.internal:host-gateway -e OLLAMA_BASE_URL=http://host.docker.internal:11434 -v open-webui:/app/backend/data -p 3000:8080 --restart always ghcr.io/open-webui/open-webui:main |
| Ollama リスニングIP変更 | override.conf に Environment="OLLAMA_HOST=0.0.0.0:11434" 追加後、sudo systemctl daemon-reload && sudo systemctl restart ollama |
| Nginx設定反映 | sudo nginx -t && sudo systemctl reload nginx |
| SSL証明書取得 | sudo certbot --nginx -d ai.example.com |
| コンテナ起動確認 | docker ps | grep open-webui |
| モデル一覧確認 | ollama list |
| ボリューム確認 | docker volume inspect open-webui |
20年以上にわたるLinux・インフラ構築の現場経験から言えるのは、ツールの導入ハードルを下げる「UI層」の設計が社内浸透の最大のボトルネックになるということだ。Open WebUIはそのギャップを埋める実用的な選択肢だ。
ローカルLLMのチーム展開を2日間で体験する
Open WebUIの構築から社内ユーザー管理まで、実機GPU環境で手を動かしながら習得したい方向けに、「ローカルAIマスターセミナー」を開催しています。
少人数(最大8名)ZOOMハンズオン形式で実施しています。
・Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイド
・社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢
・ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 前のページへ:OllamaのREST APIを業務システムに組み込む方法|curl・Python・社内ツール連携の実装手順
- この記事の属するカテゴリ:ローカルLLMへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます