43 lines
1.9 KiB
YAML
43 lines
1.9 KiB
YAML
# OpenWebUI — ChatGPT-like web UI in front of Ollama. Pre-configured to
|
|
# use the host's Ollama instance and Kagi for web search. Default port
|
|
# 3000.
|
|
#
|
|
# Persistent state (users, conversations, uploaded docs, RAG vector
|
|
# index) lives at /srv/docker/openwebui/data so backups touch one path.
|
|
#
|
|
# Sibling .env file holds KAGI_API_KEY (single shared key — opencode's
|
|
# kagimcp MCP on the Mac and this container use the same one). Same
|
|
# placeholder-then-fill-in-by-hand pattern as compose/beszel.yml and
|
|
# compose/litellm.yml.
|
|
services:
|
|
openwebui:
|
|
image: ghcr.io/open-webui/open-webui:main
|
|
container_name: openwebui
|
|
restart: unless-stopped
|
|
ports:
|
|
- "3000:8080"
|
|
extra_hosts:
|
|
# Lets the container reach Ollama on the host's :11434 without
|
|
# needing to share Docker networks.
|
|
- "host.docker.internal:host-gateway"
|
|
environment:
|
|
- OLLAMA_BASE_URL=http://host.docker.internal:11434
|
|
# vLLM (Kimi-Linear) exposed as an OpenAI-compatible backend. The
|
|
# model isn't strongly tool-trained — opencode's agentic system
|
|
# prompt confuses it. OpenWebUI's plain chat UI is the right home.
|
|
- OPENAI_API_BASE_URLS=http://host.docker.internal:8000/v1
|
|
- OPENAI_API_KEYS=dummy
|
|
# Built-in web search via Kagi. Kagi-specific env var name is
|
|
# KAGI_SEARCH_API_KEY (OpenWebUI's convention); kagimcp on the Mac
|
|
# uses KAGI_API_KEY (Kagi's official convention). We standardize on
|
|
# KAGI_API_KEY in the .env file and let compose interpolate it
|
|
# into OpenWebUI's expected name here.
|
|
- ENABLE_RAG_WEB_SEARCH=true
|
|
- RAG_WEB_SEARCH_ENGINE=kagi
|
|
- KAGI_SEARCH_API_KEY=${KAGI_API_KEY}
|
|
# Fallback (commented): the self-hosted SearXNG path. Re-enable by
|
|
# swapping RAG_WEB_SEARCH_ENGINE back to searxng and uncommenting:
|
|
# - SEARXNG_QUERY_URL=https://searxng.n0n.io/search?q=<query>&format=json
|
|
volumes:
|
|
- /srv/docker/openwebui/data:/app/backend/data
|