Актуально на 22 сентября 2026 года.
Своя LLM на сервере нужна не всем. Если задача - чат-бот, суммаризация документов или агент в n8n с небольшим объёмом запросов, чаще дешевле подключить готовый API или российский агрегатор нейросетей. Сервер имеет смысл, когда важны приватность данных, предсказуемая стоимость на больших объёмах, эксперименты с открытыми моделями или полный контроль над окружением.
Ниже - практический маршрут: какое железо выбрать, чем отличаются Ollama, vLLM и llama.cpp, как поднять первый endpoint и что обязательно закрыть по безопасности, чтобы модель не оказалась публичной для всего интернета.
Сначала определите сценарий
Не начинайте с выбора видеокарты. Сначала зафиксируйте, что именно должен делать сервер:
- Личный чат или тестовая среда. Нужны простая установка, веб-интерфейс и возможность быстро менять модели. Обычно хватает Ollama и Open WebUI.
- API для внутреннего сервиса. Нужен OpenAI-совместимый endpoint, лимиты, логи и нормальная авторизация на уровне прокси. Для этого лучше смотреть на vLLM или llama.cpp server.
- Продакшн-инференс с параллельными запросами. Нужны batching, мониторинг, повторяемые деплои и GPU с запасом VRAM. Основной кандидат - vLLM.
- Экономный запуск GGUF-моделей. Нужна работа на CPU, Mac, слабой GPU или гибридной схеме с частичной выгрузкой слоёв. Здесь обычно выбирают llama.cpp.
- RAG по своим документам. Помимо LLM понадобятся хранилище файлов, эмбеддинги, векторная база и права доступа. Саму модель лучше держать за внутренним API.
Если сценарий ещё неясен, начните с Ollama на обычном VPS или домашней машине. Когда станет понятно, какая модель, контекст и нагрузка нужны, переносите inference на GPU-сервер.
Какое железо нужно
Главный ограничитель - видеопамять. Модель должна поместиться в VRAM вместе с KV-кэшем контекста и служебными накладными расходами. В четырёхбитном квантовании ориентиры такие:
| Класс модели | Минимальный ориентир | Комментарий |
|---|---|---|
| 3-4B | CPU или 6-8 ГБ VRAM | Подходит для быстрых тестов, классификации, коротких ответов. |
| 7-8B | 8-12 ГБ VRAM или 16-32 ГБ RAM | Хороший старт для личного чата и внутренних утилит. |
| 14B | 16 ГБ VRAM | Более устойчивые ответы, но скорость уже заметно зависит от GPU. |
| 30-32B | 24-48 ГБ VRAM | Практический класс для рабочих открытых LLM; на 24 ГБ часто нужен аккуратный контекст или частичная выгрузка. |
| 70B | 48-80 ГБ VRAM | Дороже и сложнее; обычно оправдано для командной нагрузки или качества. |
| 100B+ | 80 ГБ VRAM и мульти-GPU | Это уже отдельный инфраструктурный проект, а не «один VPS». |
Для CPU-запуска важны RAM и скорость памяти: 32 ГБ хватит для 7-14B в квантовании, 64 ГБ комфортнее для 30B-класса, но скорость будет ниже, чем на GPU. Диск тоже не забывайте: несколько моделей, Docker-образы и логи легко занимают 100-200 ГБ.
По выбору провайдера и ценам смотрите отдельный разбор про аренду GPU-сервера для нейросетей. Если агент только вызывает внешнюю модель по API, GPU не нужен: достаточно обычного VPS, как в статье про сервер для AI-агентов.
Выбор стека: Ollama, vLLM или llama.cpp
| Стек | Когда выбирать | Сильные стороны | Ограничения |
|---|---|---|---|
| Ollama | быстрый старт, личный чат, прототип | простая установка, библиотека моделей, удобный локальный API | не заменяет полноценную продакшн-платформу для высокой параллельности |
| Open WebUI | нужен браузерный интерфейс поверх Ollama или OpenAI-compatible API | аккаунты, история чатов, подключение разных провайдеров | требует отдельной защиты и резервного копирования volume |
| vLLM | API-сервер для команды или сервиса | OpenAI-compatible API, высокая пропускная способность, batching | нужна аккуратная настройка безопасности и GPU-окружения |
| llama.cpp | GGUF, CPU/Mac/небольшие GPU, гибкий локальный inference | квантованные модели, лёгкий сервер, много аппаратных backend | меньше «коробочной» инфраструктуры вокруг эксплуатации |
Практическая схема для большинства команд: Ollama + Open WebUI для редакторов и экспериментов, vLLM для стабильного API, llama.cpp для отдельных GGUF-моделей и экономных инсталляций.
Базовая подготовка сервера
Ниже пример для Ubuntu 24.04 LTS. Команды адаптируйте под свой образ и права доступа.
- Создайте отдельного пользователя для inference и запретите вход по паролю для root.
- Откройте наружу только 22, 80 и 443; внутренние порты моделей держите на 127.0.0.1.
- Поставьте Docker, обновления безопасности и базовый мониторинг диска.
- Для NVIDIA GPU проверьте драйвер командой
nvidia-smi. - Если модель работает в контейнере, установите NVIDIA Container Toolkit и проверьте, что Docker видит GPU.
docker run --rm --gpus all nvidia/cuda:12.6.3-base-ubuntu24.04 nvidia-smi
Если эта команда не видит видеокарту, Ollama, vLLM и Open WebUI в контейнере тоже не увидят GPU. Сначала чините драйвер и runtime, потом запускайте модель.
Вариант 1. Быстрый старт с Ollama
Ollama удобна, когда нужно за 10 минут проверить модель и получить локальный HTTP API.
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl status ollama
ollama pull qwen3:8b
ollama run qwen3:8b
Проверка API:
curl http://127.0.0.1:11434/api/generate \
-d '{"model":"qwen3:8b","prompt":"Коротко объясни, что такое RAG","stream":false}'
Для Docker-варианта лучше сразу биндинговать порт на localhost, а не на весь интернет:
docker run -d --gpus=all \
-v ollama:/root/.ollama \
-p 127.0.0.1:11434:11434 \
--name ollama \
--restart unless-stopped \
ollama/ollama
Если нужен интерфейс в браузере, добавьте Open WebUI. Секрет сгенерируйте отдельно и храните вне репозитория.
docker run -d \
-p 127.0.0.1:3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
-e WEBUI_SECRET_KEY="замените-на-длинный-секрет" \
--name open-webui \
--restart unless-stopped \
ghcr.io/open-webui/open-webui:main
Дальше поставьте Caddy, Nginx или другой reverse proxy с HTTPS и авторизацией. Не публикуйте Open WebUI без логина, если там есть рабочие документы или история чатов.
Вариант 2. API-сервер на vLLM
vLLM подходит, когда модель должна обслуживать приложение через OpenAI-совместимый API. Минимальный запуск выглядит так:
python3 -m venv /opt/vllm
source /opt/vllm/bin/activate
pip install -U pip vllm
export VLLM_API_KEY="замените-на-секрет"
vllm serve Qwen/Qwen3-8B \
--host 127.0.0.1 \
--port 8000 \
--api-key "$VLLM_API_KEY"
Проверка:
curl http://127.0.0.1:8000/v1/chat/completions \
-H "Authorization: Bearer $VLLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"Qwen/Qwen3-8B","messages":[{"role":"user","content":"Ответь одним предложением: зачем нужен vLLM?"}]}'
Важный нюанс безопасности: встроенный --api-key у vLLM защищает не все endpoint-ы сервера. Поэтому production-схема должна быть такой: vLLM слушает только 127.0.0.1 или приватную сеть, наружу смотрит reverse proxy с HTTPS, rate limit, логами и отдельной авторизацией.
Вариант 3. llama.cpp server для GGUF
llama.cpp полезен, когда вы используете GGUF-модели, хотите запуск на CPU или комбинируете CPU/GPU. После сборки или установки сервера запуск обычно сводится к одной команде:
llama-server \
-m /models/model.Q4_K_M.gguf \
--host 127.0.0.1 \
--port 8080 \
-c 4096
У llama.cpp server есть REST API, OpenAI-compatible chat completions, web UI, embeddings и режимы для параллельной работы. Для небольших внутренних инструментов этого часто достаточно, особенно если модель уже доступна в GGUF и не хочется поднимать тяжёлый Python-стек.
Безопасность: что закрыть до первого пользователя
- Не слушайте 0.0.0.0 без причины. Ollama, vLLM и llama.cpp держите на localhost или в приватной сети.
- Не полагайтесь только на ключ модели. Ставьте reverse proxy, HTTPS, basic auth/OIDC, IP allowlist или VPN.
- Не храните секреты в репозитории. API-ключи, пароли WebUI и токены прокси - только в env-файлах с ограниченными правами.
- Ограничьте размер запросов. Длинный контекст быстро съедает VRAM и может положить сервис.
- Разделяйте пользователей. Для команды нужен интерфейс с аккаунтами и правами, а не общий пароль на всех.
- Делайте бэкапы volume. У Open WebUI история чатов и настройки живут в Docker volume; без бэкапа они исчезнут при ошибочном удалении.
- Обновляйте образы контролируемо. Сначала тестовый контейнер и отдельный volume, потом production.
Минимальная внешняя схема: model-server:127.0.0.1 → Caddy/Nginx → HTTPS-домен → авторизация → пользователи. Для API добавьте rate limit и отдельные ключи на клиента.
Мониторинг и эксплуатация
Для одиночного сервера достаточно простого набора:
nvidia-smiили DCGM exporter - загрузка GPU, VRAM, температура;docker logs/journalctl- ошибки загрузки модели и падения процесса;- мониторинг диска - модели и кэш Hugging Face быстро растут;
- лог времени ответа и числа токенов - иначе невозможно понять себестоимость;
- алерт на OOM и перезапуски контейнера.
Отдельно следите за контекстом. Увеличение окна с 4K до 32K токенов может сильнее ударить по памяти, чем смена модели на соседний размер. Для чата это приятно, для бюджета - не всегда.
Когда всё-таки не разворачивать свою LLM
Собственный сервер выглядит привлекательно, но часто проигрывает API по суммарной стоимости. Не разворачивайте модель, если:
- запросов мало и они нерегулярные;
- нет человека, который будет обновлять драйверы, контейнеры и модели;
- данные можно отправлять во внешний API по политике компании;
- нужны флагманские закрытые модели, а не открытая LLM;
- важнее скорость запуска продукта, чем контроль над инфраструктурой.
В таких случаях разумнее начать с агрегатора или API-шлюза. Сравнение доступных из России вариантов есть в статье про агрегаторы нейросетей без VPN и в гайде про доступ к API OpenAI, Anthropic и Google из России.
Итоговый чеклист
- Сформулируйте сценарий: личный чат, внутренний API, RAG или production inference.
- Выберите модель и проверьте требования по VRAM с запасом под контекст.
- Для старта поставьте Ollama; для API-нагрузки - vLLM; для GGUF и CPU - llama.cpp.
- Держите модель на localhost, наружу выпускайте только reverse proxy с HTTPS и авторизацией.
- Сразу настройте логи, мониторинг VRAM, бэкапы volume и лимиты запросов.
- Через неделю эксплуатации сравните фактическую стоимость с API: сервер должен окупать свою сложность.
Хороший первый шаг - поднять 7-8B модель в Ollama и подключить Open WebUI только для себя. Если пользователи действительно приходят, запросы повторяются, а данные нельзя отправлять наружу, тогда уже имеет смысл переходить к GPU-серверу, vLLM и полноценной эксплуатации.
Источники
- Ollama Linux docs: https://github.com/ollama/ollama/blob/main/docs/linux.mdx
- Ollama troubleshooting, GPU in Docker: https://github.com/ollama/ollama/blob/main/docs/troubleshooting.mdx
- vLLM OpenAI-compatible server: https://docs.vllm.ai/en/latest/serving/online_serving/openai_compatible_server/
- llama.cpp HTTP server: https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md
- NVIDIA Container Toolkit install guide: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
- Open WebUI Quick Start: https://docs.openwebui.com/getting-started/quick-start/
- Caddy basic_auth documentation: https://caddyserver.com/docs/caddyfile/directives/basic_auth