С помощью этого руководства вы научитесь разворачивать no-code платформу n8n на виртуальной машине, настраивать процессы автоматизации и создавать Telegram-бота.
Вы будете использовать следующие сервисы:
Виртуальная машина free tier — сервис, в рамках которого предоставляется бесплатная виртуальная машина с готовой конфигурацией.
Публичный IP-адрес для доступа к машине из интернета и организации работы с Telegram.
Docker — система контейнеризации.
Docker Compose — инструмент для запуска и управления Docker-контейнерами.
n8n — платформа с открытым кодом для автоматизации рабочих процессов и интеграции сервисов. Подходит для экспериментов и пет-проектов.
BotFather — Telegram-бот для создания ботов.
Шаги:
Перед началом работы
Если вы уже зарегистрированы, войдите под своей учетной записью.
1. Разверните ресурсы в облаке
На этом шаге вы создадите бесплатную виртуальную машину и назначите ей публичный IP-адрес с заданными настройками трафика.
Создайте бесплатную виртуальную машину со следующими параметрами:
Название — например currenсу-bot-server.
Публичный образ с Ubuntu 22.04.
Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.
Логин — оставьте значение по умолчанию или укажите новый.
Метод аутентификации — Публичный ключ и Пароль.
Публичный ключ — укажите ключ, созданный ранее.
Пароль — задайте пароль пользователя.
Имя хоста — currenсуbot.
Остальные параметры оставьте по умолчанию или выберите на свое усмотрение.
Убедитесь, что в личном кабинете на странице Инфраструктура → Виртуальные машины отображается виртуальная машина со статусом «Запущена» и назначенным публичным IP-адресом.
Уточните зону доступности, в которой была создана виртуальная машина.
Создайте группу безопасности с названием currency-bot в той же зоне доступности и добавьте в нее правила:
Правила входящего трафика:
Протокол
Порт
Тип источника
Источник
TCP
22
IP-адрес
0.0.0.0/0
TCP
5678
IP-адрес
0.0.0.0/0
Правила исходящего трафика:
Протокол
Порт
Тип адресата
Адресат
TCP
80
IP-адрес
0.0.0.0/0
TCP
443
IP-адрес
0.0.0.0/0
2. Настройте окружение виртуальной машины
На этом шаге вы установите необходимые пакеты и подготовите среду для n8n.
Обновите систему и установите утилиты:
sudo apt update && sudo apt upgrade -ysudo apt install curl wget unzip software-properties-common -yДобавьте настройки DNS для разрешения доменных имен:
Откройте файл /etc/resolv.conf для редактирования:
sudo nano /etc/resolv.confДобавьте следующие настройки и сохраните файл:
nameserver 8.8.8.8nameserver 8.8.4.4Перезагрузите виртуальную машину и подключитесь к ней по SSH.
Подготовьте систему к безопасной установке Docker, добавив официальный репозиторий и настроив механизмы проверки подлинности пакетов:
sudo apt-get install ca-certificates curl -ysudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.ascДобавьте ключ репозитория:
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get updateУстановите Docker, Docker Compose и сопутствующее ПО:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -yДобавьте текущего пользователя виртуальной машины в группу Docker:
Выполните команду:
sudo usermod -aG docker $USERnewgrp dockerПерезагрузите систему.
Проверьте работоспособность Docker:
docker run hello-worldПоявится сообщение, подтверждающее успешность установки и настройки.
ПримечаниеВ некоторых случаях права на использование Docker без префикса sudo не сохраняются и командная строка возвращает ошибку permission denied. В этом случае вы можете продолжить работу с Docker, добавляя в начало каждой команды префикс sudo.
3. Разверните Docker-контейнер с n8n для проекта
На этом шаге вы развернете n8n.
Создайте папку проекта и перейдите в нее:
mkdir ~/n8n && cd ~/n8nСоздайте файл манифеста для Docker-контейнера:
nano docker-compose.ymlВставьте следующую конфигурацию:
services:n8n:image: n8nio/n8n:latestrestart: unless-stoppedports:- "5678:5678"environment:- N8N_BASIC_AUTH_ACTIVE=true- N8N_BASIC_AUTH_USER=admin- N8N_BASIC_AUTH_PASSWORD=adminpass- N8N_SECURE_COOKIE=falsevolumes:- n8n_data:/home/node/.n8nvolumes:n8n_data:Запустите n8n, выполнив команду:
docker compose up -dПроверьте работу n8n.
В браузере перейдите по ссылке http://<IP_address>:5678, где <IP_address> — это публичный IP-адрес вашей виртуальной машины.
Создайте учетную запись n8n или войдите под уже существующей.
После создания учетной записи откроется портал n8n.
4. Зарегистрируйте бота в Telegram
На этом шаге вы зарегистрируете в Telegram нового бота и получите его токен.
В Telegram найдите бота BotFather.
Выполните команду /newbot.
Задайте имя (name) и имя пользователя (username) для бота.
Имя пользователя должно заканчиваться на Bot или _bot.
В результате регистрации BotFather сообщит токен бота. Сохраните его, он понадобится далее.
Убедитесь, что созданный бот отображается в Telegram при поиске по имени.
Откройте диалог с созданным ботом и нажмите Start или напишите в диалог сообщение /start, чтобы запустить его.
В диалог с ботом отправьте любое сообщение, например привет. Если бот не возвращает ответ, отправьте еще несколько сообщений.
В терминале вашей виртуальной машины выполните запрос:
curl https://api.telegram.org/bot<your_token>/getUpdatesПолученный ответ должен выглядеть следующим образом:
{"ok":true,"result":[{"update_id":654369611,"message":{"message_id":2,"from":{"id":989698711,"is_bot":falseСкопируйте и сохраните числовой идентификатор с признаком is_bot — в примере это 989698711.
5. Создайте поток для отправки сообщения на портале n8n
На этом шаге вы создадите рабочий сценарий, в результате которого сервер n8n будет получать актуальный курс валют с сайта ЦБ РФ и отправлять в Telegram.
В браузере перейдите по ссылке http://<IP_address>:5678.
Нажмите Create Workflow.
Добавьте узел, который будет определять расписание отправки сообщений.
Нажмите Add First Step и выберите On a schedule.
В поле Trigger Interval выберите Custom (Cron).
В открывшемся поле введите значение 0 9 * * * для запуска каждый день в 09:00.
В верхней части окна настройки расписания нажмите activate, чтобы включить выполнение запроса по расписанию.
В левом верхнем углу нажмите Back to canvas.
Добавьте узел, который будет получать информацию с сайта ЦБ РФ.
Справа от предыдущего элемента нажмите + и выберите HTTP Request.
В поле URL введите значение: https://www.cbr-xml-daily.ru/daily_json.js. Выполнение этого запроса возвращает данные от ЦБ РФ о курсах валют в формате JSON.
Нажмите Add option и выберите Response.
В поле Response Format выберите JSON.
В левом верхнем углу нажмите Back to canvas.
Добавьте узел, который будет обрабатывать и форматировать полученные данные.
Справа от предыдущего элемента нажмите + и выберите Code → Code in JavaScript.
В поле Code вставьте код:
// Receive data from the previous nodeconst response = $input.all()[0].json;// Extract exchange ratesconst usdRate = response.Valute.USD.Value;const eurRate = response.Valute.EUR.Value;// Format the resultreturn {text: `💱 Курс валют от ЦБ РФ:🇺🇸 USD: ${usdRate.toFixed(2)}₽🇪🇺 EUR: ${eurRate.toFixed(2)}₽`};В левом верхнем углу нажмите Back to canvas.
Добавьте узел, который будет отправлять сообщение в Telegram.
Справа от предыдущего элемента нажмите + и выберите Telegram → Send a text message.
В поле Credential to connect with выберите Create new credentials.
В поле Access Token вставьте API-токен вашего бота, полученный от BotFather.
В правом верхем углу нажмите Save и закройте окно добавления токена.
В поле Resource выберите Message.
В поле Operation выберите Send Message.
В поле Chat ID укажите числовой идентификатор чата, полученный на предыдущем шаге. В примере это 989698711.
В поле Text выберите режим Expression и введите {{ $json["text"] }}.
В левом верхнем углу нажмите Back to canvas.
Созданный поток будет выглядеть следующим образом:
6. Протестируйте работу бота
Чтобы протестировать работу потока, в нижней части рабочей области n8n нажмите Execute workflow. В бот придет сообщение с курсом валют от ЦБ РФ:
Результат
Вы развернули и настроили платформу для автоматизации n8n на виртуальной машине, создали Telegram-бот для отправки сообщений и рабочий сценарий, в результате которого сервер n8n получает курсы валют с сайта ЦБ РФ и отправляет их в Telegram.
В дальнейшем вы можете развить этот проект, добавив возможность запрашивать через Telegram-бот курс Bitcoin, который нужно будет получать из другого источника.
- Перед началом работы
- 1. Разверните ресурсы в облаке
- 2. Настройте окружение виртуальной машины
- 3. Разверните Docker-контейнер с n8n для проекта
- 4. Зарегистрируйте бота в Telegram
- 5. Создайте поток для отправки сообщения на портале n8n
- 6. Протестируйте работу бота
- Результат