refactor: split openai/ into ollama/, openwebui/, searxng/

Move services out of the monolithic openai/docker-compose.yml:
- ollama/ — ollama GPU + CPU inference servers
- openwebui/ — open-webui chat UI (uses env var for ANTHROPIC_API_KEY)
- searxng/ — SearXNG container + searxng-mcp MCP server (port 3102)

openai/ now contains only: litellm, langfuse, qdrant, faster-whisper,
silero-tts, pipecat.

searxng-mcp exposes a single searxng_search tool via MCP HTTP on :3102.
Registered in ~/.claude.json as the "searxng" MCP server.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Alvis
2026-06-11 05:05:45 +00:00
parent 85033136d8
commit 7ef3ffa00e
7 changed files with 194 additions and 71 deletions

View File

@@ -1,65 +1,4 @@
services:
ollama:
image: ollama/ollama
container_name: ollama
ports:
- "11436:11434"
volumes:
- /mnt/ssd/ai/ollama:/root/.ollama
- /mnt/ssd/ai/open-webui:/app/backend/data
restart: always
environment:
# Allow qwen3:8b + qwen2.5:1.5b to coexist in VRAM (~6.7-7.7 GB on 8 GB GPU)
- OLLAMA_MAX_LOADED_MODELS=2
# One GPU inference at a time — prevents compute contention between models
- OLLAMA_NUM_PARALLEL=1
# Force all layers to GPU — fail instead of falling back to CPU
- OLLAMA_NUM_GPU=999
runtime: nvidia
mem_limit: 4g
ollama-cpu:
image: ollama/ollama
container_name: ollama-cpu
ports:
- "11435:11434"
volumes:
- /mnt/ssd/ai/ollama-cpu:/root/.ollama
restart: always
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3125:8080"
volumes:
- /mnt/ssd/ai/open-webui:/app/backend/data
extra_hosts:
- "host.docker.internal:host-gateway"
restart: always
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
environment:
- ANTHROPIC_API_KEY=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
- OPENAI_API_BASE_URL=http://host.docker.internal:4000/v1
- OPENAI_API_KEY=dummy
# STT — Faster-Whisper large-v3-turbo
- AUDIO_STT_ENGINE=openai
- AUDIO_STT_OPENAI_API_BASE_URL=http://host.docker.internal:8880/v1
- AUDIO_STT_OPENAI_API_KEY=dummy
- AUDIO_STT_MODEL=deepdml/faster-whisper-large-v3-turbo-ct2
# TTS — Silero v4
- AUDIO_TTS_ENGINE=openai
- AUDIO_TTS_OPENAI_API_BASE_URL=http://host.docker.internal:8881/v1
- AUDIO_TTS_OPENAI_API_KEY=dummy
- AUDIO_TTS_MODEL=silero
- AUDIO_TTS_VOICE=onyx
litellm-db:
image: postgres:16-alpine
container_name: litellm-db
@@ -119,16 +58,6 @@ services:
- langfuse-db
restart: always
searxng:
image: docker.io/searxng/searxng:latest
container_name: searxng
volumes:
- /mnt/ssd/ai/searxng/config/:/etc/searxng/
- /mnt/ssd/ai/searxng/data/:/var/cache/searxng/
restart: always
ports:
- "11437:8080"
qdrant:
image: qdrant/qdrant
container_name: qdrant