DeepSeek + OpenWebUI + Ollama через Docker Compose
Локальный AI-стек на своём сервере — без подписок и без отправки данных третьим сторонам. Поднимаю DeepSeek через связку OpenWebUI и Ollama одним docker-compose файлом. Подходит и для личного использования, и для сервера с общим доступом.
Что понадобится
Если Docker ещё не установлен — у меня есть отдельный гайд по установке. Для массового развёртывания есть готовый Ansible playbook.
Шаг 1. Файл окружения
В директории проекта создаю .env:
# Настройки OpenWebUI
OPENWEBUI_PORT=8080
OLLAMA_BASE_URL=http://ollama:11434
# Настройки Ollama
OLLAMA_PORT=11434
OLLAMA_VOLUME=/root/.ollama
WEBUI_VOLUME=/app/backend/data
Шаг 2. Docker Compose файл
В той же директории — docker-compose.yml:
version: '3.8'
services:
openwebui:
image: ghcr.io/open-webui/open-webui:main
container_name: openwebui
hostname: openwebui
restart: unless-stopped
ports:
- "${OPENWEBUI_PORT}:8080"
environment:
OLLAMA_BASE_URLS: ${OLLAMA_BASE_URL}
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- open-webui-local:${WEBUI_VOLUME}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:${OPENWEBUI_PORT}"]
interval: 10s
retries: 5
start_period: 15s
ollama:
image: ollama/ollama:latest
container_name: ollama
hostname: ollama
restart: unless-stopped
ports:
- "${OLLAMA_PORT}:11434"
volumes:
- ollama-local:${OLLAMA_VOLUME}
volumes:
ollama-local:
open-webui-local:
Два сервиса: Ollama хранит и запускает модели, OpenWebUI даёт веб-интерфейс для общения с ними. Они общаются друг с другом по внутренней сети Docker через OLLAMA_BASE_URL.
Шаг 3. Запуск
docker-compose up -d
Команда скачает образы, создаст контейнеры и запустит их в фоне.
Шаг 4. Проверка
Какие контейнеры запущены:
docker ps
Логи каждого сервиса:
docker logs openwebui
docker logs ollama
Шаг 5. Открыть OpenWebUI
В браузере:
http://localhost:8080
Порт меняется, если задан другой OPENWEBUI_PORT в .env.
Управление сервисами
Перезапуск:
docker-compose restart
Остановка:
docker-compose down
Обновление образов:
docker-compose pull
docker-compose up -d --force-recreate
Стек поднят и готов к работе — быстро, модульно, легко управляется через те же три-четыре команды Docker Compose, что и любой другой сервис на сервере.
Если хочешь обсудить похожую задачу — пиши на [email protected] или заходи на 1it.pro.