Установка одной командой, запрос модели через 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 запускает модели формата GGUF (Llama, Qwen, Gemma, Phi, Mistral и другие), сама управляет их загрузкой в память и выгрузкой, и отдаёт единый HTTP-API. На своём сервере это нужно, когда:
Главное ограничение - оперативная память. Модель целиком грузится в ОЗУ (или в видеопамять, если есть GPU). Нужно: размер файла модели + 1-2 ГБ на контекст и служебные структуры.
Модель | Размер | Минимум ОЗУ | Для чего |
|---|---|---|---|
| ~1.3 ГБ | 3 ГБ | простые задачи, черновой текст, классификация |
| ~2 ГБ | 4 ГБ | короткие ответы, извлечение данных |
| ~4.7-5 ГБ | 8 ГБ | осмысленные ответы, суммаризация, код |
| ~275 МБ | 2 ГБ | эмбеддинги для поиска по документам |
Про скорость. Без видеокарты инференс идёт на процессоре. На современном ядре VPS модели 1-3B выдают несколько токенов в секунду - для скриптов и фоновой обработки нормально, для живого чата уже медленно. Модели 7-8B на CPU - это единицы токенов в секунду, годится для пакетных задач, не для интерактива. GPU меняет картину на порядок, но VPS с видеокартой стоит заметно дороже.
Зайдите на сервер по 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).
Скачайте модель под свою память. Начните с лёгкой:
ollama pull llama3.2:1b
Список того, что уже скачано:
ollama list
Быстрый тест в терминале (выход - /bye):
ollama run llama3.2:1b "Одним предложением: что такое обратный прокси?"
Что сейчас загружено в память и сколько занимает:
ollama ps
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 и любой непустой ключ.
У Ollama нет авторизации. Кто угодно, кто достучится до порта 11434, сможет гонять ваши модели и нагружать сервер. Поэтому просто «открыть порт в мир» - плохой вариант. Выбирайте один из трёх.
Оставьте 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 минут.
Если 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 ГБ ОЗУ.nomic-embed-text для эмбеддингов плюс небольшая генеративная модель для ответа.ollama.com/library; у каждой модели есть варианты по числу параметров и по квантованию (q4, q8) - меньше квантование, меньше памяти и качества.model "X" not found. Модель не скачана. ollama pull X.127.0.0.1. Либо туннель, либо OLLAMA_HOST=0.0.0.0 плюс прокси или файрвол (шаг 4).OLLAMA_KEEP_ALIVE.