Ollama на VPS без видеокарты: установка, выбор модели по памяти и безопасный доступ к API
Запускаем Gemma, Llama и Qwen на CPU-сервере через Ollama, считаем память, открываем API через SSH-туннель или Caddy с паролем и HTTPS. Ubuntu 22.04/24.04, Debian 12.

Ollama запускает открытые языковые модели — Gemma, Llama, Qwen — на вашей машине и даёт к ним простой HTTP API. Видеокарта не обязательна: без GPU Ollama работает на процессоре, и маленькие модели отвечают с приемлемой скоростью на нескольких ядрах. Здесь — установка на VPS, первая модель и два безопасных способа ходить в API снаружи.
Что нужно
- Сервер на tanaka.host с Ubuntu 22.04/24.04 или Debian 12. GPU на VPS нет, всё считает процессор. Память решает, какие модели влезут, количество ядер — как быстро они ответят. Для моделей до ~8 миллиардов параметров разумный минимум — 4 vCPU и 8 ГБ.
- Доступ по SSH — как подключиться.
- Реалистичные ожидания: на CPU модели 1B–4B годятся для чата, классификации, выжимок и ботов. Большие запускаются, но медленно.
Сколько памяти нужно
Модель должна поместиться в RAM вместе с системой и самой Ollama. Правило: размер скачивания плюс 1–2 ГБ. Размеры ниже — из каталога Ollama для стандартных 4-битных тегов.
| Модель | Размер | Памяти на сервере |
|---|---|---|
gemma3:270m, qwen3:0.6b |
0,3–0,5 ГБ | 2 ГБ |
gemma3:1b, llama3.2:1b, qwen3:1.7b |
0,8–1,4 ГБ | 4 ГБ |
llama3.2:3b, qwen3:4b, gemma3:4b |
2,0–3,3 ГБ | 8 ГБ |
qwen3:8b |
5,2 ГБ | 8 ГБ |
gemma3:12b, qwen3:14b |
8,1–9,3 ГБ | 16 ГБ |
gemma3:27b |
17 ГБ | 24 ГБ, на CPU медленно |
Контекст тоже ест память. Длинное окно контекста требует RAM сверх модели. Если модель влезает впритык, не увеличивайте контекст.
1. Подготовка сервера
ssh root@YOUR_SERVER_IP
apt update && apt upgrade -y
Установщик Ollama качает архив .tar.zst, поэтому нужен zstd:
apt install -y zstd
2. Установка Ollama
curl -fsSL https://ollama.com/install.sh | sh
Скрипт создаёт системного пользователя ollama, ставит одноимённую службу systemd и запускает её. На сервере без видеокарты он напишет, что NVIDIA/AMD GPU не найдена и Ollama будет работать в режиме CPU — это ожидаемо.
ollama -v
systemctl status ollama
3. Первая модель
gemma3:1b — хороший первый тест на любом сервере от 4 ГБ:
ollama pull gemma3:1b
ollama run gemma3:1b
Напишите вопрос, Enter; выход — /bye. Базовые команды:
ollama list # скачанные модели
ollama ps # загруженные в память
ollama rm gemma3:1b
Модели хранятся в /usr/share/ollama/.ollama/models. Полный справочник — команды Ollama.
4. API на localhost
API слушает 127.0.0.1:11434, только внутри сервера:
curl http://localhost:11434/api/chat -d '{
"model": "gemma3:1b",
"messages": [{ "role": "user", "content": "Why is the sky blue?" }],
"stream": false
}'
Программы на том же сервере — бот, n8n, OpenClaw — ходят на http://localhost:11434 напрямую, больше ничего не нужно.
Не открывайте порт 11434 в интернет. У API Ollama нет аутентификации. Поставите
OLLAMA_HOST=0.0.0.0и откроете порт — любой сможет грузить ваш процессор и ваши модели. Используйте один из двух вариантов ниже.
5. Вариант А: SSH-туннель для себя
Если API нужен только вам, пробросьте порт. На своём компьютере:
ssh -L 11434:127.0.0.1:11434 root@YOUR_SERVER_IP
Пока сессия открыта, http://localhost:11434 на вашем компьютере ведёт к Ollama на сервере. Десктопные чаты и редакторы кода с поддержкой Ollama используют этот адрес как есть.
6. Вариант Б: Caddy с HTTPS и паролем
Для доступа с других серверов и сервисов — Ollama за Caddy с basic auth. Нужен домен, например ollama.example.com, с A-записью на IP сервера.
Caddy из официального репозитория:
apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
chmod o+r /etc/apt/sources.list.d/caddy-stable.list
apt update
apt install -y caddy
Хеш пароля — команда спросит пароль и напечатает хеш:
caddy hash-password
Замените содержимое /etc/caddy/Caddyfile:
ollama.example.com {
basic_auth {
apiuser PASTE_THE_HASH_HERE
}
reverse_proxy 127.0.0.1:11434 {
header_up Host localhost:11434
}
}
Строка header_up повторяет пример из документации Ollama, которая ждёт в заголовке Host localhost:11434. Примените конфиг и откройте веб-порты:
systemctl reload caddy
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443
ufw enable
Caddy получит сертификат Let’s Encrypt при первом запросе. Проверка с любой машины:
curl -u apiuser:YOUR_PASSWORD https://ollama.example.com/api/tags
Сама Ollama по-прежнему слушает только localhost, так что домен с паролем — единственный вход. Про брандмауэр подробнее — UFW и firewalld.
Держать модель в памяти дольше
По умолчанию Ollama выгружает модель через 5 минут после последнего запроса, и следующий запрос ждёт повторной загрузки. Если памяти хватает:
systemctl edit ollama.service
Под [Service]:
[Service]
Environment="OLLAMA_KEEP_ALIVE=24h"
systemctl daemon-reload
systemctl restart ollama
Юнит-файл установщика не правьте — обновление его перезапишет, override переживёт.
Обновление
Повторный запуск скрипта заменяет бинарник, модели остаются:
curl -fsSL https://ollama.com/install.sh | sh
Логи — journalctl -e -u ollama.
Ollama ставится одной командой и нормально работает на CPU с моделями до нескольких миллиардов параметров. API держите на localhost, себе — туннель, другим сервисам — Caddy с паролем, память выбирайте по размеру модели. Рассуждающие модели DeepSeek и чат в браузере через Open WebUI — в статье DeepSeek R1 через Ollama.