# Как подключить n8n к локальной языковой модели: пошаговая настройка приватной автоматизации через Ollama

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-podklyuchit-n8n-k-lokalnoy-yazykovoy-modeli-poshago.html

## TL;DR
- Время выполнения: 30–40 минут (если Docker и n8n уже стоят)
- Уровень сложности: Intermediate
- Понадобится:
  - Ollama с загруженной локальной моделью (актуальный тег и размер сверьте в каталоге моделей Ollama)
  - n8n: self-hosted через `npx n8n` или в Docker
  - `curl` для проверки HTTP-API
  - Свободные порты: 11434 (Ollama), 5678 (n8n по умолчанию)
  - Запас ОЗУ/VRAM под выбранную модель

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.org/guides/img/kak-podklyuchit-n8n-k-lokalnoy-yazykovoy-modeli-poshago-ru-1.jpg?v=1792788992)

- ОС: Linux, macOS или Windows 10/11. На Windows Ollama ставится нативно, n8n удобнее держать в Docker через WSL2.
- ОЗУ/VRAM: объём целиком определяется размером модели и квантизацией — прикиньте по таблице [Сколько RAM и VRAM нужно для локальной ИИ-модели](https://ai-release.org/guides/localnye-ii-modeli-skolko-ram-i-vram.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).
- Диск: место под веса модели плюс запас. Проверьте: `df -h`.
- Права: администратор для установки Ollama и Docker.
- Node.js — если запускаете n8n через `npx`, а не в контейнере.
- Порты не заняты: `ss -ltnp | grep -E '11434|5678'` (пустой вывод — хорошо).
- Понимание главного риска: n8n и Ollama должны видеть друг друга по сети. Если n8n в контейнере, `localhost` указывает на сам контейнер, а не на хост — это разбирается в Шаге 2.

## Шаг 1. Установка Ollama и загрузка модели

**Что сделать:** поставить Ollama, убедиться, что HTTP-API отвечает, скачать одну модель.

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

**Зачем:** Ollama — локальный рантайм (программа, которая держит модель в памяти и отдаёт её по HTTP). После установки она поднимает сервис на `127.0.0.1:11434`, и n8n общается с моделью обычными HTTP-запросами, без облака и ключей.

**Как проверить:** сервис жив и отдаёт список моделей.

```bash
curl -s http://localhost:11434/api/tags
```

Ожидаемый вывод на чистой установке:

```json
{"models":[]}
```

**Пример:** загрузка модели и проверка списка.

```bash
ollama pull llama3.1
ollama list
```

`ollama list` печатает таблицу с колонками `NAME`, `ID`, `SIZE`, `MODIFIED`. Например, строка вида:

```
NAME               ID              SIZE      MODIFIED
llama3.1:latest    <id>            <размер>  <дата>
```

Значения `<id>`, `<размер>`, `<дата>` у вас будут свои — тег `llama3.1` взят как пример, актуальное имя и размер сверьте в каталоге моделей Ollama.

**Как проверить генерацию:**

```bash
ollama run llama3.1 "Ответь одним словом: работает?"
```

На экране появится короткий ответ (например, `Работает`), после чего вернётся приглашение ввода — модель отвечает, память хватает.

## Шаг 2. Подключение n8n к Ollama
![Иллюстрация к разделу «Шаг 2. Подключение n8n к Ollama»](https://ai-release.org/guides/img/kak-podklyuchit-n8n-k-lokalnoy-yazykovoy-modeli-poshago-ru-2.jpg?v=1792788997)


**Что сделать:** запустить n8n, создать credential (сохранённые учётные данные подключения) типа Ollama с правильным Base URL и собрать минимальный workflow (рабочий поток из узлов).

**Зачем:** n8n не «встраивает» модель, а вызывает её HTTP-эндпоинт. Всё, что нужно, — указать адрес, по которому n8n дотянется до Ollama.

**Вариант A — n8n на хосте:**

```bash
npx n8n
```

**Вариант B — n8n в Docker.** Сохраните `docker-compose.yml`:

```yaml
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    ports:
      - "5678:5678"
    volumes:
      - n8n_data:/home/node/.n8n
    extra_hosts:
      - "host.docker.internal:host-gateway"
volumes:
  n8n_data:
```

Запуск: `docker compose up -d`.

**Зачем нужен `extra_hosts`:** строка `host.docker.internal:host-gateway` создаёт внутри контейнера имя, указывающее на хост-машину. Без неё `localhost` внутри контейнера — это сам контейнер, где Ollama нет.

**Как проверить, что n8n поднялся:**

```bash
curl -s http://localhost:5678/healthz
```

Ожидаемо: `{"status":"ok"}`. Откройте `http://localhost:5678` — должен появиться интерфейс n8n.

**Дальше в интерфейсе:**
1. `Credentials` → `Add credential` → в поиске `Ollama`.
2. В поле Base URL укажите:
   - `http://localhost:11434` — если n8n запущен на хосте;
   - `http://host.docker.internal:11434` — если n8n в Docker.
3. Сохраните. n8n выполнит проверку соединения — успехом считается отсутствие красной ошибки и подтверждение подключения (точную формулировку интерфейса сверьте с вашей версией n8n).

**Пример проверки до похода в UI** — Ollama отдаёт OpenAI-совместимый эндпоинт:

```bash
curl -s http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"llama3.1","messages":[{"role":"user","content":"Ответь одним словом: работает?"}]}'
```

В ответе будет JSON с полем `choices[0].message.content`. Если этот запрос проходит, а credential в n8n — нет, проблема в адресе (см. раздел про ошибки).

**Сборка workflow:** добавьте узел-триггер (например, `Chat Trigger` или `Manual Trigger`), затем узел `Ollama Chat Model` и свяжите его с `Basic LLM Chain` либо с агентом. В узле модели выберите созданный credential и ту же модель, что загружали через `ollama pull`.

## Шаг 3. Проверка работы и финальный результат
![Иллюстрация к разделу «Шаг 3. Проверка работы и финальный результат»](https://ai-release.org/guides/img/kak-podklyuchit-n8n-k-lokalnoy-yazykovoy-modeli-poshago-ru-3.jpg?v=1792789002)


**Что сделать:** прогнать workflow вручную и убедиться, что ответ пришёл от локальной модели.

**Зачем:** это end-to-end проверка всей цепочки: браузер → n8n → HTTP → Ollama → модель → обратно.

**Как проверить:** нажмите `Execute workflow` и отправьте тестовое сообщение, например `Сколько будет 2+2?`. В панели результата узла появится JSON с ответом модели (поле с текстом ответа зависит от типа узла — сверьтесь с выводом на экране). В списке executions (`Executions` в левом меню) запуск должен иметь статус `Success`.

**Пример проверки структурированного ответа** — попросите модель вернуть JSON, это часто нужно для автоматизации:

```bash
curl -s http://localhost:11434/api/chat -d '{
  "model": "llama3.1",
  "stream": false,
  "format": "json",
  "messages": [{"role": "user", "content": "Верни JSON вида {\"status\":\"ok\"}"}]
}'
```

Параметр `format: "json"` заставляет модель вернуть валидный JSON — его можно сразу разбирать следующим узлом n8n.

**Финальный чек-лист:**

- [ ] `ollama list` показывает загруженную модель
- [ ] `curl http://localhost:11434/api/tags` возвращает JSON без ошибки
- [ ] `curl http://localhost:5678/healthz` возвращает `{"status":"ok"}`
- [ ] Credential Ollama в n8n сохраняется без ошибки соединения
- [ ] Ручной запуск workflow возвращает текст ответа
- [ ] В `Executions` запуск отмечен как `Success`

Тот же стек (локальная модель + n8n-подобная автоматизация) разбирается в гайде [Как собрать ИИ-помощника для интернет-магазина на локальной модели](https://ai-release.org/guides/kak-sobrat-ii-pomoschnika-dlya-internet-magazina-na-lok.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide) — полезно, когда базовая связка уже работает.

## Возможные проблемы и решения

**Проблема. n8n в Docker не видит Ollama**

- Ошибка: `connect ECONNREFUSED 127.0.0.1:11434`
- Причина: n8n в контейнере обращается к `127.0.0.1`, то есть к самому контейнеру, где Ollama не запущена.
- Решение: замените Base URL в credential на `http://host.docker.internal:11434` и убедитесь, что в `docker-compose.yml` есть `extra_hosts` с `host.docker.internal:host-gateway`. Перезапустите: `docker compose up -d`. Проверка изнутри контейнера:
  ```bash
  docker compose exec n8n curl -s http://host.docker.internal:11434/api/tags
  ```

**Проблема. Модель не найдена при запуске workflow**

- Ошибка: `model "llama3.1" not found, try pulling it first`
- Причина: в узле n8n указан тег, который не загружен локально (например, вы скачали `llama3.1:8b`, а в узле стоит другой тег).
- Решение: сверьте имя в `ollama list` и впишите его в узел посимвольно. Если модели нет — `ollama pull <точный-тег>`, затем повторите запуск.

**Проблема. Модель падает при загрузке**

- Ошибка: `signal: killed` (в логах Ollama), в n8n — таймаут или пустой ответ.
- Причина: веса модели не помещаются в доступную RAM/VRAM, процесс убивает OOM-killer.
- Решение: возьмите модель меньшего размера или более сильную квантизацию — расчёт по таблице [Сколько RAM и VRAM нужно для локальной ИИ-модели](https://ai-release.org/guides/localnye-ii-modeli-skolko-ram-i-vram.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide). Проверьте, что сейчас в памяти: `ollama ps`.

## Резюме и следующие шаги
Связка работает, когда `ollama list` показывает модель, `curl http://localhost:11434/api/tags` отвечает JSON, а credential в n8n сохраняется без ошибки соединения. Дальше добавляйте в workflow узлы обработки (парсинг JSON, запись в базу, отправка в мессенджер) и проверяйте каждый шаг отдельным запуском.

## FAQ

**Можно ли подключить n8n Cloud к Ollama на моём компьютере?**
По умолчанию нет: n8n Cloud работает на своих серверах и не имеет доступа к вашему `localhost`. Нужен либо self-hosted n8n рядом с Ollama, либо публикация эндпоинта через туннель с защитой — конкретные требования сверьте с документацией n8n.

**Нужен ли API-ключ для Ollama?**
Нет, локальный сервис на `127.0.0.1:11434` по умолчанию отвечает без авторизации. Если вы выставляете порт наружу, закройте его прокси с аутентификацией и файрволом.

**Какая модель подойдёт для машины с небольшим объёмом памяти?**
Зависит от размера и квантизации: чем сильнее сжатие, тем меньше памяти нужно и тем ниже качество. Ориентируйтесь на таблицу RAM/VRAM по ссылке выше, а точный размер конкретного тега смотрите в `ollama list`.

**Обязательно ли использовать узел Ollama, или хватит OpenAI-совместимого?**
Ollama отдаёт эндпоинт `/v1/chat/completions`, поэтому подойдёт и credential/узел OpenAI-типа с Base URL на ваш локальный адрес. Если позже понадобится облачная модель, схема выдачи доступа разобрана в гайде [Как подключить модели OpenAI через Google Cloud](https://ai-release.org/guides/kak-podklyuchit-modeli-openai-cherez-google-cloud-posha.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).
