Open5
OpenWebUI

OpenWebUIとは
OpenWebUIは、セルフホスト型のAIプラットフォームで、特に大規模言語モデル(LLM)を活用したアプリケーションの開発や運用に適している。
特徴
- セルフホスト型
OpenWebUIはセルフホスト型のプラットフォームであり、ユーザーが自分のサーバー上でホストすることができる。これにより、データのプライバシーとセキュリティを確保できる。 - 直感的なUI
左側にサイドバー、右側にチャットエリアを配置した直感的なUIを持ち、ユーザーが簡単に操作できるよう設計されている。 - カスタマイズ可能
ユーザーは独自のモデルやツールを追加することができ、特定のニーズに合わせてプラットフォームをカスタマイズできる。 - 豊富な機能
モデル選択、デフォルトプロンプト、ファイルのアップロード、音声入力など、多岐にわたる機能を備えている。
利点
- データのプライバシー
セルフホスト型であるため、データが外部に漏れるリスクを最小限に抑えることができる。 - 柔軟なカスタマイズ
ユーザーは自分のニーズに合わせてプラットフォームをカスタマイズできるため、特定の業務フローに最適化された環境を構築できる。 - コミュニティサポート
OpenWebUIはオープンソースプロジェクトであり、活発なコミュニティによってサポートされている。これにより、最新の機能やバグ修正が迅速に提供される。

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

Azure OpenAIを使用する方法
以下を参照してやってみる。
- Azure OpenAIをデプロイする。
モデルは、gpt4oとする。 - 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
- 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>
- 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
- OpenWebUIのデプロイ
docker-compose up -d

Issue: Litellm-Proxyにアクセスできない
イメージは起動済みで、TCP/4000はリスニングしている。
AOAIのアクセスは制限していない。
NSGも許可済み
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: