n8n: лучшие автоматизации на домашнем сервере
О n8n я узнал случайно. Искал замену Make (бывший Integromat), потому что бесплатный лимит кончился, а платить 10 долларов в месяц за пару сценариев жаба душила. Поставил на сервер через Docker, настроил первый workflow — и пропал на неделю.
Установка через Docker Compose — это буквально пять строк. Я добавил volume для хранения данных, пробросил порт 5678, указал переменные окружения: базовый URL, тип экзекьютора (я выбрал собственный, чтобы не грузить основной контейнер), и часовой пояс. Первый запуск — открываю браузер, вижу пустой дашборд. И чувствую себя ребёнком в магазине игрушек.
Самый первый workflow, который я сделал — уведомления о бекапах Proxmox. Скрипт бекапа шлёт POST запрос на вебхук n8n, тот парсит JSON и отправляет мне сообщение в Telegram через бота. Настройка заняла 15 минут. Ни строчки кода. Я был впечатлён.
Потом пошли более сложные сценарии. Постинг в VK и Мой Мир при публикации статьи. Тут уже пришлось разбираться. n8n умеет работать с HTTP запросами, поэтому я просто отправляю POST на VK API. Но есть нюансы: VK требует загружать картинки отдельно через upload URL, который получаешь отдельным запросом. Я написал небольшую Function-ноду на JavaScript, которая обрабатывает ответы VK и формирует правильные запросы. Без единой внешней библиотеки — чистый нативный JS, который n8n выполняет на сервере.
Проверка SSL-сертификатов. У меня несколько сайтов на сервере, и я постоянно забываю обновлять сертификаты. Workflow раз в неделю проходит по списку доменов, проверяет дату истечения через openssl и, если осталось меньше 14 дней, шлёт уведомление. Сделано это через комбинацию HTTP Request ноды (для проверки) и IF ноды (условие по дате).
Google Sheets. Я веду учёт расходов на сервер в таблице. workflow раз в день парсит счета от хостинг-провайдера и записывает новые строки в Google Sheets. Для этого нужно настроить сервисный аккаунт в Google Cloud, но один раз сделал — и забыл.
Webhook — моя любимая фича. Это входная точка для внешних сервисов. Я повесил вебхук на APN, чтобы ловить алерты от мониторинга. Ещё один — для Telegram бота, который принимает команды. Есть нода Webhook, которая генерирует URL, и любой сервис может в неё стучаться. Главное — не забыть поставить аутентификацию, иначе любой сможет дёргать твой workflow.
Проблемы, с которыми я столкнулся. Первая — очередь выполнения. Если запускается несколько workflow одновременно, n8n может не справиться с нагрузкой. Решение — поставить отдельный экзекьютор через Docker Compose: сервис executor, который берёт на себя выполнение, а основной контейнер только управляет. Это снизило нагрузку на основной контейнер в разы.
Вторая проблема — ошибки. Если workflow упал, n8n не перезапускает его автоматически. Пришлось добавить Error workflow — специальный workflow, который ловит ошибки других и шлёт мне сообщение. Очень полезно, когда какой-нибудь внешний API лежит, а workflow пытается к нему достучаться и падает с таймаутом.
Третья — бекап workflow. Все workflow хранятся в SQLite базе внутри Docker volume. Если контейнер слетит — настройки пропадут. Я настроил ежедневный экспорт всех workflow в JSON через API n8n. Эти JSON-файлы лежат в отдельной директории, которая бекапится вместе с остальными данными.
Сравнение с Make. Make крутой, но он облачный. Если у них сервер лёг — твои сценарии не работают. С n8n такого нет — всё на моём железе. Плюс Make ограничивает количество операций в бесплатном тарифе. У n8n ограничений нет — только то, что твой сервер вывезет.
Ресурсы. n8n в покое жрёт около 300MB RAM. Под нагрузкой — до 700-800MB. Для домашнего сервера с 8GB это копейки. Но если у тебя малина с 1GB — лучше подумать. Я выделил контейнеру лимит 1024MB через Docker и забыл.
Интерфейс. n8n рисует workflow как граф: ноды соединяются линиями, каждая нода — отдельное действие. Это наглядно. Но с ростом количества нод (у меня есть workflow на 30+ нод) граф становится нечитаемым. Помогают комментирующие ноды и группировка контейнерами, но всё равно — планируй структуру заранее, не как я.
Что я в итоге делаю. Если задача повторяется чаще раза в месяц — я пишу для неё workflow в n8n. Это экономит мне часы времени каждую неделю. А главное — автоматизации не забывают ничего сделать. В отличие от меня.
Расскажу про свои конкретные workflow подробнее. Первый — уведомления от мониторинга. Uptime Kuma стучится в вебхук n8n, когда сайт падает или поднимается. n8n парсит статус и шлёт сообщение в Telegram с именем сайта, временем события и текущим кодом ответа. Раньше я узнавал о проблемах от читателей — теперь через минуту после падения уже знаю.
Второй — постинг в соцсети. Когда я публикую статью в WordPress, n8n ловит вебхук от плагина (я добавил кастомный экшн в functions.php, который дёргает URL n8n при transition post_status с draft на publish). Дальше n8n идёт в WordPress через REST API, забирает заголовок, ссылку и URL картинки. Потом — HTTP нода для VK API: получает upload URL, загружает фото, отправляет пост на стену. То же самое для Мой Мир, но там через другую ноду. Раз в день — лимит, чтобы не спамить.
Третий — проверка SSL. Каждое воскресенье в 10 утра n8n берёт список доменов из переменной (массив строк), для каждого выполняет curl через SSH ноду (подключается к серверу и выполняет openssl s_client), парсит дату истечения, сравнивает с текущей. Если пора обновлять — шлёт уведомление через Telegram. Если до истечения меньше трёх дней — сообщение красное, с восклицательными знаками.
Четвёртый — логирование температуры сервера. У меня есть скрипт на сервере, который раз в час снимает показания с датчиков CPU (через sensors) и пишет их в HTTP endpoint n8n. Workflow складывает данные в Google Sheets — таблицу с датой, временем и температурой. За месяц набралась неплохая статистика. Теперь знаю, что сервер греется до 75 градусов под нагрузкой, и это нормально для этого процессора.
Пятый — обработка форм обратной связи. На сайте есть простая форма без плагинов (просто HTML + PHP). Когда приходит заявка, PHP отправляет POST на вебхук n8n с именем, email и сообщением. Workflow проверяет email на валидность (нода IF с регуляркой), потом ищет в Google Sheets, не писал ли этот пользователь раньше. Если новый — добавляет строку в таблицу лидов и шлёт мне уведомление в Telegram. Если старый — просто уведомление, без добавления.
Шестой — сбор RSS. n8n раз в час проверяет несколько RSS-лент (Habr, новости Ubuntu, Proxmox форум). Если появилась новая статья — он парсит заголовок и ссылку и кладёт в очередь в Redis. Потом второй workflow забирает из очереди и присылает мне дайджест раз в день. Я так узнаю о новостях первым, не лазая по сайтам.
Совет по отладке. У n8n есть режим execution, где можно пройти workflow по шагам и посмотреть, что приходит на вход каждой ноды. Это спасло меня много раз. Особенно когда API возвращает не то, что ты ожидаешь. Рекомендую тестировать каждый workflow перед запуском в продакшн — запустить с тестовыми данными и посмотреть результат.
Итог. n8n — мастхев для домашнего сервера, если у тебя есть хоть какие-то повторяющиеся задачи. Ставится за минуту, настраивается без программирования, но если умеешь в JS — возможности безграничны. Я теперь автоматизирую всё подряд. Даже напоминалку полить цветы сделал через n8n.