Open5

OpenWebUI

takashi sasakitakashi sasaki

OpenWebUIとは

OpenWebUIは、セルフホスト型のAIプラットフォームで、特に大規模言語モデル(LLM)を活用したアプリケーションの開発や運用に適している。

特徴

  1. セルフホスト型
    OpenWebUIはセルフホスト型のプラットフォームであり、ユーザーが自分のサーバー上でホストすることができる。これにより、データのプライバシーとセキュリティを確保できる。
  2. 直感的なUI
    左側にサイドバー、右側にチャットエリアを配置した直感的なUIを持ち、ユーザーが簡単に操作できるよう設計されている。
  3. カスタマイズ可能
    ユーザーは独自のモデルやツールを追加することができ、特定のニーズに合わせてプラットフォームをカスタマイズできる。
  4. 豊富な機能
    モデル選択、デフォルトプロンプト、ファイルのアップロード、音声入力など、多岐にわたる機能を備えている。

利点

  1. データのプライバシー
    セルフホスト型であるため、データが外部に漏れるリスクを最小限に抑えることができる。
  2. 柔軟なカスタマイズ
    ユーザーは自分のニーズに合わせてプラットフォームをカスタマイズできるため、特定の業務フローに最適化された環境を構築できる。
  3. コミュニティサポート
    OpenWebUIはオープンソースプロジェクトであり、活発なコミュニティによってサポートされている。これにより、最新の機能やバグ修正が迅速に提供される。
takashi sasakitakashi sasaki

インストール

方法は複数あるが、最も一般的な方法であるDockerを使用したインストールを行う。
Azure上に仮想マシンを構築し、Dockerがインストールされている前提とする。

  1. Azure上の仮想マシン(Ubuntsu)にDockerをインストール
  2. OpenWebUIのリポジトリをクローン
git clone https://github.com/open-webui/open-webui.git
azureuser@hws-test01:~$ git clone https://github.com/open-webui/open-webui.git
Cloning into 'open-webui'...
remote: Enumerating objects: 101566, done.
remote: Counting objects: 100% (122/122), done.
remote: Compressing objects: 100% (50/50), done.
remote: Total 101566 (delta 80), reused 72 (delta 72), pack-reused 101444 (from 2)
Receiving objects: 100% (101566/101566), 198.02 MiB | 22.70 MiB/s, done.
Resolving deltas: 100% (66347/66347), done.

cd open-webui
  1. Dockerコンテナの起動
docker run -d -p 3000:8080 --network host --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

-d: コンテナをデタッチモード(バックグラウンド)で実行
-p: ホストとコンテナのポートをマッピング
-v: ホストのディレクトリをコンテナ内にマウント
--network: コンテナが接続するネットワークを指定
--restart: コンテナの再起動ポリシーを設定
6. ブラウザアクセス
http://<Global IPAddress>:8080

takashi sasakitakashi sasaki

Azure OpenAIを使用する方法

以下を参照してやってみる。
https://techstuff.leighonline.net/2024/12/13/openweb-ui-with-azure-openai/

  1. Azure OpenAIをデプロイする。
    モデルは、gpt4oとする。
  2. docker-compose.ymlを作成する。
docker-compose.yml
version: '3.8'

services:
  openwebui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: lc-open-webui
    restart: unless-stopped
    ports:
      - "8090:8080"
    env_file: stack.env
    volumes:
      - open-webui:/app/backend/data
    networks:
      - lc_network
  litellm-proxy:
    image: ghcr.io/berriai/litellm:main-latest
    container_name: lc-litellm-proxy
    restart: unless-stopped
    ports:
      - "4000:4000"
    env_file: stack.env
    depends_on:
      - litellmproxy_db
    environment:
      DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@litellmproxy_db:5432/${POSTGRES_USER}
    command: ["--config", "/app/config.yaml", "--detailed_debug", "--num_workers", "4"]
    volumes:
      - /opt/litellmproxy/litellm_config.yaml:/app/config.yaml
    networks:
      - lc_network
  litellmproxy_db:
    image: postgres:17.2-alpine3.21
    container_name: lc-postgresql
    restart: unless-stopped
    env_file: stack.env
    shm_size: 96mb
    volumes:
      - postgresdatalitellmproxy:/var/lib/postgresql/data
    networks:
      - lc_network

volumes:
  postgresdatalitellmproxy:
  open-webui:
  
networks:
  lc_network:
    driver: bridge
  1. stac.env ファイルの作成
stac.env
AZURE_API_BASE=https://xxx-aiservices.openai.azure.com
AZURE_API_KEY=<API KEY. SEE 3 BELOW>
AZURE_API_VERSION=<FROM URL. 2 SEE BELOW>
AZURE_MODEL=<SEE 1 BELOW>
POSTGRES_PASSWORD=<PASSWORD OF YOUR CHOOSING>
POSTGRES_USER=litellm
LITELLM_MASTER_KEY=<ANY RANDOM VALUE STARTING WITH sk->
LITELLM_SALT_KEY=never_change_this_key_123
WEBUI_SECRET_KEY=<PASSWORD OF YOUR CHOOSING>
  1. litellm_config.yaml ファイルの作成
sudo mkdir -p /opt/litellmproxy
sudo touch /opt/litellmproxy/litellm_config.yaml
/opt/litellmproxy/litellm_config.yaml
model_list:
  - model_name: gpt-4o
    litellm_params:
      model: os.environ/AZURE_MODEL
      api_base: os.environ/AZURE_API_BASE
      api_key: os.environ/AZURE_API_KEY
      api_version: os.environ/AZURE_API_VERSION
  1. OpenWebUIのデプロイ
docker-compose up -d
takashi sasakitakashi sasaki

Issue: Litellm-Proxyにアクセスできない


イメージは起動済みで、TCP/4000はリスニングしている。

AOAIのアクセスは制限していない。

NSGも許可済み

necrolingusnecrolingus

Good day. I am the creator of this article:

I just want to let you know that I made some major updates to this post to bring things in line with the new Azure features.

I also created these 2 posts that shows how to integrate LiteLLM with Cloudflare AI and Google Gemini, both of which are free:
https://techstuff.leighonline.net/2025/08/16/how-to-configure-cloudflare-on-litellm-and-openwebui/
https://techstuff.leighonline.net/2025/08/16/gemini-litellm/