9 сентября 2026 г.

Как развернуть Ollama на VPS: локальная LLM с доступом по API

Установка одной командой, запрос модели через API, сколько нужно памяти, и как безопасно открыть доступ снаружи - у Ollama нет авторизации.

Ollama - это лёгкий сервер для запуска языковых моделей на своём железе. Ставится одной командой, поднимает HTTP-API, совместимый с форматом OpenAI, и работает даже на обычном VPS без видеокарты - если правильно подобрать модель под объём памяти. Разберём, как поставить Ollama на сервер, запросить модель через API и, главное, как открыть к ней доступ снаружи, не подарив свои ресурсы всему интернету.

Коротко. Установка - curl -fsSL https://ollama.com/install.sh | sh, дальше служба ollama слушает 127.0.0.1:11434. Модель тянется командой ollama pull, запрос идёт на /api/generate или на OpenAI-совместимый /v1/chat/completions. Правило по памяти: нужно ОЗУ не меньше размера файла модели плюс 1-2 ГБ. У Ollama нет встроенной авторизации - наружу открывать только через обратный прокси с паролем, файрвол по IP или SSH-туннель.

Что такое Ollama и зачем держать её на сервере

Ollama запускает модели формата GGUF (Llama, Qwen, Gemma, Phi, Mistral и другие), сама управляет их загрузкой в память и выгрузкой, и отдаёт единый HTTP-API. На своём сервере это нужно, когда:

  • данные нельзя отправлять во внешний сервис (персональные, коммерческая тайна);
  • нужен предсказуемый счёт - фиксированная аренда VPS вместо оплаты за токены;
  • модель дергают из своих скриптов, бота, пайплайна обработки - и хочется, чтобы эндпоинт был всегда рядом;
  • нужны эмбеддинги для поиска по документам без обращения к платному API.

Сколько ресурсов нужно

Главное ограничение - оперативная память. Модель целиком грузится в ОЗУ (или в видеопамять, если есть GPU). Нужно: размер файла модели + 1-2 ГБ на контекст и служебные структуры.

Модель

Размер

Минимум ОЗУ

Для чего

llama3.2:1b

~1.3 ГБ

3 ГБ

простые задачи, черновой текст, классификация

gemma2:2b, llama3.2:3b

~2 ГБ

4 ГБ

короткие ответы, извлечение данных

qwen2.5:7b, llama3.1:8b

~4.7-5 ГБ

8 ГБ

осмысленные ответы, суммаризация, код

nomic-embed-text

~275 МБ

2 ГБ

эмбеддинги для поиска по документам

Про скорость. Без видеокарты инференс идёт на процессоре. На современном ядре VPS модели 1-3B выдают несколько токенов в секунду - для скриптов и фоновой обработки нормально, для живого чата уже медленно. Модели 7-8B на CPU - это единицы токенов в секунду, годится для пакетных задач, не для интерактива. GPU меняет картину на порядок, но VPS с видеокартой стоит заметно дороже.

Шаг 1. Установка

Зайдите на сервер по SSH под root (или через sudo) и выполните официальный установщик:

curl -fsSL https://ollama.com/install.sh | sh

Скрипт скачает бинарник, создаст системного пользователя ollama и службу ollama.service, которая стартует сразу и при загрузке. Если на сервере есть поддерживаемая видеокарта NVIDIA или AMD, установщик подхватит её сам; иначе будет режим CPU.

Проверьте:

ollama --version
systemctl status ollama --no-pager

По умолчанию служба слушает только 127.0.0.1:11434 - снаружи она пока недоступна, и это правильно (см. шаг 4).

Шаг 2. Первая модель

Скачайте модель под свою память. Начните с лёгкой:

ollama pull llama3.2:1b

Список того, что уже скачано:

ollama list

Быстрый тест в терминале (выход - /bye):

ollama run llama3.2:1b "Одним предложением: что такое обратный прокси?"

Что сейчас загружено в память и сколько занимает:

ollama ps

Шаг 3. Запрос через API

Ollama отдаёт HTTP-API на том же порту 11434. Одиночный запрос:

curl http://localhost:11434/api/generate -d '{
"model": "llama3.2:1b",
"prompt": "Перечисли три плюса своего VPS под LLM",
"stream": false
}'

В ответе - поле response с текстом. Параметр "stream": false отдаёт ответ целиком; без него Ollama шлёт поток JSON-кусочков.

Диалог с историей - эндпоинт /api/chat с массивом messages. А для готовых клиентов (SDK OpenAI, LangChain, n8n) есть OpenAI-совместимый эндпоинт:

curl http://localhost:11434/v1/chat/completions -d '{
"model": "llama3.2:1b",
"messages": [{"role": "user", "content": "Привет"}]
}'

В SDK OpenAI достаточно указать base_url вида http://ВАШ_СЕРВЕР:11434/v1 и любой непустой ключ.

Шаг 4. Доступ снаружи - только безопасно

У Ollama нет авторизации. Кто угодно, кто достучится до порта 11434, сможет гонять ваши модели и нагружать сервер. Поэтому просто «открыть порт в мир» - плохой вариант. Выбирайте один из трёх.

Вариант А. SSH-туннель (ничего не открываем)

Оставьте Ollama на localhost и пробрасывайте порт с клиента:

ssh -N -L 11434:localhost:11434 user@ВАШ_СЕРВЕР

Теперь запросы на http://localhost:11434 с вашей машины идут в Ollama на сервере. Проще всего, если доступ нужен вам одному.

Вариант Б. Обратный прокси с паролем

Поставьте перед Ollama веб-сервер, который добавит HTTPS и проверку пароля. На Caddy это несколько строк в Caddyfile:

llm.example.com {
basic_auth {
apiuser $2a$14$...хеш_пароля...
}
reverse_proxy 127.0.0.1:11434
}

Хеш пароля генерируется командой caddy hash-password. Как поставить Caddy и получить сертификат - в статье Caddy: автоматический HTTPS за 5 минут.

Вариант В. Файрвол по IP

Если Ollama должна слушать наружу, откройте порт только своему адресу. Сначала разрешите службе слушать не только localhost - systemctl edit ollama, добавьте:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"

systemctl daemon-reload && systemctl restart ollama

И сразу ограничьте доступ файрволом:

ufw allow from ВАШ_IP to any port 11434 proto tcp
ufw deny 11434

Настройки службы

Параметры задаются переменными окружения через systemctl edit ollama:

  • OLLAMA_MODELS - куда складывать модели (по умолчанию /usr/share/ollama/.ollama/models); вынесите на больший диск, если моделей много.
  • OLLAMA_KEEP_ALIVE - сколько держать модель в памяти после запроса (по умолчанию 5m); -1 - всегда, 0 - выгружать сразу.
  • OLLAMA_NUM_PARALLEL - сколько запросов обрабатывать одновременно.
  • OLLAMA_MAX_LOADED_MODELS - сколько разных моделей держать в памяти вместе.

Какую модель взять под задачу

  • Классификация, теги, короткие извлечения из текста - llama3.2:1b или gemma2:2b, быстро и дёшево по памяти.
  • Осмысленные ответы, суммаризация, помощь с кодом - qwen2.5:7b или llama3.1:8b, если есть 8 ГБ ОЗУ.
  • Поиск по своим документам (RAG) - nomic-embed-text для эмбеддингов плюс небольшая генеративная модель для ответа.
  • Полный каталог - на ollama.com/library; у каждой модели есть варианты по числу параметров и по квантованию (q4, q8) - меньше квантование, меньше памяти и качества.

Частые ошибки

  • model "X" not found. Модель не скачана. ollama pull X.
  • Снаружи «connection refused», локально работает. Служба слушает только 127.0.0.1. Либо туннель, либо OLLAMA_HOST=0.0.0.0 плюс прокси или файрвол (шаг 4).
  • Процесс убивает OOM-killer при загрузке модели. Модель больше свободной памяти. Возьмите вариант меньше или с более агрессивным квантованием, либо поднимите тариф.
  • Отвечает очень медленно. Инференс на процессоре. Уменьшите модель, сократите контекст или переходите на сервер с GPU для тяжёлых моделей.
  • Первый запрос долгий, потом быстрее. Норма: модель грузится в память при первом обращении. Держите её загруженной через OLLAMA_KEEP_ALIVE.

Что дальше

PUBLISHED
9 сентября 2026 г.
AUTHOR
HIP-HOSTING
LANGUAGES
EN · RU