Если вы еще не слышали про этот бесплатный инструмент автоматизации всего, то советую обратить на него внимание. В нем кажется можно связать все что угодно с чем угодно. На сегодня 5138 готовых шаблонов от сообщества. Почти все можно использовать бесплатно. Одним словом, рекомендую, тем боле установка и использование этого сервиса не требует уникальных знаний.

N8n

Я установил его на самый простой сервер VPS / 1 vCPU / 1 GB RAM / 15 GB SSD, чего вполне хватит для моих задач, к тому же N8N не очень требователен к ресурсам. Вы можете запустить его на собственном компьютере с помощью Docker HUB (самый простой способ), но я сегодня расскажу как его запустить на сервере и прикрутить свой домен.

Запуск n8n и Nginx Proxy Manager с помощью Docker Compose

Это руководство поможет вам быстро развернуть n8n и Nginx Proxy Manager (NPM) на чистом сервере с Ubuntu, используя Docker Compose. Это самый простой и стабильный метод, который идеально подходит для начинающих.

Шаг 1: Подготовка

Прежде чем мы начнём, убедитесь, что у вас есть:
Сервер с Ubuntu 20.04 или новее. Подойдёт самый простой VPS/VDS.
Доменное имя. Например, example.com.
Одна DNS A-запись для n8n, указывающая на IP-адрес вашего сервера: n8n.example.comIP_ВАШЕГО_СЕРВЕРА

⚠️ Важно: Убедитесь, что DNS-записи обновились, прежде чем настраивать SSL-сертификаты. На это может уйти от нескольких минут до нескольких часов.

Шаг 2: Установка Docker и Docker Compose

Подключитесь к вашему серверу по SSH и выполните следующие команды, чтобы установить Docker.

#!/bin/bash
set -e  # остановка при ошибке

# Обновление системы и установка базовых пакетов
sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

# Добавление GPG-ключа Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Добавление репозитория Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Установка Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER  # добавление пользователя в группу Docker

# Установка последней версии Docker Compose
LATEST_COMPOSE=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*?(?=")')
sudo curl -L "https://github.com/docker/compose/releases/download/$LATEST_COMPOSE/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# Установка sqlite3
sudo apt install -y sqlite3

# Проверка версий
docker --version
docker-compose --version
sqlite3 --version

Можете запустить скриптом или команды по очереди

Шаг 3: Создание файла Docker Compose

Теперь создадим специальный файл, который опишет всю нашу систему.
Создайте папку для проекта и перейдите в неё:

mkdir my-n8n-stack
cd my-n8n-stack #переходим в в папку

Создайте файл docker-compose.yml:

nano docker-compose.yml

Скопируйте и вставьте в этот файл следующее содержимое. Обязательно замените Europe/Moscow на ваш часовой пояс.

version: '3.8'

services:
  # --- Nginx Proxy Manager ---
  # Веб-интерфейс для управления прокси и SSL
  nginx-proxy-manager:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      # Публичные порты для веб-трафика
      - '80:80'
      - '443:443'
      # Порт для доступа к админ-панели
      - '81:81'
    environment:
      # Указываем, где находится база данных
      DB_MYSQL_HOST: "npm-db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm_root_password_change_me" # <-- ЗАМЕНИТЕ НА СВОЙ ПАРОЛЬ
      DB_MYSQL_NAME: "npm"
      # Отключаем показ ошибок для безопасности
      DISABLE_IPV6: 'true'
    volumes:
      - npm-data:/data
      - npm-letsencrypt:/etc/letsencrypt
    depends_on:
      - npm-db
    networks:
      - proxy-network

  # --- База данных для Nginx Proxy Manager ---
  npm-db:
    image: 'jc21/mariadb-aria:latest'
    container_name: npm-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: "npm_root_password_change_me" # <-- ЗАМЕНИТЕ НА СВОЙ ПАРОЛЬ
      MYSQL_DATABASE: "npm"
      MYSQL_USER: "npm"
      MYSQL_PASSWORD: "npm_root_password_change_me" # <-- ИСПОЛЬЗУЙТЕ ТОТ ЖЕ ПАРОЛЬ, ЧТО И ВЫШЕ
    volumes:
      - npm-db-data:/var/lib/mysql
    networks:
      - proxy-network

  # --- n8n ---
  # Сервис автоматизации
  n8n:
    image: n8nio/n8n
    container_name: n8n
    restart: unless-stopped
    ports:
      - '127.0.0.1:5678:5678' # Порт доступен только внутри сервера
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - TZ=Europe/Moscow # <-- ЗАМЕНИТЕ НА ВАШ ЧАСОВОЙ ПОЯС
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=120
# --- Настройки для авто-очистки данных, чтобы не переполнялся диск ---
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=720 # Хранить данные за последние 30 дней (720 часов)
    volumes:
      - n8n-data:/home/node/.n8n
    networks:
      - proxy-network

# --- Сети и тома ---
# Определяем общую сеть для контейнеров
networks:
  proxy-network:
    driver: bridge

# Определяем тома для сохранения данных
volumes:
  npm-data:
  npm-letsencrypt:
  npm-db-data:
  n8n-data:

Сохраните файл и закройте редактор (Ctrl+X, затем Y и Enter).

Шаг 4: Запуск

Теперь, когда всё готово, запустим наши сервисы.
Создайте файл .env для переменных n8n:

nano .env

Добавьте в него следующие строки, заменив значения на свои:# Замените на ваш домен и субдомен для n8n DOMAIN_NAME=example.com SUBDOMAIN=n8n
Сохраните и закройте файл.
Запустите все контейнеры в фоновом режиме:

docker-compose up -d

Команда скачает образы и запустит контейнеры. Это может занять несколько минут.

Шаг 5: Настройка Nginx Proxy Manager

Откройте в браузере админ-панель NPM, используя IP-адрес вашего сервера: http://IP_ВАШЕГО_СЕРВЕРА:81.
Войдите с данными по умолчанию:
Email: admin@example.com
Password: changeme
Система сразу попросит вас сменить email и пароль. Сделайте это.

Шаг 6: Настройка прокси для n8n

Теперь «спрячем» n8n за прокси и подключим SSL.
В интерфейсе NPM перейдите в Hosts -> Proxy Hosts.
Нажмите синюю кнопку Add Proxy Host.
Заполните вкладку Details:
Domain Names: n8n.example.com (ваш домен для n8n)
Scheme: http
Forward Hostname / IP: n8n (имя сервиса из docker-compose.yml)
Forward Port: 5678
Включите опции Cache Assets, Block Common Exploits и Websockets Support.

Перейдите на вкладку SSL:
В выпадающем списке SSL Certificate выберите Request a new SSL Certificate.
Включите опции Force SSL и HTTP/2 Support.
Согласитесь с условиями использования Let’s Encrypt.
Нажмите Save.

NPM автоматически получит SSL-сертификат и применит настройки. Через минуту-две вы сможете безопасно открыть ваш n8n.

Шаг 7: Готово!

Откройте в браузере https://n8n.example.com. Вы увидите интерфейс n8n, работающий через защищённое соединение!

Теперь у вас есть полностью рабочая, безопасная и легко управляемая система для автоматизации.

Настроим мониторинг доступности сайтов в Telegram

Для самого простого и надежного способа настройки мониторинга сайтов через n8n с оповещением в Telegram вам понадобится:

Таблица со списком сайтов в Google таблице через Google Sheets OAuth2 API (по ссылке есть инструкция и видео, ознакомьтесь, там есть нюанс подключения).
Аккаунт Telegram: Для получения уведомлений.
Бот Telegram: Созданный вами бот для отправки сообщений.

Структура n8n

Шаг 1: Создание Telegram-бота

В Telegram найдите @BotFather и напишите ему /newbot.
Следуйте инструкциям, чтобы выбрать имя и юзернейм для вашего бота.
После создания, BotFather выдаст вам токен (API-key). Скопируйте его, он понадобится для подключения n8n.
Напишите вашему новому боту любое сообщение, чтобы он мог начать работу. Это необходимо, чтобы n8n мог отправить ему первое сообщение.

Шаг 2: Настройка n8n

Создание рабочего процесса (Workflow)

В n8n создайте новый Workflow.
Добавьте узел Cron (Scheduled Trigger). Это будет запускать проверку по расписанию.
В настройках узла Cron выберите интервал проверки, например, каждые 5 минут или 1 час.

Подключаем таблицу (Google sheets)

Нужно создать разрешение (credantial) для того чтобы N8N мог подключаться к инструментам Google из инструкции выше. В таблице пишем список файлов, у меня он выглядит так. Подключаем к google таблице через ID или через ссылку, указываем лист на котором находится список (его можно изменять или расширять).

Google sheets oauth2 api

Split out (проверяем все url и списка)

Просто в поле вставляем переменную [‘Website URL’]

Проверка статуса сайта

После узла Cron добавьте узел HTTP Request.

В поле URL вставьте адрес сайта, который хотите мониторить.

В поле Request Method выберите GET.

Чтобы проверить, что сайт доступен, убедитесь, что в настройках узла HTTP Request включена опция Return Full Response.

Http request

Обработка ответа

Добавьте узел IF (Logic). Он будет проверять, успешен ли запрос.
В First Value вставьте выражение, которое проверяет код ответа. Например, {{ $json.statusCode }}.
В Operation выберите Equals.
В Second Value введите 200. Это стандартный код успешного ответа сервера.

Отправка уведомления в Telegram

Ветка «Если сайт недоступен» (ветка false в узле IF)
В поле Text напишите сообщение, которое должно приходить при сбое. Например:

🚨 *Alert: Сайт {{ $('Website URLs').item.json['Website URL'] }} недоступен*
🖥 Код ответа: {{ $json.error.status }} 
⏰ Время: {{$now.format("DD HH:mm")}}

Подключите к ветке false узла IF новый узел Telegram.
Если вы используете этот узел впервые, нажмите Create New Credential. Вставьте токен, который вы получили от BotFather на первом шаге.

Чтобы получить Chat ID, используйте Telegram-бота [@RawDataBot]. Напишите ему любое сообщение, и он выдаст ваш Chat ID. Скопируйте его и вставьте в настройках узла Telegram.

Send telegram

Дополнение

В отправке Telegram появляется надпись «This message was sent automatically with n8n» внизу каждого сообщения

Эта фраза появляется потому, что по умолчанию Telegram node в n8n добавляет подпись.

Как отключить

Открой свой Telegram → Send Message Node.
Найди поле «Append n8n Attribution» (или «Disable Notification» в некоторых версиях).
Сними галочку ✅ → и подпись исчезнет.

Заключение

Теперь есть независимый инструмент, который опрашивает сайты с внешней стороны об их доступности и присылает сообщение в ваш чат или группу Telegram. Гибко настраиваемая и расширяемая система, можно добавить сообщения на почту или другой канал.

N8N невероятный сервис, который будет полезен во многих сферах, рекомендую!

Если вам нужна помощь или вы хотите настроить различные автоматизации, свяжитесь со мной!