Запуск Open WebUI и Ollama в Docker Compose

Ollama запускает локальные языковые модели; Open WebUI даёт веб-чат поверх них. Ниже — связка за Traefik. Для CPU хватит скромного железа; для нормальной скорости нужен GPU (NVIDIA + nvidia-container-toolkit).

Нужны рабочий Traefik и сеть traefik_network.

1. Каталог

mkdir -p ~/ollama-webui
cd ~/ollama-webui

2. docker-compose.yml (CPU)

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    volumes:
      - ollama_data:/root/.ollama
    networks:
      - internal

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_AUTH=true
    volumes:
      - open_webui_data:/app/backend/data
    depends_on:
      - ollama
    labels:
      - traefik.enable=true
      - traefik.http.middlewares.openwebui_https.redirectscheme.scheme=https
      - traefik.http.routers.openwebui.entrypoints=web
      - traefik.http.routers.openwebui.middlewares=openwebui_https@docker
      - traefik.http.routers.openwebui.rule=Host(`llm.yourdomain`)
      - traefik.http.routers.openwebui_https.entrypoints=websecure
      - traefik.http.routers.openwebui_https.rule=Host(`llm.yourdomain`)
      - traefik.http.routers.openwebui_https.tls=true
      - traefik.http.routers.openwebui_https.tls.certresolver=le
      - traefik.http.services.openwebui.loadbalancer.server.port=8080
    networks:
      - traefik_network
      - internal

volumes:
  ollama_data:
  open_webui_data:

networks:
  traefik_network:
    external: true
  internal:
    driver: bridge

Для NVIDIA GPU у сервиса ollama добавьте:

    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

и убедитесь, что на хосте работает nvidia-smi в контейнерах.

3. Запуск и модель

docker compose up -d
docker exec -it ollama ollama pull llama3.2

Откройте https://llm.yourdomain, создайте первого пользователя (он станет админом).

4. Память и диск

  • Модели лежат в volume ollama_data — планируйте десятки гигабайт.
  • Не открывайте Ollama наружу напрямую (порт 11434): только через внутреннюю сеть и Open WebUI.
  • Для продакшена ограничьте регистрацию в настройках Open WebUI и при желании повесьте Authelia.

Замечания

  • Маленькие модели (llama3.2:1b, phi3:mini) удобны для тестов на CPU.
  • Бэкапьте open_webui_data (чаты, пользователи); модели при необходимости скачиваются снова через ollama pull.

Итог: локальный чат с LLM за HTTPS без отправки запросов во внешние API.