Самостоятельный n8n: установка и настройка автоматизации
Разверните n8n на собственном сервере: пошаговый гид по Docker‑установке, настройке автоматизаций и интеграции с AI для эффективного self‑hosting.
Установка Docker и Docker Compose (Linux)
Обновите индексы пакетов, добавьте официальный репозиторий Docker и установите необходимые пакеты. Это базовое окружение для запуска n8n в контейнерах.
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
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
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginСоздание директории и файла docker-compose.yml
Создайте отдельную директорию для проекта и файл конфигурации docker-compose.yml, который определяет сервисы n8n и PostgreSQL. Замените плейсхолдеры на свои значения.
mkdir -p ~/n8n-stack && cd ~/n8n-stack
touch docker-compose.ymlКонфигурация docker-compose.yml
Заполните файл docker-compose.yml содержимым для развертывания n8n и PostgreSQL. Обязательно укажите свои домен (N8N_HOST), пароли (CHANGE_ME_DB_PASSWORD) и ключ шифрования (CHANGE_ME_LONG_RANDOM_STRING).
version: "3.8"
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
environment:
- TZ=Europe/Moscow
- N8N_HOST=your.domain.tld
- N8N_PORT=5678
- WEBHOOK_URL=https://your.domain.tld/webhook/
- N8N_ENCRYPTION_KEY=CHANGE_ME_LONG_RANDOM_STRING
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=CHANGE_ME_DB_PASSWORD
ports:
- "5678:5678"
depends_on:
- postgres
networks:
- n8n-net
volumes:
- n8n_data:/home/node/.n8n
postgres:
image: postgres:15-alpine
container_name: n8n-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=CHANGE_ME_DB_PASSWORD
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- n8n-net
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 10s
timeout: 5s
retries: 5
networks:
n8n-net:
driver: bridge
volumes:
n8n_data:
postgres_data:Запуск контейнеров
Запустите контейнеры в фоновом режиме. После выполнения команды проверьте логи, чтобы убедиться в отсутствии ошибок и успешном запуске сервера.
docker compose up -d
docker compose logs -f n8nПервый вход и настройка аккаунта
Откройте в браузере ваш домен (или localhost:5678). При первом запуске создайте учетную запись администратора, затем проверьте настройки хоста и URL в разделе Settings -> Instance Settings.
# Открыть в браузере
# https://your.domain.tld
# или
http://localhost:5678Настройка Telegram Bot
Найдите бота @BotFather в Telegram, создайте нового бота и сохраните токен. Отправьте боту любое сообщение, чтобы начать чат. Получите свой Chat ID, используя бота @userinfobot или API запрос.
curl "https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates"Создание Credentials в n8n
В интерфейсе n8n перейдите в раздел Credentials, добавьте новый набор данных типа Telegram Bot, вставьте полученный токен и сохраните.
Построение Workflow
Создайте новый workflow. Добавьте узел Webhook (Trigger) и скопируйте сгенерированный URL. Добавьте узел Telegram (Action -> Telegram -> Send Message), выберите созданные Credentials и укажите Chat ID. В тексте сообщения используйте выражения (например, {{ $json.message }}).
curl -X POST -H "Content-Type: application/json" -d '{"message":"Тестовое событие"}' https://your.domain.tld/webhook/your-uuidРезервное копирование
Для сохранения данных создайте скрипт бэкапа. Он делает дамп PostgreSQL и архивирует том с данными n8n. Рекомендуется добавить скрипт в cron для автоматизации.
#!/bin/bash
set -e
BACKUP_DIR="$HOME/n8n-backups/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
# Дамп БД
docker exec n8n-postgres pg_dump -U n8n n8n > "$BACKUP_DIR/n8n.sql"
# Копия тома n8n_data в архив
docker run --rm -v n8n_data:/data -v "$BACKUP_DIR:/backup" alpine sh -c "tar czf /backup/n8n_data.tar.gz -C /data ."
# Очистка старых бэкапов (оставить последние 7)
ls -dt ~/n8n-backups/* | tail -n +8 | xargs -r rm -rfSelf-hosted workflow automation с n8n: Полный гид по установке и настройке
Введение
Workflow automation (автоматизация рабочих процессов) позволяет связывать разрозненные сервисы, устранять рутинные задачи и строить сложную логику без написания кода. В отличие от облачных решений, self-hosted n8n дает полный контроль над данными, логикой выполнения и инфраструктурой, а также исключает ограничения публичных тарифов.
Почему n8n:
- Открытый исходный код с возможностью коммерческой лицензии (Sustainable Use License).
- Богатая экосистема узлов (nodes) для API, баз данных, очередей, AI.
- Гибкая оркестрация: визуальный редактор, возможность запуска в Docker, поддержка переменных окружения, шифрование секретов.
- Масштабируемость: от单节点 до кластера с внешними базами (PostgreSQL) и очередями (Redis).
Подготовка окружения (Docker и Docker Compose)
Для комфортной работы вам понадобятся:
- Сервер или локальная машина с Docker и Docker Compose.
- Домен (или локальный DNS) для доступа к веб-интерфейсу и Webhook.
- Рекомендуется: TLS-terminating reverse proxy (Traefik, Caddy, Nginx) для HTTPS и удобного роутинга.
Установка Docker и Docker Compose (Linux)
- Обновите индексы пакетов и установите Docker:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
# Добавьте официальный GPG-ключ Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Добавьте репозиторий
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
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- Проверьте установку:
sudo docker run --rm hello-world
docker compose version
- (Опционально) Добавьте текущего пользователя в группу docker, чтобы не использовать sudo:
sudo usermod -aG docker $USER
# Перелогиньтесь для применения прав
Пример docker-compose.yml для n8n
Создайте отдельную директорию проекта и файл docker-compose.yml:
mkdir -p ~/n8n-stack && cd ~/n8n-stack
touch docker-compose.yml
Содержимое файла (минимальный безопасный стенд с PostgreSQL):
version: "3.8"
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
environment:
- TZ=Europe/Moscow
- N8N_HOST=your.domain.tld # ваш домен или IP
- N8N_PORT=5678
- WEBHOOK_URL=https://your.domain.tld/webhook/ # важно для внешних вызовов
- N8N_ENCRYPTION_KEY=CHANGE_ME_LONG_RANDOM_STRING # минимум 32 символа
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=CHANGE_ME_DB_PASSWORD
# Для internal queue (опционально, при шкалировании)
# - EXECUTIONS_MODE=queue
# - QUEUE_BULL_REDIS_HOST=redis
# - QUEUE_BULL_REDIS_PORT=6379
ports:
- "5678:5678" # можно убрать, если используете reverse proxy внутри сети
depends_on:
- postgres
networks:
- n8n-net
volumes:
- n8n_data:/home/node/.n8n
# Пример монтирования внешних скриптов/credentials (опционально)
# - ./scripts:/usr/src/app/custom:ro
postgres:
image: postgres:15-alpine
container_name: n8n-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=CHANGE_ME_DB_PASSWORD
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- n8n-net
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 10s
timeout: 5s
retries: 5
# Redis раскомментировать при использовании очередей и шкалирования
# redis:
# image: redis:7-alpine
# container_name: n8n-redis
# restart: unless-stopped
# networks:
# - n8n-net
networks:
n8n-net:
driver: bridge
volumes:
n8n_data:
postgres_data:
Важно:
- Замените
CHANGE_ME_LONG_RANDOM_STRINGиCHANGE_ME_DB_PASSWORDна надежные значения. - Если используете reverse proxy, выключите проброс порта 5678 наружу и настройте роутинг через него.
Установка n8n: Пошаговая инструкция
- Перейдите в папку с
docker-compose.yml:
cd ~/n8n-stack
- Запустите стек в фоне:
docker compose up -d
- Проверьте логи на предмет ошибок:
docker compose logs -f n8n
Ожидаемый вывод: сервер запущен, доступен на порту 5678 (или через reverse proxy).
- Если нужно обновить версию:
docker compose pull
docker compose up -d --force-recreate
- (Опционально) Первоначальная настройка через переменные окружения:
N8N_BASIC_AUTH_ACTIVE=trueиN8N_BASIC_AUTH_USER/N8N_BASIC_AUTH_PASSWORDдля базовой авторизации, если нет SSO.N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=trueдля ограничения доступа к файлам.EXECUTIONS_TIMEOUT=300для ограничения максимального времени выполнения.
Первый запуск и базовая настройка
-
Откройте в браузере ваш URL (например,
https://your.domain.tld). При локальном запуске:http://localhost:5678. -
Если базовая авторизация включена, введите логин/пароль.
-
Создайте учетную запись администратора (email/пароль) в интерфейсе при первом входе.
-
В разделе «Credentials» добавьте минимум один набор аутентификации для теста (например, Telegram Bot Token).
-
Проверьте настройки хоста и URL:
- Меню → Settings → Instance Settings → Host and Webhook → «Webhook URL» должен совпадать с
WEBHOOK_URL.
- (Опционально) Настройте SMTP для уведомлений и восстановления пароля:
- Environment variables:
N8N_EMAIL_MODE=smtp,N8N_SMTP_HOST,N8N_SMTP_PORT,N8N_SMTP_USER,N8N_SMTP_PASS,N8N_SMTP_SENDER.
Создание первой автоматизации (пример с Telegram уведомлениями)
Цель: отправить сообщение в Telegram, когда вызывается вебхук (например, событие от мониторинга или сайта).
Шаг 1: Telegram Bot
- Найдите в Telegram бота
@BotFather, создайте нового бота и получите HTTP API Token. - Создайте личный чат с ботом и отправьте любое сообщение.
- Получите chat ID, например через
@userinfobotили запросом к API:
curl "https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates"
Шаг 2: Добавление Credentials в n8n
- В n8n перейдите в Credentials → Add Credential → Telegram Bot.
- Вставьте Token и сохраните (назовите «Telegram Bot»).
Шаг 3: Построение workflow
- Создайте новый workflow (Workflows → Add workflow).
- Добавьте узел «Webhook» (Trigger). Скопируйте «Webhook URL», который он сгенерирует (например,
https://your.domain.tld/webhook/your-uuid). - Добавьте узел «Telegram» (Action → Telegram → Send Message).
- В узле Telegram выберите созданную Credentials, укажите Chat ID и текст сообщения.
- Для теста можно вставить статический текст:
Новое событие: {{ $json.message || 'без описания' }}.
- Для теста можно вставить статический текст:
- Нажмите «Test workflow» и вызовите вебхук:
curl -X POST -H "Content-Type: application/json" -d '{"message":"Тестовое событие"}' https://your.domain.tld/webhook/your-uuid
- В интерфейсе n8n увидите выполнение и статус отправки сообщения в Telegram.
Полезные советы
- Для сложных данных используйте выражения:
{{ $json.field }}. - Включите «Listening for events» в Webhook-узле, если нужно слушать GET/POST.
- Для отладки добавляйте узел «Data Storage» или «Function» с
return [items], чтобы выводить промежуточные данные.
Расширенные возможности: AI-агенты и функциональные узлы
AI-агенты
n8n поддерживает интеграцию с LLM-провайдерами (OpenAI, Anthropic, Ollama и др.) для построения агентских сценариев.
- Добавьте узел «OpenAI» (Credentials → OpenAI API), укажите API-ключ.
- Используйте узел «Simple Chain» или «Agent» для оркестрации:
- Вход: текст из Webhook.
- Промпт: «Проанализируй запрос и сформируй ответ».
- Выход: в Telegram или Email.
- Для локальных моделей через Ollama: используйте узел «HTTP Request» к API Ollama или специализированные community-узлы.
Функциональные узлы
- Code (JavaScript): выполняйте произвольный код на Node.js, включая npm-пакеты. Полезно для трансформации данных, работы с JSON, массивами.
- Switch/IF: ветвление логики по условиям.
- Merge/Aggregate: объединение данных из нескольких источников.
- Webhook / HTTP Request: для приёма и отправки запросов, интеграции с API.
- Schedule/Trigger: триггер по расписанию (cron) для периодических задач.
Пример: «Каждые 30 минут собирать данные из API → фильтровать изменения → отправлять дайджест в Telegram».
Безопасность и резервное копирование
Безопасность
- Сильные секреты:
N8N_ENCRYPTION_KEY— обязательно длинная случайная строка.- Пароли БД и внешних сервисов — через переменные окружения, не хардкодьте в workflow.
- Сеть:
- Размещайте n8n и БД в отдельной Docker-сети.
- Не публикуйте порты БД наружу.
- Используйте reverse proxy с TLS и ограничьте доступ до n8n по IP/домену.
- Доступ:
- Включайте базовую аутентификацию или настраивайте SSO (через обратный прокси или OIDC-заголовки, если поддерживается).
- Отключайте «public sharing» для workflow, если не нужно.
- Переменные окружения:
EXECUTIONS_TIMEOUT,N8N_PAYLOAD_SIZE_LIMIT(например, 10MB) для контроля ресурсов.
- Роли и права (в Enterprise/Pro):
- Используйте RBAC для разделения прав между пользователями.
Резервное копирование
- Файловой том для
n8n_data(содержит кэш, ключи, настройки). Регулярно делайте копии. - PostgreSQL: используйте
pg_dumpдля выгрузки данных.
Пример бэкапа (добавьте в cron или скрипт):
#!/bin/bash
set -e
BACKUP_DIR="$HOME/n8n-backups/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
# Дамп БД
docker exec n8n-postgres pg_dump -U n8n n8n > "$BACKUP_DIR/n8n.sql"
# Копия тома n8n_data в архив
docker run --rm -v n8n_data:/data -v "$BACKUP_DIR:/backup" alpine sh -c "tar czf /backup/n8n_data.tar.gz -C /data ."
# Очистка старых бэкапов (оставить последние 7)
ls -dt ~/n8n-backups/* | tail -n +8 | xargs -r rm -rf
Восстановление:
- Остановите контейнеры:
docker compose down. - Восстановите том: распакуйте архив в том или подмените том бэкапом.
- Восстановите БД:
docker exec -i n8n-postgres psql -U n8n n8n < n8n.sql. - Запустите:
docker compose up -d.
Наблюдаемость
- Логи:
docker compose logs -f n8n. - Метрики (Enterprise/Pro): включите экспортер Prometheus.
- Алерты: отправляйте уведомления через тот же n8n (Webhook → Telegram/Slack) при ошибках или переполнении диска.
Заключение и полезные ресурсы
Вы развернули n8n в Docker, настроили PostgreSQL и построили простую автоматизацию с Telegram. Теперь вы можете масштабировать стек: добавить Redis для очередей, запустить несколько воркеров, интегрировать AI-агентов и защитить инфраструктуру reverse proxy и HTTPS.
Полезные ресурсы:
- Документация n8n: https://docs.n8n.io
- Официальный Docker-образ: https://hub.docker.com/r/n8nio/n8n
- Примеры workflow и сообщество: https://n8n.io/community
- Telegram Bot API: https://core.telegram.org/bots/api
- Ollama (локальные LLM): https://ollama.ai
Приятной автоматизации!