Практикум DevOpsТехнологии & Сети

Развертывание Ollama и vLLM в Docker на облачном сервере: от голой ОС до рабочего API

Пошаговый технический мануал: накат драйверов NVIDIA, установка Container Toolkit, запуск Ollama в фоне, проброс портов и защита эндпоинта через Bearer-токен и Nginx.

Обновлено: 2026-09-18
Время чтения: ~10 мин
Автор: Денис Васильев (DevOps Team Lead)
Быстрый ответ & Краткая суть

Чтобы запустить собственный аналог OpenAI на облачном сервере: арендуйте VPS или GPU-сервер на Ubuntu 24.04, установите Docker и nvidia-container-toolkit, запустите контейнер с Ollama или vLLM, скачайте нужную модель через CLI и настройте обратный прокси Nginx с SSL-сертификатом Let's Encrypt для безопасного доступа ваших приложений по защищенному HTTPS.

ОСUbuntu 22.04 / 24.04 LTS
СтекDocker, NVIDIA Container Toolkit, Ollama, Nginx
СовместимостьOpenAI API format (/v1/chat/completions)
Время развертывания7–12 минут
Ключевые выводы и краткая суть
  • Современные облачные провайдеры предлагают готовые образы с предустановленными драйверами CUDA, что экономит до часа рутинной настройки.
  • Для безопасного использования открытого API в интернете обязательно закрывайте порт 11434 обратным прокси (Nginx) с авторизацией по токену.
  • Ollama предоставляет стандартный REST эндпоинт, полностью совместимый со спецификацией OpenAI API (/v1/chat/completions).
  • Запуск через Docker Compose позволяет за минуту развернуть связку из движка инференса и удобного веб-интерфейса Open-WebUI.

Шаг 1: Подготовка окружения и проверка GPU

После подключения к чистому серверу по SSH первым делом проверяем, видит ли операционная система установленный графический ускоритель, с помощью команды nvidia-smi.

Если драйверы не установлены, на Ubuntu 24.04 их проще всего поставить из официального репозитория Canonical командой ubuntu-drivers install, либо выбрать готовый системный шаблон с CUDA в панели хостинга (в Timeweb Cloud и Selectel такие образы доступны в один клик).

terminal
nvidia-smi
# Проверяем наличие драйвера и версию CUDA (рекомендуется CUDA 12.4+)

Шаг 2: Установка Docker и NVIDIA Container Toolkit

Чтобы контейнеры Docker имели прямой доступ к ядрам и видеопамяти видеокарты, необходимо установить пакет nvidia-container-toolkit и перезапустить демон Docker.

install-nvidia-docker.sh
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

Шаг 3: Запуск Ollama и Open-WebUI через Docker Compose

Создадим файл docker-compose.yml, который поднимет сервер инференса Ollama и красивый веб-интерфейс Open-WebUI (визуальный клон ChatGPT для вашей команды).

docker-compose.yml
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: always
    ports:
      - "127.0.0.1:11434:11434"
    volumes:
      - ./ollama_data:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: always
    ports:
      - "3000:8080"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
    volumes:
      - ./webui_data:/app/backend/data
    depends_on:
      - ollama
БезопасностьОбратите внимание на привязку 127.0.0.1:11434. Никогда не открывайте порт 11434 на весь интернет без пароля (0.0.0.0:11434), иначе ваш сервер быстро найдут сканеры и будут бесплатно сжигать вашу видеопамять.

Шаг 4: Загрузка модели и тест запроса

После запуска контейнеров командой docker compose up -d скачиваем желаемую модель внутрь контейнера. Для примера возьмем Llama 3.1 8B:

terminal
docker exec -it ollama ollama run llama3.1:8b

# Проверка через curl (совместимо с OpenAI SDK)
curl http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.1:8b",
    "messages": [{"role": "user", "content": "Привет! Ответь одним предложением."}]
  }'
Рекомендованные конфигурации по теме статьи

Проверенные серверы от надежных провайдеров

Весь каталог
Хит цены
AE

Aeza

Москва4.6

Shared Start

CPU

1 ядер • 3.3 ГГц

RAM

1 ГБ

Диск

10 ГБ NVMe

Канал

200 Мбит/с

149 ₽/мес

Хит цены
TI

Timeweb Cloud

Москва4.8

Cloud Start

CPU

1 ядер • 3.3 ГГц

RAM

1 ГБ

Диск

15 ГБ NVMe

Канал

200 Мбит/с

299 ₽/мес

AE

Aeza

Москва4.6

Shared Medium

CPU

2 ядер • 3.3 ГГц

RAM

2 ГБ

Диск

30 ГБ NVMe

Канал

200 Мбит/с

299 ₽/мес

Часто задаваемые вопросы (FAQ)

Как подключить сторонние программы (Cursor, LangChain, n8n) к моему серверу?

В настройках Cursor, Continue.dev или LangChain укажите Base URL: http://ip-вашего-сервера:11434/v1 (или ваш HTTPS домен) и выберите имя модели, которую вы скачали в Ollama. API полностью совместимо с форматом OpenAI.

Что делать, если модель работает медленно?

Проверьте через nvidia-smi, действительно ли веса загрузились в GPU, а не в процессорную память. Если VRAM не хватило, Ollama автоматически оффлоадит часть слоев на медленный процессор (CPU/RAM), что резко снижает FPS.