Ollama запускает локальные языковые модели; Open WebUI даёт веб-чат поверх них. Ниже — связка за Traefik. Для CPU хватит скромного железа; для нормальной скорости нужен GPU (NVIDIA + nvidia-container-toolkit).
Нужны рабочий Traefik и сеть traefik_network.
mkdir -p ~/ollama-webui
cd ~/ollama-webui
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 в контейнерах.
docker compose up -d
docker exec -it ollama ollama pull llama3.2
Откройте https://llm.yourdomain, создайте первого пользователя (он станет админом).
ollama_data — планируйте десятки гигабайт.llama3.2:1b, phi3:mini) удобны для тестов на CPU.open_webui_data (чаты, пользователи); модели при необходимости скачиваются снова через ollama pull.Итог: локальный чат с LLM за HTTPS без отправки запросов во внешние API.