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.

Полезные ссылки