背景:チームが5つのAIモデルを使い、誰も管理できなかった話
深夜2時17分。チームリードからSlackが飛んできた:「サーバーのOllamaが応答しないんだけど?」SSHで接続してログを確認すると、問題はOllamaの障害ではなく、新しいdevが各サービスが何を動かしているか把握できておらず、誤ってコンテナをrestartしていたことだった。
当時、チームは並行して複数のシステムを稼働させていた:devチーム用にOllamaでllama3.2とcodellama、コンテンツ生成にOpenAI GPT-4o、バッチ要約にGemini Flash。それぞれAPIエンドポイントが異なり、認証方法も違い、ドキュメントはあちこちに散らばっていた。新しく入ったメンバーがシステムを把握するのに丸一週間かかっていた。
その夜以降、Open WebUIをデプロイすることに決めた——全てのAIモデルを一箇所から管理できる統合Webインターフェースだ。それ以来、チームの混乱はなくなり、同じ理由で深夜2時にpingが来ることもなくなった。
Open WebUIは何をサポートしているか?
Open WebUI(旧Ollama WebUI)は以下に接続できる:
- Ollama — ローカルでモデルを実行:llama3.2、mistral、codellama、qwen…
- OpenAI互換API — GPT-4o、GPT-4o-mini、またはOpenAIフォーマットを使う任意のサービス
- Google Gemini — APIを通じてGemini 1.5 Pro/Flash/2.0
- 自己ホスト型のあらゆるLLMエンドポイント — vLLM、LM Studio、Groq、OpenRouter…
他の代替手段ではなくこれを選んだ理由:user managementが標準で組み込まれている点だ——個人ごとにアカウントを作成し、誰がどのモデルを使えるかをコントロールできる。10人以上のチームには、これは必須機能だ。
Open WebUIのインストール
システム要件
インストール前に以下を確認しよう:
- DockerとDocker Compose(バージョン >= 20.x)
- RAM:最低4GB、Ollamaを同じホストで動かす場合は8GB以上推奨
- ディスク:データとモデル用に10GB以上
- ポート3000(またはカスタムポート)を開放する必要がある
# Kiểm tra Docker đã cài chưa
docker --version
docker compose version
# Nếu chưa có Docker:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
方法1:Docker Compose — Open WebUIのみ(Ollamaが既にある場合)
OllamaがすでにホストでRunning状態の本番環境で使っている方法だ。docker-compose.ymlファイルを作成する:
version: '3.8'
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data
environment:
# Ollama đang chạy trên host (bare metal):
- OLLAMA_BASE_URL=http://host.docker.internal:11434
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
open-webui:
方法2:Docker Compose — Ollamaも含む
Ollamaがなく、すべてを一度にデプロイしたい場合はこのファイルを使う:
version: '3.8'
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
volumes:
- ollama:/root/.ollama
# Bỏ comment phần dưới nếu có GPU NVIDIA:
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: all
# capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
depends_on:
- ollama
volumes:
ollama:
open-webui:
# Khởi động
docker compose up -d
# Xem logs
docker compose logs -f open-webui
方法3:pip install(Dockerなし)
Dockerを使わない場合はpipで直接インストールできる:
# Cần Python 3.11+
python3 --version
pip install open-webui
# Khởi động
open-webui serve --port 3000
この方法では約2GBの依存関係をダウンロードする。アップデートの容易さと環境の分離のため、Dockerを推奨する。
詳細設定
初回アクセス — 管理者アカウントの作成
デプロイが完了したら、ブラウザでhttp://your-server-ip:3000を開く。初回アクセス時は登録フォームが表示される——最初に作成したアカウントが自動的に管理者(Admin)になる。
管理者を作成した後、最初にやること:Admin Panel → Settings → Generalに移動し、外部から勝手に登録されないようEnable New Sign Upをオフにする。またはDefault User Role: Pendingに設定して、新しいアカウントを一つ一つ承認できるようにする。
Ollamaとの接続
Open WebUIは通常、OLLAMA_BASE_URL変数からOllamaを自動検出する。確実に設定するには、Admin Panel → Settings → Connectionsに移動する:
- Ollama API URL:
http://host.docker.internal:11434 - Verify Connectionをクリック——緑色になればOK
Open WebUI上からOllamaのモデルをダウンロードするには、Admin Panel → Settings → Modelsに移動し、Pull a model from Ollama.comタブからモデル名を入力する:
# Các model phổ biến có thể pull từ giao diện:
llama3.2:3b # Nhẹ, phù hợp chat thông thường
codellama:7b # Chuyên về code
mistral:7b # Cân bằng tốt giữa chất lượng và tốc độ
qwen2.5-coder:7b # Code, hỗ trợ tốt tiếng Việt
OpenAI APIの追加
Admin Panel → Settings → Connections → OpenAI APIに移動する:
API Base URL: https://api.openai.com/v1
API Key: sk-proj-xxxx...
保存後、Modelsタブに移動するとGPT-4o、GPT-4o-miniがOllamaのモデルと並んで表示される。ユーザーはドロップダウンから普通にモデルを選ぶだけ——そのモデルがローカルで動いているかクラウドかを意識する必要はない。
Google Gemini APIの追加
GeminiはOpenAI互換エンドポイント経由で接続するため少し特殊だ。同じConnections → OpenAI APIで、2つ目の接続を追加する:
API Base URL: https://generativelanguage.googleapis.com/v1beta/openai/
API Key: AIzaSy...
設定が完了すると、gemini-1.5-pro、gemini-1.5-flash、gemini-2.0-flashがモデルリストに即座に表示される。
ユーザーごとのモデル権限設定
チーム管理で最もよく使う機能——そして新しいメンバーから最もよく聞かれる機能だ。Workspace → Modelsに移動する:
- 「モデルエイリアス」を作成——
gpt-4oを「GPT Production」などにリネームして識別しやすくする - 公開設定:Public(全ユーザー)またはPrivate(管理者と指定されたユーザーのみ)
- モデルの「バージョン」ごとにデフォルトシステムプロンプトを設定——例えばDev向けGPTはコードに関するシステムプロンプト、コンテンツ向けGPTは別のコンテキストで構成する
動作確認とモニタリング
サービスの正常動作確認
# Check container status
docker ps | grep open-webui
# Health check endpoint
curl http://localhost:3000/health
# Response: {"status":true}
# Xem realtime logs
docker logs -f open-webui --tail 50
よくあるエラーの対処法
「Could not connect to Ollama」エラー:9割のケースはコンテナとホスト間のネットワーク問題だ。最も素早い確認方法:
# Từ bên trong container Open WebUI, curl tới Ollama
docker exec open-webui curl http://host.docker.internal:11434/api/tags
# Nếu fail, lấy IP của docker bridge và thử trực tiếp
ip addr show docker0
# Thường là 172.17.0.1 — thử dùng IP này thay vì host.docker.internal
OpenAI API使用時の403エラー:APIキーが間違っているかクォータが切れている。Connectionsに移動してVerifyをクリックすれば、推測せずに詳細なエラーメッセージを確認できる。
起動直後にコンテナが繰り返し再起動する場合:
# Xem logs ngay sau khi start
docker logs open-webui 2>&1 | head -50
# Thường do thiếu biến môi trường hoặc volume mount bị lỗi permission
データのバックアップ
会話、設定、ユーザーアカウントなど全てのデータはDockerボリュームに保存されている。毎晩cronで実行しているバックアップスクリプト:
# Backup volume ra file tar.gz
docker run --rm \
-v open-webui:/data \
-v $(pwd):/backup \
alpine tar czf /backup/open-webui-backup-$(date +%Y%m%d).tar.gz /data
# Restore khi cần
docker run --rm \
-v open-webui:/data \
-v $(pwd):/backup \
alpine tar xzf /backup/open-webui-backup-20240201.tar.gz -C /
自動アップデート
Open WebUIは新機能追加やバグ修正のため比較的頻繁にアップデートされる。Docker Composeでは、データはnamed volumeに保存されているためアップデートしてもデータは失われない:
# Pull image mới và restart — data giữ nguyên
docker compose pull && docker compose up -d
# Hoặc thêm vào crontab để tự động check update hàng tuần:
# 0 3 * * 1 cd /path/to/open-webui && docker compose pull && docker compose up -d
デプロイから2週間後、新メンバーのオンボーディング時間は約1週間から30分ほどに短縮された。エンドポイントのドキュメントも、認証方法の説明も不要——URLを共有してアカウントを作れば完了だ。当時チームに必要だったのは、より優れたモデルではなく、一元管理できる場所だった。Open WebUIはまさにその問題を解決してくれた。

