はじめに
社内向けにLiteLLM環境があるので、Open WebUIを構築して社内でチャット画面を用意しようと思い試してみました。
Open WebUIとは?
Open WebUI公式サイト は、ChatGPTのようなUIを自分のサーバー上で利用できるオープンソースのAIプラットフォームです。
元々はOllama向けのWeb UIとして有名になりましたが、現在は以下のような様々なLLMに接続できます。
- Ollama
- OpenAI
- Anthropic
- Gemini
- Azure OpenAI
- OpenRouter
- LiteLLM
- vLLM
- LM Studio
- OpenAI互換API全般
Open WebUIの特徴として、Dockerで簡単に構築できることから社内サーバーでの運用に利用できます。
見た目に関しては、ほぼChatGPTです
Docker Compose構成
環境変数部分は.envで用意する前提で以下の通りです。
compose.yaml
services:
# PostgreSQL
postgres:
image: postgres:17.10
restart: unless-stopped
environment:
POSTGRES_DB: openwebui
POSTGRES_USER: openwebui
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- ./data/postgres:/var/lib/postgresql/data
# OpenWebUI
open-webui:
image: ghcr.io/open-webui/open-webui:v0.9.6
ports:
- "3000:8080"
environment:
# 社内 LiteLLM Proxy
OPENAI_API_BASE_URL: "${LITELLM_URL}"
OPENAI_API_KEY: "${LITELLM_API_KEY}"
# DB
DATABASE_URL: "postgresql://openwebui:${POSTGRES_PASSWORD}@postgres:5432/openwebui"
# Ollama を使わないので無効化
ENABLE_OLLAMA_API: "false"
# 初回管理者登録後の追加ユーザー登録を止める
ENABLE_SIGNUP: "false"
# JWT/暗号化キー。更新のたびにログアウトされないように固定しておく
# 参考: https://docs.openwebui.com/getting-started/updating/#before-you-update
WEBUI_SECRET_KEY: "${WEBUI_SECRET_KEY}"
# 社内利用のため外部コミュニティ共有UIは無効化
ENABLE_COMMUNITY_SHARING: "false"
# runtime pip install 無効化
ENABLE_PIP_INSTALL_FRONTMATTER_REQUIREMENTS: "false"
# DB書き込み軽減
DATABASE_USER_ACTIVE_STATUS_UPDATE_INTERVAL: "300"
volumes:
- ./data/open-webui-data:/app/backend/data
restart: unless-stopped
depends_on:
- postgres
注意事項
利用するバージョンは記事執筆時点のバージョンになるため、このまま使う際は注意してください。
起動と停止の方法
コマンドで以下の通りです。
# 起動
docker compose up -d
# 停止
docker compose down
起動後はブラウザアクセス
今回はポート3000で起動したので、以下でアクセスして管理者アカウントを作って利用できました。
http://localhost:3000
この後は・・・
機能が色々あるみたいなので、少し遊んでみたいと思います。