Запуск Llama 3.1 локально: Ollama, Open WebUI, Docker-стек | AiManual
AiManual Logo Ai / Manual.
16 Янв 2026 Гайд

Полное руководство по локальному запуску Llama 3.1: Ollama + Open WebUI + Docker для приватного AI

Пошаговый гайд по развертыванию приватного AI на Llama 3.1 с помощью Ollama и Open WebUI в Docker. Полная изоляция, никаких облачных API.

Зачем это нужно? Потому что ваш AI не должен шпионить

Каждый раз, отправляя запрос в ChatGPT или Claude, вы закладываете кирпичик в чужую стену. Ваши данные, ваши идеи, ваш контекст. Платите за это деньгами и приватностью. Звучит несправедливо, да?

Локальный запуск модели - это не просто "крутая техническая игрушка". Это возвращение контроля. Вы можете обрабатывать внутренние документы, писать код, генерировать контент, и ни один байт не уйдет за пределы вашего железа. Особенно актуально для юристов, врачей, стартапов на ранней стадии.

Но есть и обратная сторона: производительность. Llama 3.1 70B на ноутбуке 2018 года - это не разговор с ассистентом, а медитативное наблюдение за прогресс-баром. Требуются ресурсы.

Стек: почему именно эта связка?

Можно собрать llama.cpp в LXC, можно мучиться с Oobabooga. Но для быстрого, чистого и поддерживаемого стенда я выбрал три компонента:

  • Ollama - бесспорный король локального запуска LLM. Качает модели, управляет контекстом, предоставляет API. Проще некуда.
  • Open WebUI (раньше Ollama WebUI) - открытый клон интерфейса ChatGPT. Работает с Ollama API, хранит историю, поддерживает RAG. Красиво и функционально.
  • Docker & Docker Compose - изоляция и воспроизводимость. Через полгода вы вспомните меня добрым словом, когда нужно будет перенести весь стенд на новый сервер.

Эта связка дает баланс между простотой и гибкостью. Не такая нативная, как прямой запуск в LXC, но в разы удобнее для ежедневного использования.

1Железо: что вам понадобится на самом деле

Забудьте про "минимальные системные требования" из официальной документации. Вот реальная картина:

МодельОперативная память (минимум)VRAM (для GPU)Скорость генерации (приблизительно)
Llama 3.1 8B8 ГБ6 ГБ15-25 токенов/сек (на CPU)
Llama 3.1 70B40 ГБ2x24 ГБ (очень желательно)5-10 токенов/сек (на GPU)

Если у вас меньше 16 ГБ оперативки, смотрите в сторону более легких моделей для слабого железа. 70B-версия без двух топовых видеокарт - это боль.

💡
Самый частый вопрос: "Потянет ли моя GTX 1660?". Ответ: для 8B - да, но через слойные вычисления (CPU+GPU). Для 70B - нет. Придется использовать квантованную версию в формате GGUF и грузить только в оперативку. Ollama с этим справляется, но скорость будет низкой.

2Устанавливаем Docker и Docker Compose

Если Docker у вас уже стоит, пропускайте этот шаг. Если нет - вот команды для Ubuntu/Debian (для других ОС смотрите официальный сайт).

# Обновляем пакеты и ставим зависимости
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

# Добавляем официальный GPG-ключ Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Добавляем репозиторий
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Устанавливаем Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# Добавляем текущего пользователя в группу docker (чтобы не писать sudo перед каждой командой)
sudo usermod -aG docker $USER
newgrp docker

# Проверяем установку
docker --version

# Устанавливаем Docker Compose (отдельный плагин)
sudo apt install -y docker-compose-plugin
docker compose version

После этого нужно выйти из системы и зайти снова, чтобы изменения в группах вступили в силу. Или выполнить newgrp docker в текущей сессии.

3Создаем Docker Compose файл для всего стека

Вот где магия. Один файл, две службы. Создайте папку для проекта, например, ~/llama-stack, и внутри файл docker-compose.yml.

version: '3.8'

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    volumes:
      - ollama_data:/root/.ollama  # Персистентное хранение моделей
    ports:
      - \"11434:11434\"  # API порт Ollama
    networks:
      - ollama-network
    # Ключевые настройки для производительности:
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]  # Передаем все GPU в контейнер
    # Если нет GPU, закомментируйте блок deploy выше

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    depends_on:
      - ollama
    volumes:
      - open-webui_data:/app/backend/data  # Персистентное хранение чатов, пользователей
    ports:
      - \"3000:8080\"  # Веб-интерфейс будет на localhost:3000
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434  # Внутренняя ссылка на сервис Ollama
      - WEBUI_SECRET_KEY=your_secret_key_here_change_me  # Смените на случайную строку!
    networks:
      - ollama-network
    extra_hosts:
      - \"host.docker.internal:host-gateway\"

networks:
  ollama-network:
    driver: bridge

volumes:
  ollama_data:
  open-webui_data:

Это базовая конфигурация. Она создает сеть, два тома для данных и связывает контейнеры. Обратите внимание на WEBUI_SECRET_KEY - замените на что-то свое, можно сгенерировать через openssl rand -hex 32.

Если у вас нет NVIDIA GPU, или вы не хотите его использовать, обязательно закомментируйте или удалите блок deploy: в сервисе ollama. Иначе контейнер не запустится.

4Запускаем и загружаем модель

Перейдите в папку с docker-compose.yml и выполните:

# Запускаем контейнеры в фоновом режиме
docker compose up -d

# Смотрим логи Ollama, чтобы убедиться, что все работает
docker compose logs -f ollama

Если в логах нет ошибок, можно загружать модель. Откройте новый терминал и используйте CLI Ollama внутри контейнера:

# Загружаем Llama 3.1 8B (самая сбалансированная версия для начала)
docker exec -it ollama ollama pull llama3.1:8b

# Или, если хватит ресурсов, 70B (готовьтесь ждать и иметь много места)
# docker exec -it ollama ollama pull llama3.1:70b

Загрузка может занять время (несколько гигабайт). Модель сохранится в том ollama_data, так что при пересоздании контейнера заново качать не придется.

5Настройка Open WebUI и первый запрос

Откройте браузер и перейдите по адресу http://localhost:3000 (или http://ваш-ip-сервера:3000).

Первым делом - регистрация. Создайте учетную запись. (Да, локальный AI все равно требует логин. Это для многопользовательского режима и хранения истории.)

После входа нужно добавить модель:

  1. В левом нижнем углу нажмите на значок настроек (шестеренка).
  2. Перейдите в раздел "Models".
  3. Вы должны увидеть загруженную модель llama3.1:8b. Если нет, нажмите "Refresh".
  4. Выберите ее и нажмите "Load Model".

Все. Можете открывать новый чат и начинать общение. Интерфейс почти один в один с ChatGPT. Попробуйте задать вопрос на русском - Llama 3.1 с ним справляется неплохо.

Где собака зарыта: нюансы и грабли

Теперь о том, что обычно умалчивают в гайдах.

Производительность GPU

Если вы передали GPU в контейнер, Ollama должен автоматически использовать CUDA. Проверить можно так:

docker exec -it ollama ollama run llama3.1:8b \"Hello\"

В начале вывода будет строка типа pulling manifest - там же можно увидеть, используется ли cuda. Или внутри веб-интерфейса в логах загрузки модели.

Память и своп

Если модели не хватает оперативной памяти, Ollama начнет использовать своп-файл. Это убьет производительность. Следите за использованием памяти через htop или docker stats.

Для 70B модели на системе с 64 ГБ ОЗУ я рекомендую создать огромный файл подкачки (swap) - лишние 50 ГБ на SSD. Медленно, но хотя бы не упадет.

Безопасность и доступ из сети

По умолчанию стенд доступен только локально (localhost:3000). Чтобы открыть доступ в локальную сеть, нужно изменить настройки Docker сети или использовать reverse proxy (Nginx, Traefik).

Никогда не выставляйте порты 11434 (Ollama API) или 3000 (WebUI) напрямую в интернет без пароля и HTTPS. Open WebUI имеет встроенную аутентификацию, но API Ollama - нет. Если нужно дать доступ извне, посмотрите гайд по безопасному доступу через reverse proxy.

Обновление

Чтобы обновить Open WebUI или Ollama до последней версии:

# Останавливаем контейнеры
docker compose down

# Тянем новые образы
docker compose pull

# Запускаем снова
docker compose up -d

Ваши модели и данные чатов останутся в томах Docker.

А что если...? (FAQ от того, кто уже наступил на все грабли)

Модель не загружается, пишет "error pulling model manifest"

Скорее всего, проблемы с сетью или Docker. Попробуйте:

  • Запустить pull команду с флагом --insecure (если у вас проблемы с SSL).
  • Проверить, что контейнер ollama имеет доступ в интернет (docker exec -it ollama curl https://ollama.com).
  • Вручную скачать модель в формате GGUF и поместить в том Ollama (сложный путь).

Open WebUI не видит модель, хотя она загружена в Ollama

Проверьте переменную окружения OLLAMA_BASE_URL в docker-compose файле. Она должна указывать на http://ollama:11434. Затем перезапустите Open WebUI: docker compose restart open-webui.

Очень медленная генерация, хотя GPU используется

Возможно, модель загружена только частично в VRAM, остальное в ОЗУ. Для 8B модели на карте с 8 ГБ VRAM это нормально. Можно попробовать квантованную версию (например, llama3.1:8b-q4_K_M), которая занимает меньше памяти. Скачать ее можно так же: docker exec -it ollama ollama pull llama3.1:8b-q4_K_M.

Хочу использовать другую модель, не Llama

Ollama поддерживает десятки моделей: Mistral, Gemma, Qwen, DeepSeek. Просто замените llama3.1:8b на, например, mistral:7b или qwen2.5:7b. Полный список: docker exec -it ollama ollama list (после загрузки хотя бы одной).

Итог: что вы получили

Вы развернули полностью автономный AI-стенд. Он не позвонит маме (то есть в облако), даже если его попросить. Вы можете обрабатывать конфиденциальные данные, интегрировать его в свои приложения через API, или просто использовать как умный блокнот.

Следующий шаг - добавить RAG (Retrieval-Augmented Generation) для работы с вашими документами. Open WebUI имеет встроенную поддержку загрузки файлов и семантического поиска. Но это тема для отдельного разговора.

Главный совет, который вы не найдете в мануалах: не гонитесь за самой большой моделью. 8B параметров с хорошим контекстом часто полезнее 70B, которая думает минуту на каждый ваш вопрос. Начните с малого, почувствуйте, как AI вписывается в ваш workflow, а потом уже решайте, стоит ли покупать новую видеокарту.

И да, теперь вы можете спрашивать у AI, как починить сервер, не боясь, что он посоветует вам rm -rf /* из чистого любопытства. Хотя... локальные модели тоже иногда галлюцинируют. Никогда не верьте им слепо.