N8n - Открытая Альтернатива Zapier
Как автоматически добавить задачу в Todoist из сообщения в Telegram? - этот вопрос не давал мне покоя пару дней, так как я являюсь активным пользователем обоих платформ, а так же сторонником методки GTD.
Известные мне платформы в виде Zapier, IFTTT и других (их оказалось немало) не решали эту задачу. Я уж было думал расчехлить навыки программирования и быстро заколхозить интеграцию, но вспомнил о сервисе n8n, который не попал в мою поисковую выдачу. Вспомнил - потому что как-то мне его предлагал посмотреть ув. тов. Маликов.
Что такое N8n, IFTTT, Zapier?
Суть всех сервисов сводится к тому, чтобы автоматизировать какие-то рутинные операции. И работает это по принципу If This Then That (если это, то сделай то).
Я отношу такие сервисы к классу no code
- сервисов. Буквально за несколько минут, без программирования можно настроить
для себя бизнес-процессы. Например, отправлять сообщение в телегу если вам на почту пришло письмо.
Чтобы все было максимально просто для конечного пользователя все подобные популярные сервисы предлагают подписку на
облачную версию (а у большинства другой и нет).
В чем отличие n8n от других?
Для меня ключевым отличием n8n от Zapier (да и других сервисов) оказалось то, что он open source, т.е. вы можете запросто развернуть сервис у себя на хостинге (но так же доступна и облачная версия). А позднее я обнаружил, что в нем можно писать свои обработчики на JavaScript (n8n написан на JS) прям в браузере, что максимально развязывает руки и открывает новые возможности для автоматизации. Так же не стоит забывать про то, что из коробки у n8n есть более 200 интеграций с самыми популярными сервисами и протоколами.
Забавно, но триггером к освоению данного инструмента послужило невозможность создать задачи в Todoist из Telegram во всех популярных платформах подобного типа.
Разворачиваем свой n8n для автоматизации личных нужд
Вот так выглядит мой docker-compose.yml
для n8n, с хранением БД в SQLite
(можно использовать PostgreSQL
, но для личных
целей это кажется overhead).
version: '3.1'
services:
n8n:
image: n8nio/n8n
restart: always
environment:
- N8N_VERSION_NOTIFICATIONS_ENABLED=false
- N8N_HOST=<PUT_HERE_YOUR_DOMAIN>
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://<PUT_HERE_YOUR_DOMAIN>/
- NODE_ENV=production
- N8N_PUSH_BACKEND=websocket
ports:
- 15678:5678
volumes:
- /PATH/TO/.n8n:/home/node/.n8n
# Dependency for the "n8n-nodes-browserless" community plugin
browserless:
image: browserless/chrome:latest
restart: always
environment:
- MAX_CONCURRENT_SESSIONS=10
- CONNECTION_TIMEOUT=120000
- TOKEN=<PUT_HERE_ANY_RANDOM_STRING>
depends_on:
- n8n
Чтобы все было по красоте на вашем vps - советую сразу настроить nginx и выпустить сертификаты для https.
Пример конфигурации nginx (до выпуска сертификата):
server {
server_name <PUT_HERE_YOUR_DOMAIN>;
access_log /var/log/nginx/n8n_access.log;
error_log /var/log/nginx/n8n_error.log;
location / {
proxy_pass http://127.0.0.1:15678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
}
Как настроить интеграцию Telegram и Todoist?
Для начала нужно добавить 2 интеграции: с Telegram и Todoist. Для этого нажмите на ключик (Credentials) в панели слева и
нажмите New
. Когда оба доступа зарегистрировано - можно нарисовать сам процесс, от триггера, до целевого действия - для
этого нажмите справа большой красный плюс.
Во время настройки флоу - нужно придерживаться следующего принципа - есть входящие данные, в каком-то формате. По ходу флоу их можно использовать и трансформировать. Но возникает вопрос - а в каком формате приходят данные и где их посмотреть? Для этого есть раздел executions, где можно посмотреть “выполнения”. Так можно понять, какой путь использовать в условиях.
В конечном счете, мой воркфлоу принял вот такой вид:
А позднее я настроил автоматизации, которые мне присылали уведомления в телеграм при выполнении Github Actions.