← Все статьи
Полезные статьи

VPS для нейросетей и автоматизации: n8n, API, локальные модели

Как развернуть на VPS n8n, подключить API нейросетей и что реально работает из локальных моделей на процессоре — с честными цифрами по скорости и памяти.

Под «сервером для нейросетей» понимают две совершенно разные задачи, и путаница между ними — причина большинства неудачных покупок.

Первая задача — оркестрация. Сервер принимает вебхуки, дёргает API нейросетей, складывает результаты в базу, отправляет ответы в мессенджер. Вся тяжёлая работа происходит на стороне OpenAI или Anthropic, а ваш сервер только ходит по сети и обрабатывает JSON. Ресурсов такому серверу нужно немного.

Вторая задача — запуск моделей у себя. Здесь всё считается на вашем железе, и требования вырастают на порядок.

Разбираем обе — и сразу с реальными цифрами, чтобы не пришлось разочаровываться после оплаты.

Почему не на домашнем компьютере

Автоматизацию часто начинают собирать локально, и упираются в одно и то же:

  • Вебхуки. Чтобы Telegram, CRM или платёжный сервис могли постучаться к вашему сценарию, нужен постоянный публичный адрес с HTTPS. Туннели вроде ngrok меняют адрес при каждом перезапуске.
  • Расписание. Сценарий «каждый день в 9 утра» не работает, если ноутбук в это время закрыт.
  • Стабильный IP. Часть сервисов привязывает ключи к адресу, и домашний динамический IP для этого не подходит.

Отсюда простое правило: как только в автоматизации появляется слово «автоматически», ей нужен сервер.

Сценарий 1. n8n и вызовы API

n8n — визуальный конструктор сценариев: блоки соединяются стрелками, между ними ходят данные. Типичный сценарий — «пришло сообщение в Telegram → отправить в модель → сохранить ответ в таблицу → ответить пользователю».

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

n8n сам по себе нетребователен — основная нагрузка это ожидание ответов от внешних API.

Нагрузка Тариф
До 10 сценариев, десятки запусков в день Лёгкий — 2 ядра, 4 ГБ
Десятки сценариев, очереди, отдельная база Оптимальный — 4 ядра, 8 ГБ
Сотни запусков в час, обработка файлов Бизнес — 8 ядер, 16 ГБ

На «Старте» с 2 ГБ n8n запускается, но памяти впритык: Node.js под нагрузкой легко выбирает гигабайт, а рядом должна жить база. Для боевых сценариев берите от 4 ГБ.

Установка

n8n ставится контейнером — так проще обновлять и не тянуть Node.js в систему. Перед этим установите Docker и общий reverse proxy: Docker на VPS.

mkdir -p /opt/n8n && cd /opt/n8n
nano docker-compose.yml
services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    environment:
      - N8N_HOST=n8n.example.com
      - WEBHOOK_URL=https://n8n.example.com/
      - N8N_PROTOCOL=https
      - GENERIC_TIMEZONE=Europe/Moscow
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD}
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=n8n-db
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=${DB_PASSWORD}
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - web
      - internal
    depends_on:
      - n8n-db

  n8n-db:
    image: postgres:16
    container_name: n8n-db
    restart: unless-stopped
    environment:
      POSTGRES_DB: n8n
      POSTGRES_USER: n8n
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - n8n_db:/var/lib/postgresql/data
    networks:
      - internal

volumes:
  n8n_data:
  n8n_db:

networks:
  web:
    external: true
  internal:

Пароли — в отдельный файл:

nano .env
N8N_PASSWORD=длинный_пароль
DB_PASSWORD=другой_длинный_пароль
chmod 600 .env
docker compose up -d

Добавьте домен в Caddyfile вашего proxy:

n8n.example.com {
    reverse_proxy n8n:5678
}
docker exec caddy caddy reload --config /etc/caddy/Caddyfile

Через минуту интерфейс открывается по https://n8n.example.com.

Про базу отдельно: по умолчанию n8n хранит всё в SQLite, и это нормально для десятка сценариев. Но при активных запусках история выполнений быстро раздувает файл, и интерфейс начинает тормозить. PostgreSQL из примера выше снимает этот вопрос сразу.

Не выставляйте n8n наружу без защиты

Открытый интерфейс n8n — это ваши ключи от API, CRM, почты и базы в чужих руках. Минимум — базовая авторизация из конфига выше плюс длинный пароль.

Если сценарии не принимают вебхуки снаружи, ещё надёжнее вообще не публиковать интерфейс в интернет и ходить в него через SSH-туннель:

ssh -L 5678:localhost:5678 deploy@ВАШ_IP

После этого n8n доступен на http://localhost:5678 у вас на компьютере — и больше ни для кого.

И общая гигиена сервера, на котором лежат все ключи: 7 шагов безопасности.

Ключи от API

Ключи вносятся в n8n через раздел Credentials — они шифруются и не попадают в экспортируемые сценарии. Не вставляйте их прямо в ноды кода: экспортированный сценарий легко уходит в чат или репозиторий вместе с ключом.

Полезная деталь: у большинства провайдеров API ключ можно ограничить лимитом расходов. Поставьте его сразу — это спасает от сценария, зациклившегося в бесконечном вызове.

Сценарий 2. Локальные модели на процессоре

Здесь нужна честность, которой обычно не хватает в статьях на эту тему.

Наши серверы — без видеокарт. Модели на них запускаются только на процессоре. Это работает, но медленнее, чем на GPU, — и годится не для всякой задачи.

Что реально получается

Замеры на конфигурации с Ryzen 9 7950X, модели в квантовании Q4:

Модель Нужно памяти Скорость на CPU Для чего годится
3B (Llama 3.2, Qwen 2.5) ~4 ГБ 10–15 токенов/с классификация, короткие ответы
7–8B (Llama 3.1, Qwen 2.5) ~8 ГБ 4–7 токенов/с фоновая обработка текста
14B ~12 ГБ 2–3 токена/с терпимо только для пакетных задач
30B и больше 20 ГБ+ меньше 1 токена/с на CPU непрактично

Для ориентира: 5 токенов в секунду — это примерно абзац текста за полминуты.

Вывод простой. Для интерактивного чата, где ответ ждут здесь и сейчас, CPU не подходит — пользователь устанет ждать. Для фоновых задач, где ответ нужен «когда-нибудь в ближайшие минуты», всё отлично работает.

Что хорошо идёт на процессоре

Не всякая работа с ИИ — это генерация текста. На CPU отлично себя чувствуют задачи, где модель маленькая или работает пакетами:

  • Эмбеддинги для поиска по документам — быстро даже на слабом сервере
  • Векторная база (Qdrant, ChromaDB) — обычная работа с памятью и диском, GPU не нужен вовсе
  • Распознавание речи через Whisper в небольших моделях — файл на 10 минут обрабатывается за пару минут
  • Классификация и разметка — короткий ответ модели на 3B получается почти мгновенно
  • Ночная пакетная обработка — тысяча описаний товаров, сгенерированных за ночь, никого не торопит

Установка Ollama

curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen2.5:7b
ollama run qwen2.5:7b

Модели хранятся в /usr/share/ollama/.ollama/models и весят от 2 до 20 ГБ. На тарифах с диском 10–20 ГБ разместится одна небольшая модель, не больше — считайте место заранее.

Из n8n или своего кода Ollama доступна по HTTP:

curl http://localhost:11434/api/generate -d '{
  "model": "qwen2.5:7b",
  "prompt": "Составь короткое описание товара: беспроводные наушники",
  "stream": false
}'

Важно: у Ollama нет встроенной авторизации. Порт 11434 не должен быть открыт наружу — держите его только на localhost и не добавляйте в правила firewall. Открытая в интернет Ollama — это бесплатный вычислительный ресурс для всех желающих, и счёт за трафик придёт вам.

Когда локальная модель оправдана

Считайте по деньгам и по требованиям.

Облачные API дешевле, быстрее и умнее — если объёмы небольшие. Сервер под локальную модель стоит фиксированные 40–80 € в месяц, и эту сумму имеет смысл платить, когда:

  • данные нельзя отдавать наружу по требованиям заказчика
  • объёмы стабильно большие, и счета за API давно перевалили за стоимость сервера
  • нужна полная независимость от лимитов и изменений в тарифах провайдера
  • задача фоновая, и скорость в несколько токенов в секунду устраивает

Во всех остальных случаях связка «лёгкий VPS + API» выйдет дешевле и работать будет лучше.

Гибридная схема — то, что чаще всего нужно

На практике оптимальный вариант выглядит так: небольшой сервер держит всю автоматизацию, а тяжёлые вычисления уходят в облако.

Тариф «Оптимальный» (4 ядра, 8 ГБ, 20 €):

  • n8n с базой PostgreSQL — сценарии и расписания
  • Telegram-бот как точка входа для пользователей — как запустить бота 24/7
  • Qdrant с эмбеддингами для поиска по своим документам
  • вызовы API моделей для генерации
  • локальная модель на 3B для мелочи: классификация запроса, определение языка, разметка

Такой сервер работает круглосуточно, стоит фиксированную сумму и не требует ни видеокарты, ни постоянного присмотра.

Что ещё учесть

Трафик. Вызовы API — это в основном текст, и объёмы незаметные. А вот если сценарий гоняет видео или большие файлы, счёт пойдёт на сотни гигабайт — смотрите на канал и включённый трафик.

Дисковое место. История выполнений n8n растёт постоянно. Настройте автоочистку через переменную EXECUTIONS_DATA_MAX_AGE (в часах), иначе через полгода упрётесь в диск.

Бэкапы. Сценарии, которые собирались неделями, теряются вместе с томом n8n_data. Копия делается за десять минут: Бэкапы VPS.

Лимиты расходов. Ставьте потолок на каждом API-ключе. Зацикленный сценарий способен потратить за ночь месячный бюджет.

Частые вопросы

Можно ли на вашем VPS запустить Stable Diffusion? Технически да, практически — нет смысла: без видеокарты одна картинка считается несколько минут. Генерация изображений — единственная задача, где GPU действительно обязателен.

Какой тариф взять под n8n? «Лёгкий» с 4 ГБ — для старта и десятка сценариев. «Оптимальный» с 8 ГБ — когда сценариев много, они работают параллельно и рядом живёт база.

Сколько сценариев потянет один сервер? Дело не в количестве, а в одновременности. Сотня сценариев по расписанию раз в день — нагрузки почти нет. Пять сценариев, обрабатывающих вебхуки непрерывно, нагрузят сервер сильнее.

Нужен ли домен для n8n? Да, если сценарии принимают вебхуки — сервисы требуют HTTPS-адрес. Если всё работает по расписанию, можно обойтись SSH-туннелем без домена вовсе.

Что лучше: n8n или свой код? n8n быстрее собрать и проще менять без программиста. Свой код на Python выигрывает, когда логика нестандартная или нагрузка высокая. Их часто совмещают: n8n как диспетчер, свой сервис для тяжёлых кусков.

Модель занимает всю память, что делать? Берите квантование поменьше (Q4 вместо Q8) или модель поменьше. Ориентир простой: модели нужно примерно столько гигабайт памяти, сколько у неё миллиардов параметров при квантовании Q4 — плюс запас на систему.

Сохранятся ли данные при перезапуске сервера? Да, если сервисы описаны в docker compose с томами и строкой restart: unless-stopped. Тогда после перезагрузки всё поднимается автоматически.

Итог

Если сервер нужен под автоматизацию и вызовы API — берите 4–8 ГБ и не переплачивайте: вся тяжёлая работа происходит не у вас.

Если планируете крутить модели локально — считайте память под конкретную модель и заранее примите, что на процессоре это 3–7 токенов в секунду. Для фоновых задач этого достаточно, для живого чата — нет.

Начать проще всего с «Оптимального» за 20 €: на нём помещается полноценная связка из n8n, бота, векторной базы и небольшой локальной модели. Расширить конфигурацию можно позже, не перенося ничего заново.

Выбрать сервер →

Команда Puws.Cloud
Puws.Cloud
Начать

СЕРВЕР ДЛЯ ВАШЕГО ПРОЕКТА

Начните
с тарифа.

ПОЛЕЗНОЕ О СЕРВЕРАХИнструкции
и советы.
Открыть блог
Наш Аптайм