Skip to main content
ai2025年11月16日3分で読めます

Open WebUI: ローカルおよびクラウドで独自のAIインターフェースを実行する

Open WebUIをローカル開発およびクラウドデプロイメント用にセットアップ — セルフホスト型AIインターフェースと商用代替品を比較。

open-webuiself-hostedai
Open WebUI: ローカルおよびクラウドで独自のAIインターフェースを実行する

私が知っている開発者は皆、常に少なくとも3つのAIチャットタブを開いています。あることにはChatGPT、別のことにはClaude、マルチモーダルなタスクにはGeminiのウィンドウかもしれません。それぞれが独自の会話履歴、独自のコンテキスト、独自の課金を持っています。それらを切り替えることは、その摩擦がなくなるまで気づかない摩擦です。

Open WebUIはその摩擦を解消します。これは、複数のAIバックエンド — Ollamaを介したローカルモデル、OpenAIやAnthropicのようなクラウドAPI、または任意のOpenAI互換エンドポイント — に接続するセルフホスト型インターフェースです。1つのインターフェース、1つの会話履歴、すべてを管理する1つの場所。そして、自分でホストするため、明示的にクラウドAPIに送信しない限り、データがインフラストラクチャを離れることはありません。

Open WebUIとは

Open WebUI(旧Ollama WebUI)は、大規模言語モデルと対話するためのオープンソースのセルフホスト型ウェブインターフェースです。当初はLLMをローカルで実行するツールであるOllamaのフロントエンドとして始まりましたが、以下の機能をサポートするフル機能のAIプラットフォームへと進化しました。

  • 複数のモデルバックエンド(Ollama、OpenAI、Anthropic、任意のOpenAI互換API)
  • 検索と整理機能を備えた会話履歴
  • ドキュメントアップロードによるRAG(Retrieval-Augmented Generation)
  • カスタムモデルプリセットとシステムプロンプト
  • ユーザー管理とチームアクセス制御
  • 関数呼び出しとツール利用
  • 画像生成統合
  • 音声入力と出力

これはおもちゃのプロジェクトではありません。インターフェースは洗練されており、機能セットは包括的で、コミュニティは活発です。執筆時点で、GitHubリポジトリは75,000以上のスターを獲得し、約2週間ごとにリリースされています。

真の価値提案は「制御」です。どこで実行するか、どのモデルに接続するか、誰がアクセスできるか、データがどこに行くかを自分で決定します。機密性の高いコード、独自のビジネスデータ、または規制対象業界で作業する開発者にとって、これはどんな機能比較よりも重要です。

Dockerによるローカルセットアップ

Open WebUIをローカルで実行する最も速い方法はDockerです。1つのコマンドで、依存関係のインストールも、設定ファイルの記述も不要です。

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

これだけです。ブラウザでhttp://localhost:3000を開き、管理者アカウントを作成すれば、動作するAIインターフェースが手に入ります。-v open-webui:/app/backend/dataフラグは永続ストレージ用のDockerボリュームを作成します。これにより、会話、設定、アップロードされたドキュメントはコンテナの再起動後も保持されます。

Ollamaへの接続

ローカルモデルを使用するには、Ollamaがマシン上で実行されている必要があります。ollama.comからインストールし、モデルをプルします。

ollama pull llama3.1
ollama pull codellama
ollama pull mistral

Open WebUIとOllamaが同じマシンで実行されている場合、Open WebUIはOllamaをhttp://host.docker.internal:11434(macOSおよびWindowsの場合)またはhttp://localhost:11434--network hostを使用したLinuxの場合)で自動的に検出します。

Linuxの場合、Ollamaに到達するにはDockerコマンドにネットワークホストモードが必要です。

docker run -d \
  -p 3000:8080 \
  --network host \
  -v open-webui:/app/backend/data \
  --name open-webui \
  ghcr.io/open-webui/open-webui:main

接続されると、OllamaでプルしたすべてのモデルがOpen WebUIのモデルドロップダウンに表示されます。会話中にそれらを切り替えたり、出力を比較したり、モデルごとのシステムプロンプトを設定したりできます。

クラウドAPIへの接続

Open WebUIはクラウドモデルプロバイダーにも接続します。管理者設定の「Connections」でAPIキーを追加します。

  • OpenAI: APIキーを追加すると、すべてのGPTモデルが利用可能になります。
  • Anthropic: APIキーを追加すると、Claudeモデルが利用可能になります(バージョンに応じてOpenAI互換プロキシまたは直接統合を介して)。
  • カスタムエンドポイント: OpenAI互換APIを公開している任意のサービス — Azure OpenAI、Together AI、Groq、ローカルのvLLMインスタンスなど。

ここでOpen WebUIは日常のドライバーとして真に役立ちます。ローカルのLlamaモデル(無料、プライベート、実験に適している)とクラウドモデル(より高性能、使用量ベースの課金)の両方に1つのインターフェースでアクセスできます。コンテキスト切り替えのコストはゼロになり、ドロップダウンでモデルを変更するだけです。

フルスタックのためのDocker Compose

より堅牢なローカルセットアップには、Docker Composeを使用してOpen WebUIとOllamaを一緒に実行します。

# docker-compose.yml
version: "3.8"

services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama-data:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3000:8080"
    volumes:
      - open-webui-data:/app/backend/data
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
    depends_on:
      - ollama

volumes:
  ollama-data:
  open-webui-data:
docker compose up -d

GPU予約セクションはオプションです。CPUのみで実行する場合は削除してください。Apple Silicon Macでは、OllamaはDocker GPUパススルーなしでMetal GPUフレームワークを自動的に使用します(最高のパフォーマンスを得るには、OllamaをDockerではなくmacOS上でネイティブに実行してください)。

クラウドデプロイメントオプション

Open WebUIをローカルで実行するのは個人利用には最適です。しかし、チームでアクセスしたい場合や、どのデバイスからでも使用したい場合は、クラウドデプロイメントが必要です。

VPSデプロイメント(Hetzner、DigitalOceanなど)

最もシンプルなクラウドパスは、DockerがインストールされたVPSです。HetznerやDigitalOceanの月額20ドルのサーバーでOpen WebUIインターフェース自体は十分です。サーバーでモデルも実行したい場合は、GPUインスタンス(GPUに応じて月額50〜150ドル)が必要になります。

# On your VPS
apt update && apt install docker.io docker-compose-plugin -y

# Create docker-compose.yml (same as above, minus GPU reservation)
docker compose up -d

# Set up a reverse proxy with SSL
apt install nginx certbot python3-certbot-nginx -y

Nginxリバースプロキシ設定:

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_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

次に、Let's Encryptから無料のSSLを取得するためにcertbot --nginx -d ai.yourdomain.comを実行します。これで、どこからでもアクセスできるプライベートでSSL保護されたAIインターフェースが手に入ります。

Railway / Fly.ioデプロイメント

サーバー管理なしでマネージドデプロイメントを行う場合:

# Using Railway
railway login
railway init
railway up

またはFly.ioを使用する場合:

fly launch --image ghcr.io/open-webui/open-webui:main
fly secrets set OLLAMA_BASE_URL=http://your-ollama-server:11434
fly deploy

これらのプラットフォームは、SSL、スケーリング、再起動を自動的に処理します。トレードオフとして、VPSと比較してインフラストラクチャの制御が少なく、大規模な場合はコストが高くなります。

アーキテクチャの決定:モデルをどこで実行するか

クラウドデプロイメントにおける主要なアーキテクチャの決定は、Open WebUIと同じサーバーでモデルを実行するか、外部APIプロバイダーに接続するかです。

同じサーバー: レイテンシが低く、トークンあたりのAPIコストがなく、完全なデータプライバシーが確保されます。しかし、GPU搭載サーバー(まともなGPUインスタンスで月額100〜300ドル)が必要であり、モデルの選択はハードウェアによって制限されます。

外部APIのみ: GPUは不要で、すべてのプロバイダーから最高のモデルにアクセスでき、トークンごとに支払います。Open WebUIサーバーは軽量でホスティングコストも安価です。しかし、すべての会話はサードパーティAPIを介して行われ、コストは使用量に応じて増加します。

ハイブリッド: 定期的なタスクやプライバシーに敏感な作業にはローカルモデルを実行し、より高性能なモデルが必要なタスクにはクラウドAPIに接続します。私が使用しているのはこの方法です。プライバシーが重要な簡単な質問やコード補完にはLlama 3.1を、複雑な推論や生成タスクにはClaudeまたはGPT-4oを使用しています。

商用インターフェースとの比較

ChatGPT Plus(月額20ドル)

ChatGPTはGPT-4o、DALL-E統合、ブラウジング、コードインタープリター、カスタムGPTを提供します。インターフェースは洗練されており、モバイルアプリも優れています。

Open WebUIが優れている点:モデルの柔軟性(OpenAIにロックされない)、データプライバシー(会話はサーバーに保存される)、カスタマイズ(カスタムシステムプロンプト、RAGパイプライン、関数呼び出し)。ローカルモデルには使用量制限がありません。

ChatGPTが優れている点:ネイティブツール統合、コードインタープリターサンドボックス、モバイル体験、セットアップ不要。プラグインとGPTストアのエコシステムはOpen WebUIには同等のものがありません。

結論: すぐに使える体験を求める非技術系ユーザーにとって、ChatGPT Plusは非常に強力です。Open WebUIは、制御と柔軟性を求める開発者にとってより優れています。

Claude Pro(月額20ドル)

Claude Proは、拡張されたコンテキストウィンドウ、アーティファクト作成、永続的なコンテキストを持つプロジェクトを備えたClaude SonnetおよびOpusモデルを提供します。Claudeの指示追従能力と長文ドキュメント処理能力はクラス最高です。

Open WebUIが優れている点:APIを介してClaudeモデルを使用できるだけでなく、他のすべてのモデルにもアクセスできます。会話履歴は自分で所有します。RAGとカスタムツールを追加できます。

Claudeが優れている点:永続的なコンテキストを持つプロジェクト機能、コードとドキュメントのためのアーティファクトシステム、ネイティブな思考/推論表示。これらはClaudeのインターフェースに深く統合されており、Open WebUIには同等のものがありません。

結論: Claudeが主要なモデルである場合、ネイティブインターフェースを離れるのは難しいでしょう。複数のプロバイダーを使用する場合、Open WebUIは統合インターフェースとして優れています。

チーム向け

Open WebUIの最も魅力的な点はチームでの利用です。商用AIインターフェースもチームプランを提供していますが、通常はシートごとに課金され(ユーザーあたり月額25〜30ドル)、会話はプロバイダーのインフラストラクチャに保存され、エクスペリエンスをカスタマイズすることはできません。

チームアクセスを備えたOpen WebUIは、ユーザー数に関係なく1つのホスティングコスト、インフラストラクチャに保存される会話、チームまたはプロジェクトごとのカスタムモデルプリセット、共有RAGドキュメントコレクション、および利用可能なモデルと機能に対する管理者制御を提供します。

10人の開発者チームの場合、商用AIチャットのサブスクリプションは月額200〜300ドルかかります。クラウドAPIアクセスを備えたセルフホスト型Open WebUIインスタンスは、ホスティングに月額20〜40ドルと従量課金制のAPI使用料がかかります。チームが成長するにつれて、経済性はさらに有利になります。

RAGパイプラインのセットアップ

Retrieval-Augmented Generationは、Open WebUIの最も強力な機能の1つです。ドキュメントをアップロードすると、AIは質問に答える際にそれらを参照できます。これにより、Open WebUIは汎用チャットから、特定のドキュメント、コードベース、またはビジネスデータを理解するナレッジベースへと変わります。

ドキュメントのアップロード

Open WebUIは、インターフェースを介した直接ドキュメントアップロードをサポートしています。PDF、マークダウンファイル、またはテキストファイルをチャットにドラッグすると、自動的にチャンク化、埋め込み、検索用にインデックス化されます。AIは質問に答える際にアップロードされたドキュメントを参照します。

大量のドキュメントを取り込むには、管理パネルのドキュメント管理セクションを使用します。ドキュメントをコレクションに整理し、どのコレクションをどのチャットで利用可能にするかを制御できます。

埋め込み設定

Open WebUIは、埋め込みモデルを使用してドキュメントをベクトルに変換し、セマンティック検索を行います。デフォルトではローカルの埋め込みモデルを使用しますが、より高品質なOpenAIの埋め込みAPIを使用するように設定できます。

管理者設定の「Documents」で、以下を設定します。

  • Embedding model: text-embedding-3-small (OpenAI) またはOllamaを介したローカルモデル
  • Chunk size: 1000トークン(デフォルト、ドキュメントに基づいて調整)
  • Chunk overlap: 100トークン(チャンク間のコンテキスト維持に役立つ)
  • Top K: 5(クエリごとに取得する関連チャンクの数)

実用的なRAGのユースケース

コードベースのドキュメント: プロジェクトのREADME、アーキテクチャドキュメント、APIドキュメントをアップロードします。AIに自分のプロジェクトについて質問し、モデルの一般的なトレーニングデータではなく、実際のドキュメントに基づいた回答を得ます。

会議の議事録と決定事項: 会議の議事録と決定ログをアップロードします。「先週の会議でデータベース移行のタイムラインについて何が決定されましたか?」という質問に対して、幻覚ではなく正確な回答が得られます。

研究論文と技術仕様: 作業中の論文や仕様のPDFをアップロードします。AIは、トレーニングデータにないコンテンツについて要約、比較、質問に答えることができます。

RAGの回答の品質は、ドキュメントのチャンク化と埋め込みの品質に大きく依存します。回答が関連情報を逃しているように見える場合は、チャンクサイズを小さくする(各チャンクがより焦点を絞るように)か、Top Kを増やす(より多くのチャンクが取得されるように)ことを試してください。

カスタムモデル設定

Open WebUIでは、カスタムシステムプロンプト、温度設定、モデル選択を含むモデルプリセット(保存された設定)を作成できます。これは、基盤となるモデルを変更せずに、目的別のAIアシスタントを作成するのに役立ちます。

コードレビュープリセットの作成

Open WebUIの設定で、新しいモデルプリセットを作成します。

  • Name: Code Reviewer
  • Base model: Claude Sonnet(またはお好みのモデル)
  • System prompt: "You are a senior code reviewer. Analyze the provided code for bugs, security issues, performance problems, and style violations. Be specific about line numbers and provide corrected code snippets. Prioritize issues by severity."
  • Temperature: 0.3(より一貫性のある、焦点を絞った出力のために低く設定)

ライティングアシスタントプリセットの作成

  • Name: Technical Writer
  • Base model: GPT-4o
  • System prompt: "You are a technical writing assistant. Help draft clear, concise technical documentation. Use active voice. Avoid jargon unless the audience is technical. Structure content with headers, lists, and code examples where appropriate."
  • Temperature: 0.7(より創造的な出力のために高く設定)

これらのプリセットは、通常のモデルとともにモデルドロップダウンに表示されます。コードレビュー時には「Code Reviewer」プリセットに切り替え、ドキュメント作成時には「Technical Writer」に切り替えます。システムプロンプトは自動的に適用されます。

プライバシー上の利点

セルフホスト型AIのプライバシーに関する議論は理論的なものではありません。さまざまなユースケースにおいて具体的な意味を持ちます。

機密性の高いコード

独自のコードをChatGPTやClaudeに貼り付けると、サードパーティのサーバーに送信することになります。プロバイダーにはデータ処理ポリシーがあります(OpenAIとAnthropicはどちらもAPIデータでトレーニングしないと述べています)が、データは依然としてインフラストラクチャを離れます。厳格なIPポリシーを持つ企業、規制対象業界、または政府契約を持つ企業にとって、これは受け入れられない場合があります。

Ollamaに接続されたOpen WebUIを使用すると、コードがマシンを離れることはありません。モデルはローカルで実行され、推論はローカルで行われ、会話履歴はローカルに保存されます。クラウドデプロイメントの場合、データはサーバーに留まります。

クライアントデータ

コンサルタントや代理店がクライアントデータを取り扱う場合、商用AIインターフェースを使用すると、すべてのクライアントに対してデータ処理に関する質問に答える必要があります。セルフホスト型Open WebUIは明確な答えを提供します。データはあなたのインフラストラクチャ内に、あなたの管理下で、あなたのセキュリティポリシーに従って保持されます。

コンプライアンス

HIPAA、SOC 2、GDPR — これらのフレームワークは、データがどこで処理され、保存されるかに関心を持っています。準拠したインフラストラクチャ上のセルフホスト型AIインターフェースは、サードパーティのSaaSツールよりもコンプライアンススコープに含めるのが本質的に簡単です。

これは、ローカルが常に優れているという意味ではありません。クラウドAI APIには独自のコンプライアンス認証があり、多くのユースケースでは、OpenAIやAnthropicのエンタープライズ製品のコンプライアンス体制の方が、自分で構築できるものよりも強力です。重要なのは、必要なときにセルフホスティングという選択肢があるということです。

パフォーマンスに関する考慮事項

ローカルモデルのパフォーマンス

モデルをローカルで実行するということは、ハードウェアが体験を決定することを意味します。Llama 3.1 8Bの概算ベンチマークは以下の通りです。

  • Apple M1 Pro (16GB RAM): 約15トークン/秒 — 短い対話には使用可能
  • Apple M2 Ultra (64GB RAM): 約40トークン/秒 — 長時間の会話にも快適
  • NVIDIA RTX 4090: 約80トークン/秒 — ほぼ瞬時の応答
  • CPUのみ (GPUなし): 約2-5トークン/秒 — 非常に遅く、推奨されません

Llama 3.1 70Bのような大規模モデルの場合、少なくとも48GBのRAM(MacではM2 Max以上、またはサーバーグレードのGPU)が必要です。品質の向上は著しいですが、ハードウェア要件は高くなります。

レイテンシの比較

クラウドAPI接続の場合、Open WebUIが追加するオーバーヘッドは最小限です。通常、APIのネイティブレイテンシに10〜30msが加わる程度です。ボトルネックは常にモデルの推論であり、インターフェースではありません。

ローカルモデルの場合、レイテンシはモデルサイズとハードウェアの関数です。最初のトークンのレイテンシ(モデルが生成を開始するまでの時間)は、高速ハードウェア上の小型モデルで100msから、限られたハードウェア上の大型モデルで数秒まで幅があります。ストリーミング表示により、ユーザーからはほとんど隠されます。

セルフホストと商用利用の使い分け

セルフホストすべき場合:

  • 機密性の高いデータや独自のデータを扱う場合
  • プライバシーまたはコスト上の理由でローカルモデルを使用したい場合
  • シートごとのライセンスなしでチームAIインターフェースが必要な場合
  • RAGパイプラインをカスタマイズしたり、カスタムツールを追加したい場合
  • 複数のモデルプロバイダーを使用し、統合されたインターフェースが必要な場合

商用インターフェースを使用すべき場合:

  • 特定のモデルとの最も緊密な統合が必要な場合(Claude Projects、ChatGPTプラグイン)
  • モバイルアプリとデバイス間の同期を重視する場合
  • インフラストラクチャの管理をしたくない場合
  • ユースケースに機密データが含まれない場合
  • 最も洗練された最新機能の体験が必要な場合

ほとんどの開発者にとって、答えは「両方」です。私はClaude Projectsの恩恵を受ける深い作業にはClaudeのネイティブインターフェースを、コードインタープリターが必要なタスクにはChatGPTを、そしてそれ以外のすべて — 特にローカルモデルを使用したい場合、プロバイダー間で出力を比較したい場合、またはクラウドAPIに送信したくないドキュメントを扱う場合 — にはOpen WebUIを使用しています。

Open WebUIは商用インターフェースを置き換えるものではありません。それは、AIインフラストラクチャの制御が重要である場合に、その制御を選択できるという選択肢を持つことです。セットアップには30分かかります。プライバシーと柔軟性のメリットは永続的です。

DU

Danil Ulmashev

Full Stack Developer

一緒にお仕事しませんか?