Open WebUI導入ガイド:複数のAIモデルを一元管理するWebインターフェース

Artificial Intelligence tutorial - IT technology blog
Artificial Intelligence tutorial - IT technology blog

5分で完了 — クイックスタート

Dockerがすでに入っているなら、コマンド一つで完了です:

# OllamaとOpen WebUIをまとめてインストール
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を開き、Adminアカウントを登録すれば完了。2分もかかりません。

Ollama(ローカルでモデルを実行)と組み合わせて使いたい場合は、先にOllamaをインストールします:

# Ollamaをインストール
curl -fsSL https://ollama.com/install.sh | sh

# llama3.2モデルをダウンロード
ollama pull llama3.2

# Ollamaの動作確認
ollama list

Open WebUIはhost.docker.internal:11434でOllamaを自動検出します — 追加設定は不要です。


Open WebUIとは?なぜ必要なのか

Open WebUIを使い始めたきっかけは、ブラウザのタブを3〜4つ同時に開かなければならなかったことです。ChatGPT、Claude、ローカルのOllama、Geminiとタブが増える一方で、モデル間の回答を比較するたびにコピー&ペーストを繰り返し、毎回5〜10分が無駄になっていました。非常に面倒でした。

Open WebUIはまさにその問題を解決します。一つのインターフェースで以下すべてに接続できます:

  • Ollama — ローカルでモデルを実行(Llama、Mistral、CodeLlama…)
  • OpenAI API — GPT-4o、GPT-4 Turbo
  • Anthropic API — Claude 3.5 Sonnet、Claude Opus
  • Google Gemini API
  • OpenAI形式に対応した任意のエンドポイント

チャット以外にも、PDF・画像ファイルのアップロードと質問、再利用可能なシステムプロンプトの作成、完全なチャット履歴管理、そしてChatGPT Plusに引けを取らない洗練されたUIが揃っています。


複数のAIモデルへの接続設定

OpenAI APIへの接続

最も手軽な方法は、Docker起動時に環境変数でAPIキーを渡すことです。コンテナ起動後にSettingsを探し回る必要がありません。

docker run -d -p 3000:8080 \
  -e OPENAI_API_KEY=sk-... \
  -v open-webui:/app/backend/data \
  --name open-webui \
  ghcr.io/open-webui/open-webui:main

または後から手動で設定する場合はSettings → Connections → OpenAI APIから入力します。保存してページをリロードすると、GPT-4oとGPT-4 Turboがモデル選択のドロップダウンにすぐ表示されます。

Anthropic Claudeへの接続

Open WebUIはPipelinesを通じてAnthropicをサポートしています。Pipelinesは任意のAPIを接続できるミドルウェア層で、別途Pipelinesサーバーを起動します:

# Pipelinesサーバーを起動
docker run -d -p 9099:9099 \
  --add-host=host.docker.internal:host-gateway \
  -e ANTHROPIC_API_KEY=sk-ant-... \
  -v pipelines:/app/pipelines \
  --name pipelines \
  --restart always \
  ghcr.io/open-webui/pipelines:main

Pipelinesサーバーが起動したら、Open WebUIでSettings → Connections → Pipelinesを開き、URL http://host.docker.internal:9099を入力します。Claude 3.5 SonnetなどAnthropicのモデルがすぐに表示されます。

カスタムエンドポイントの追加

LM Studio、LocalAI、またはチーム独自のAPIを使っている場合は、Settings → Connections → Add Connectionから追加できます:

URL: http://localhost:1234/v1
API Key: lm-studio  # または空白のまま
Model: Open WebUIが自動検出

活用したい高度な機能

Model Arena — 回答を並列比較

個人的に最もよく使う機能です。New Chat → Arena Modeから2〜3つのモデルを選んでプロンプトを入力すると、すべてのモデルが同時に回答します。タスクの種類ごとにどのモデルが最適かを見極めるのに非常に便利です。

再利用可能なシステムプロンプト

Workspace → Modelsは、再利用できるAIの「ペルソナ」を作成する場所です。例えば:

名前: Code Review Bot
Base Model: claude-3-5-sonnet
System Prompt: あなたはPythonコードのレビューを専門とするシニアエンジニアです。
注目ポイント:セキュリティの問題、パフォーマンスのボトルネック、
クリーンコードの原則。各指摘には必ず理由を説明してください。

このプリセットはモデル一覧に表示され、クリックするだけですぐ使えます。毎回システムプロンプトを入力し直す必要はありません。

ファイルアップロードによるRAG

技術ドキュメント(PDF、DOCX、TXT)をアップロードして、その内容について直接質問できます。Ollamaを使う場合は、事前にエンベディングモデルをpullしておく必要があります:

ollama pull nomic-embed-text

50〜100ページ程度のPDFはローカルモデルでも問題なく動作します。300ページを超えるような大きなファイルにはGemini 1.5 Proをおすすめします — 100万トークンのコンテキストウィンドウで、技術書一冊まるごと処理できます。

Web検索の統合

Settings → Web Searchから機能を有効化してプロバイダーを選択します。セルフホストを希望する場合はSearXNGが最適です — 無料で利用制限もありません。Brave Search APIも月2,000リクエストまでの無料枠があり十分使えます。有効化すると、学習データより新しい情報が必要な質問に対して、モデルが回答前に自動でWeb検索を行います。


Docker Compose — VPSへのデプロイ方法

テスト時は単独コマンドで十分ですが、本番環境ではDocker Composeを使うと管理が格段に楽になります:

# docker-compose.yml
version: '3.8'
services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3000:8080"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
      - DEFAULT_USER_ROLE=user  # 新規登録ユーザーは管理者の承認が必要
    volumes:
      - open-webui:/app/backend/data
    restart: always
    depends_on:
      - ollama

  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    volumes:
      - ollama:/root/.ollama
    restart: always
    # NVIDIA GPUがある場合はコメントを外す:
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - capabilities: [gpu]

volumes:
  open-webui:
  ollama:
# .envファイル
OPENAI_API_KEY=sk-...
WEBUI_SECRET_KEY=your-random-secret-key-here

# 起動
docker compose up -d

# その後、モデルをダウンロード
docker exec ollama ollama pull llama3.2
docker exec ollama ollama pull codellama

日常使用の実践的なヒント

アクセス権限の制限

パブリックVPSにデプロイする場合は、DEFAULT_USER_ROLE=pendingを設定することを忘れずに。新規登録ユーザーはすぐにアクセスできず、管理者の承認待ちになります。見知らぬ人にAPIキーを使われて、月末に想定外の請求が来るという事態を防げます。

NginxリバースプロキシとHTTPS

server {
    server_name ai.yourdomain.com;
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 300s;  # ローカルモデルは応答が遅いことがある
    }
}
# SSL証明書を取得
certbot --nginx -d ai.yourdomain.com

用途に合ったモデルの選び方

しばらく使ってみて、以下のようなパターンが見えてきました:

  • コード生成・レビュー: Claude 3.5 SonnetまたはGPT-4o
  • 文章作成、ブレインストーミング: Claude Opus、またはオフラインで使いたい場合はLlama 3.2
  • 手軽な質問、精度が重要でない場合: Llama 3.2 3B(ローカル) — レイテンシゼロ、コストゼロ
  • ファイル分析・長いPDF: Gemini 1.5 Pro(最大コンテキストウィンドウ)

Open WebUIのアップデート

# 最新イメージをpull
docker pull ghcr.io/open-webui/open-webui:main

# コンテナを再起動(ボリュームをマウントしているのでデータは失われない)
docker compose down && docker compose up -d

Open WebUIはリリース頻度が高く、週平均2〜3バージョンがリリースされ、毎回バグ修正や新機能が含まれています。定期的なアップデートをおすすめします。

このセットアップを2vCPU / 4GB RAMのVPSで毎日運用しています。3BモデルはRAM約2GB、7BモデルはRAM約5GBが必要なので、この構成でちょうど収まります。70Bモデルを使いたい場合はGPUが必要です。そうでなければクラウドAPIを利用する方がはるかに便利で、追加のハードウェア投資も不要です。

Share: