# ~/docker/ai-llm/docker-compose.yml # # ═══════════════════════════════════════════════════════════════════════════════ # USAGE # ═══════════════════════════════════════════════════════════════════════════════ # # Before starting this stack, stop InvokeAI via the portal. # # Start: # cd ~/docker/ai-llm && docker compose up -d # # Pull models (run once per model): # docker exec ai-llm-ollama-1 ollama pull qwen2.5-coder:7b # docker exec ai-llm-ollama-1 ollama pull qwen2.5:7b # docker exec ai-llm-ollama-1 ollama pull llava:7b # # Open WebUI → https://chat.mydomain.com # # After starting, enable web search in Open WebUI: # Settings → Web Search → Enable → SearXNG → http://searxng:8080 # ═══════════════════════════════════════════════════════════════════════════════ services: # ── Ollama ─────────────────────────────────────────────────────────────────── ollama: image: ollama/ollama:latest pull_policy: missing environment: - TZ=America/New_York volumes: - ./data/ollama:/root/.ollama ports: - "11434:11434" deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] restart: unless-stopped # ── Open WebUI ─────────────────────────────────────────────────────────────── open-webui: image: ghcr.io/open-webui/open-webui:user0 pull_policy: missing volumes: - ./data/open-webui:/app/backend/data ports: - "3000:8080" environment: - TZ=America/New_York - OLLAMA_BASE_URL=http://ollama:11434 - SEARXNG_QUERY_URL=http://searxng:8080/search?q=&format=json depends_on: - ollama - searxng restart: unless-stopped # ── SearXNG ────────────────────────────────────────────────────────────────── # Privacy-respecting meta search — no API key needed # Open WebUI Settings → Web Search → SearXNG → http://searxng:8080 searxng: image: searxng/searxng:latest pull_policy: missing volumes: - ./data/searxng:/etc/searxng environment: - TZ=America/New_York - SEARXNG_BASE_URL=http://searxng:8080 expose: - 8080 restart: unless-stopped