Главная Веб-разработка n8n: установка, настройка и интеграция с Python, Node.JS и PHP

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

от admin

Подробный туториал по установке и настройки n8n. Примеры интеграции с Python, Node.JS и PHP и взаимодействия с LLM Mistral AI.

092 открытий235 показов

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

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

– Установку локально и в облаке;

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

– Примеры автоматизаций;

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

Установка 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. Вводим название для проекта и выбираем тариф.

Темная сторона open source: как протокол Tea захламляет менеджер пакетов npmtproger.ru

Готово, через 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. Добавьте триггер: WebhookOn webhook call

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

  • HTTP Method: POST
  • Path: `/n8n` (пример)
  • Respond Mode: Using ‘Respond to Webhook’ node

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

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

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

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

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

Пример на Python

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

Workflow:

1. Добавьте CoreCode 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, $"Ответ: {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

Как работает Reinforcement Learning (обучение с подкреплением)tproger.ru

├── tg-bot.csproj

├── amvera.yml

├── bin/

└── obj/

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

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

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

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

Заключение

n8n — мощный инструмент для создания интеграций и автоматизаций. Надеюсь, статья была вам полезна и буду рад обсудить в комментариях любые вопросы!

Похожие статьи