n8n: установка, настройка и интеграция с Python, Node.JS и PHP

n8n — open-source платформа для автоматизации рабочих процессов (workflow), позволяющая создавать сложные цепочки задач без глубоких знаний программирования.

В статье рассмотрим:

- Установку локально и в облакею.

- Интеграцию с Python, Node.js и PHP.

- Примеры автоматизаций.

- Интеграцию с AI Mistral.

Установка n8n

Локальная установка n8n

Нам потребуется Docker, проверьте установку:

docker --version

Шаги установки:

1. Создайте том данных:

sudo docker volume create n8n_data

2. Запустите контейнер:

sudo docker run -d --name n8n \ -p 5678:5678 \ -v n8n_data:/home/node/.n8n \ docker.n8n.io/n8nio/n8n

После запуска откройте: `http://localhost:5678`

n8n: установка, настройка и интеграция с Python, Node.JS и PHP

Установка на удаленном сервере

Развертывание мы произведем в облаке Amvera, так как в нем n8n предоставляется как преднастроенный сервис с бесплатным доменом (он нам нужен), настроенными переменными и проксированием до заблокированных в РФ LLM (OpenAI, Gemini, Claude и др.).

1. Зарегистрируйтесь в Amvera по ссылке выше.

2. Выбираем n8n в плитке на главной странице:

n8n: установка, настройка и интеграция с Python, Node.JS и PHP

3. Введите название для проекта и выберете тариф.

Готово, через 30 секунд запустится n8n с выделенным доменом и настроенными основными переменными.

Настройка n8n

Первоначальная настройка

1. Откройте n8n (локально: `localhost:5678`, в облаке: ваш домен)

2. Заполните данные администратора:

- Email

- Имя/Фамилия

- Пароль

3. По желанию вы можете получить бесплатный лицензионный ключ:

- Введите email → "Send me a free license key"

- Активируйте в разделе Settings → Usage

Настройка для HTTP

1. Создайте новый workflow - "Start from scratc"

2. Добавьте триггер: Webhook - On webhook call

3. Настройте:

- HTTP Method: POST

- Path: `/n8n` (пример)

- Respond Mode: "Using 'Respond to Webhook' node"

n8n: установка, настройка и интеграция с Python, Node.JS и PHP

4. Добавьте обработчик: Core - Respond to Webhook

5. Настройте ответ:

n8n: установка, настройка и интеграция с Python, Node.JS и PHP

Примеры использования

Пример на Python

В примере на Python мы сделаем калькулятор. Суть: отправляем выражение через POST, n8n делает вычисление, возвращаем результат.

Workflow:

1. Добавьте Core - Code node между Webhook и Respons:

```javascript return { result: eval($input.first().json.body.expression) };

Клиент (Python):

python import requests while True: expression = input("Введи выражение: ") response = requests.post("http://localhost:5678/webhook/n8n", json={"expression": expression}) print(response.text)

Запустим код и посмотрим результат:

n8n: установка, настройка и интеграция с Python, Node.JS и PHP

Пример на PHP

В примере на PHP мы сделаем валидацию данных. Суть: отправляем данные через POST, n8n проверяет данные, возвращаем результат.

Workflow (Code node):

javascript let errors = {}; let isValid = true; if (!$input.first().json.body.name || $input.first().json.body.name.trim() === '') { errors.name = "Имя обязательно"; isValid = false; } if (!$input.first().json.body.email || !/^\S+@\S+\.\S+$/.test($input.first().json.body.email)) { errors.email = "Некорректный email"; isValid = false; } return { result: { json: { status: isValid ? "Валиден" : "Ошибки", errors, originalData: $input.first().json.body } } };

Клиент (PHP):

php $webhookUrl = 'http://localhost:5678/webhook/n8n'; $data = ['name' => 'test', 'email' => 'test@gmail.com']; $ch = curl_init($webhookUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'Content-Length: ' . strlen(json_encode($data)), ]); $response = curl_exec($ch); curl_close($ch); $decodedResponse = json_decode($response, true); echo "Отправленные данные:<br>"; echo "Имя: " . $decodedResponse['json']['originalData']['name'] . "<br>"; echo "Почта: " . $decodedResponse['json']['originalData']['email'] . "<br><br>"; echo "Статус: " . $decodedResponse['json']['status'] . "<br><br>"; if ($decodedResponse['json']['status'] === "Ошибки" && isset($decodedResponse['json']['errors'])) { echo "Обнаружены ошибки:<br>"; $errors = $decodedResponse['json']['errors']; if (isset($errors['name'])) { echo "[Имя]: " . $errors['name'] . "<br>"; } if (isset($errors['email'])) { echo "[Почта]: " . $errors['email'] . "<br>"; } }

Можем зайти на нашу страницу и как видите все работет нормально:

n8n: установка, настройка и интеграция с Python, Node.JS и PHP

Пример на Node.js

Примером на node.js будет фильтр запрещенных слов. Суть: отправляем текст, n8n проверяет на наличие плохих слов, возвращаем результат.

Workflow (Code node):

Javascript const badWords = ["дурак", "лох", "дибил"]; const text = $input.first().json.body.text; const hasBadWords = badWords.some(word => text.includes(word)); return { result: { isClean: !hasBadWords, originalText: text, badWordsFound: hasBadWords ? badWords.filter(word => text.includes(word)) : [] } };

Клиент (Node.js):

javascript const axios = require("axios"); async function checkText(text) { const N8N_URL = "http://localhost:5678/webhook/n8n"; const response = await axios.post(N8N_URL, { text }); return response.data; } function displayResults(results) { if (results && typeof results === 'object' && results.hasOwnProperty('isClean')) { const { isClean, originalText, badWordsFound } = results; console.log(`Исходный текст: "${originalText}"`); if (isClean) { console.log("Статус: Текст чистый, плохих слов не найдено"); } else { console.log("Статус: Найдены плохие слова!"); console.log(`Количество плохих слов: ${badWordsFound.length}`); console.log(`Список плохих слов: ${badWordsFound.join(", ")}`); } } } checkText("Мало того что дурак так еще и лох").then(displayResults);

Перед запуском установим библиотеку командой `npm install axios`

n8n: установка, настройка и интеграция с Python, Node.JS и PHP

Интеграция n8n с Mistral AI

Мы интегрируем нейросеть Mistral в телеграмм-бота на C# с помощью n8n. Перед тем как начать, нам нужно получить токен.

1. Зарегистрируйтесь на Mistral

2. Создайте агента Сreate an agent

3. Перейдите в раздел API Keys

4. Создайте и скопируйте API-ключ (звездочки наложены):

n8n: установка, настройка и интеграция с Python, Node.JS и PHP

Теперь нужно создать credentials для работы с созданной моделью. Для этого в правом верхнем углу нажмите Create credentials. В списке найдите Mistral Cloud API. В открывшемся окне вставьте скопированный ключ и сохраните.

Осталось настроить workflow.

1. Добавляем Webhook:

- Method: POST

- PATH: n8n

- Respond: Using 'Respond to Webhook' Node

2. Добавляем AI Agent:

- Source for Prompt: Define below

- Prompt: `{{ $json.body.text }}`

3. Подключаем Chat Model к созданному агенту:

- Credential to connect with: Mistral Cloud API

- Model: mistral-large-2411

4. Добавляем Respond to Webhook

Вот так выглядит готовый workflow:

n8n: установка, настройка и интеграция с Python, Node.JS и PHP

Можем приступить к созданию бота. Для начала введите эти команды по очередности:

bash dotnet new console -n tg-bot dotnet add package Telegram.Bot dotnet add package Newtonsoft.Json

Переходим в папку с кодом и редактируем файл `Program.cs`:

csharp using Telegram.Bot; using Telegram.Bot.Types; using Telegram.Bot.Types.Enums; using System.Text; using var cts = new CancellationTokenSource(); var bot = new Telegram.Bot.TelegramBotClient("TOKEN"); var http = new HttpClient(); bot.OnMessage += OnMessage; async Task OnMessage(Message msg, UpdateType type) { if (msg.Text.StartsWith('/')) { if (msg.Text == "/start") { await bot.SendMessage(msg.Chat.Id, "Привет! Я чат-бот с AI Mistral. Просто напиши мне вопрос или задачу и я с радостью помогу тебе решить его."); } return; } string url = "https://localhost:5678/webhook-test/ai"; // замените на свой url var payload = new { text = msg.Text }; var content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json"); var response = await http.PostAsync(url, content); string responseBody = await response.Content.ReadAsStringAsync(); var result = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(responseBody); await bot.SendMessage(msg.Chat.Id, quot;Ответ: {result.output}"); } Console.WriteLine("Бот запущен..."); await Task.Delay(-1, cts.Token);

Запустите бота с помощью команды `dotnet run`.

Автоматизируем с помощью n8n

В примере автоматизации мы сделаем бота, который будет отправлять уведомления при заполнении формы, полностью без кода.

Для работы с Telegram Node понадобиться создать credentials Telegram API. Туда вставляем токен бота, полученный в @BotFater. Сохраняем и переходим к настройке workflow.

Создаем новый workflow.

1. Добавляем On form submission. В качестве примера я создам самую простую форму:

n8n: установка, настройка и интеграция с Python, Node.JS и PHP

Перейдите по ссылке в Producrion URL чтобы заполнить форму.

2. Добавляем Telegram Node:

- Credential to connect with: Telegram account

- Resource: Message

- Operation: Send message

- Chat ID: вставьте свой telegram id

- Text:

Новая заявка! Имя: {{ $json['Ваше имя'] }} Возраст: {{ $json['Ваш возраст'] }} Опыт: {{ $json['Ваш опыт разработки на Python (лет)'] }}

Готово! При новых заявках бот будет присылать уведомления.

Деплой бота в Amvera Cloud

Перед тем как начать деплой, мы должны создать конфигуационнный файл `amvera.yml`. Для этого создаем его в рабочем каталоге с ботом и вводим следующее:

meta: environment: csharp toolchain: name: dotnet version: "8.0" build: image: mcr.microsoft.com/dotnet/sdk:8.0 run: image: mcr.microsoft.com/dotnet/sdk:8.0 buildFileName: publish/tg-bot persistenceMount: /data containerPort: "80" servicePort: "80"

Строго говоря, этот файл проще создать в конфигураторе в интерфейсе.

2. Структура проекта будет такой:

tg-bot/

├── Program.cs

├── tg-bot.csproj

├── amvera.yml

├── bin/

└── obj/

Идем В Amvera Cloud и создаем приложение Приложения — Создать приложение. Вводим название и выбираем тариф.

Далее загружаем все файлы, что есть у нас в каталоге, с ботом. В конце будет окно с настройкой конфигуцрации, выглядит оно так:

n8n: установка, настройка и интеграция с Python, Node.JS и PHP

Нажимаем Завершить и ждем когда приложение будет запущено.

Заключение

n8n — мощный инструмент для создания интеграций и автоматизаций. Мы рассмотрели:

- Установку в разных средах

- Примеры интеграций с Python, PHP, Node.js

- Работу с AI Mistral

- Создание ботов и уведомлений

- Деплой решений на удаленный сервер в Amvera Cloud одной кнопкой.

Надеюсь, статья была вам полезна и буду рад обсудить в комментариях любые вопросы!

2 комментария