N8n: Подробное руководство по установке и настройке
N8n — это инструмент с открытым исходным кодом для оркестрации рабочих процессов (workflow automation), который позволяет соединять различные приложения, API и сервисы между собой. В отличие от многих конкурентов, n8n использует модель «fair-code», которая дает возможность самому развернуть платформу на собственном сервере, сохраняя полный контроль над данными и процессами. Данная статья представляет собой исчерпывающее техническое руководство по установке, базовой и расширенной настройке n8n.
Выбор способа установки и начальная конфигурация
Установка n8n возможна несколькими методами, выбор которых зависит от операционной системы, инфраструктуры и уровня экспертизы пользователя.
Установка с помощью Docker (рекомендуемый способ)
Docker-контейнеризация является наиболее предпочтительным методом, так как обеспечивает изоляцию, простоту обновления и переносимость. Базовую установку можно выполнить одной командой:
docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n-
version: '3.8' services: n8n: image: n8nio/n8n container_name: n8n restart: unless-stopped ports: - "5678:5678" environment: - N8N_PROTOCOL=https - N8N_HOST=your_domain.com - N8N_PORT=5678 - N8N_WEBHOOK_URL=https://your_domain.com/ - GENERIC_TIMEZONE=Europe/Moscow - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=n8n - DB_POSTGRESDB_USER=n8n_user - DB_POSTGRESDB_PASSWORD=your_secure_password - N8N_ENCRYPTION_KEY=your_super_secure_encryption_key volumes: - n8n_data:/home/node/.n8n depends_on: - postgres postgres: image: postgres:15 container_name: n8n_postgres restart: unless-stopped environment: - POSTGRES_USER=n8n_user - POSTGRES_PASSWORD=your_secure_password - POSTGRES_DB=n8n volumes: - postgres_data:/var/lib/postgresql/data volumes: n8n_data: postgres_data: npm install n8n -g- После установки запустите n8n командой:
n8n start N8N_BASIC_AUTH_ACTIVE=trueN8N_BASIC_AUTH_USER=adminN8N_BASIC_AUTH_PASSWORD=your_strong_passwordN8N_JWT_AUTH_ACTIVE=trueN8N_JWT_AUTH_HEADER=AuthorizationN8N_JWKS_URI=https://your-auth-domain.com/.well-known/jwks.json-
server { listen 443 ssl http2; server_name automation.yourcompany.com; ssl_certificate /path/to/your/fullchain.pem; ssl_certificate_key /path/to/your/privkey.pem; location / { proxy_pass http://localhost:5678; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } DB_TYPE=postgresdbDB_POSTGRESDB_HOST=your_postgres_hostDB_POSTGRESDB_PORT=5432DB_POSTGRESDB_DATABASE=n8nDB_POSTGRESDB_USER=n8n_userDB_POSTGRESDB_PASSWORD=your_secure_passwordDB_POSTGRESDB_SCHEMA=public(опционально)DB_POSTGRESDB_SSL_ENABLED=true(для облачных БД)DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED=false(только для самоподписанных сертификатов в тестовой среде)- Режим очистки: Установите
EXECUTIONS_DATA_PRUNE=true. - Срок хранения успешных выполнений:
EXECUTIONS_DATA_MAX_AGE=72(хранить 3 дня). - Срок хранения ошибочных выполнений:
EXECUTIONS_DATA_PRUNE_MAX_COUNT=50(хранить последние 50 ошибок). - Режим сохранения данных:
EXECUTIONS_DATA_SAVE_ON_ERROR=all(сохранять данные для всех ошибок) илиEXECUTIONS_DATA_SAVE_ON_SUCCESS=none(не сохранять данные для успешных выполнений). - N8N_WEBHOOK_URL: Должен быть полным публичным URL вашего инстанса n8n (например, https://automation.yourcompany.com). Без этого вебхуки будут содержать неверные ссылки.
- N8N_WEBHOOK_TEST_OVERRIDE: Для тестирования вебхуков на localhost можно установить
N8N_WEBHOOK_TEST_OVERRIDE=https://temp.url. - Form Trigger: Для использования узла «Form Trigger» необходимо также корректно указать
N8N_HOSTиN8N_PROTOCOL. - Уровень логирования:
N8N_LOG_LEVEL=info(доступные уровни: error, warn, info, verbose, debug). Для отладки используйтеdebug. - Выход логов:
N8N_LOG_OUTPUT=consoleилиfile. Для контейнеризованных сред обычно используетсяconsole. - Метрики: Установите
N8N_METRICS=trueдля сбора метрик производительности. Метрики доступны по эндпоинту/metricsв формате Prometheus. - Пользовательские узлы: Поместите кастомные узлы в директорию
~/.n8n/custom(при использовании Docker смонтируйте ее как том). Укажите путь через переменнуюN8N_CUSTOM_EXTENSIONS. - Цветовая схема и логотип: Используйте переменные
N8N_THEME_*(например,N8N_THEME_LOGO,N8N_THEME_PRIMARY_COLOR) для брендирования интерфейса. - Отключение встроенных узлов: С помощью переменной
N8N_DISABLE_PRODUCTION_NODESможно отключить узлы, помеченные как production, оставив только core-узлы для повышения безопасности.
Эта команда запускает контейнер n8n, пробрасывает порт 5678 на хост-машину и монтирует том для сохранения данных (включая рабочие процессы и учетные данные) вне контейнера. Для production-среды необходима более сложная конфигурация с использованием Docker Compose и переменных окружения.
Пример файла docker-compose.yml для production
Установка с помощью npm
Для разработки или тестирования можно установить n8n глобально через npm (Node Package Manager). Требуется Node.js версии 18 или выше.
Ключевые настройки через переменные окружения
Конфигурация n8n в основном управляется через переменные окружения. Они определяют все аспекты работы платформы.
| Переменная | Описание | Пример значения |
|---|---|---|
| N8N_PROTOCOL | Протокол для доступа к веб-интерфейсу. | https (для production) |
| N8N_HOST | Доменное имя или IP-адрес сервера. | automation.yourcompany.com |
| N8N_WEBHOOK_URL | Полный базовый URL для вызовов вебхуков. | https://automation.yourcompany.com/ |
| GENERIC_TIMEZONE | Часовой пояс для выполнения запланированных работ. | Europe/Moscow |
| DB_TYPE | Тип базы данных (sqlite, postgresdb, mysqldb). | postgresdb |
| N8N_ENCRYPTION_KEY | Ключ для шифрования учетных данных. Должен быть длиной 16, 24 или 32 символа. Критически важен и должен быть одинаковым при всех перезапусках. | my-32char-encryption-key-1234 |
| EXECUTIONS_DATA_PRUNE | Включить автоматическую очистку старых выполнений. | true |
| EXECUTIONS_DATA_MAX_AGE | Максимальный возраст данных выполнения в часах перед удалением. | 168 (7 дней) |
| N8N_METRICS | Включить сбор метрик. | true |
| N8N_USER_MANAGEMENT_DISABLED | Отключить управление пользователями (если используется внешняя аутентификация). | false |
Настройка аутентификации и безопасности
По умолчанию n8n запускается без аутентификации, что недопустимо для доступа из публичной сети. Необходимо настроить один из методов защиты.
Базовая аутентификация
Самый простой способ. Задается через переменные окружения:
Аутентификация через JWT (рекомендуется для production)
Более безопасный и гибкий метод, часто используемый при интеграции с обратным прокси-сервером.
Настройка HTTPS через обратный прокси (Nginx)
Для работы по HTTPS необходимо настроить Nginx или аналогичный веб-сервер в качестве обратного прокси. Пример конфигурации Nginx:
Настройка базы данных
По умолчанию n8n использует SQLite, что подходит только для тестирования. Для production-нагрузки обязателен переход на PostgreSQL или MySQL.
Конфигурация для PostgreSQL
Как показано в примере docker-compose выше, необходимо указать следующие переменные:
Управление выполнением рабочих процессов (Executions)
Каждый запуск рабочего процесса создает запись об выполнении (execution). Со временем они накапливаются и занимают место в БД. Необходимо настроить политику их очистки.
Настройка внешних триггеров (Webhook, Form Trigger)
Для работы вебхуков, которые являются частыми триггерами, критически важна правильная настройка URL.
Масштабирование и производительность
Для обработки большого количества рабочих процессов или тяжелых нагрузок требуется настройка параметров выполнения.
| Переменная | Назначение | Рекомендация |
|---|---|---|
| EXECUTIONS_PROCESS | Режим обработки выполнений: ‘main’ (в основном процессе) или ‘own’ (в отдельном). | Для тяжелых workflow используйте ‘own’. |
| EXECUTIONS_TIMEOUT | Максимальное время выполнения одного workflow в миллисекундах. | По умолчанию 3600000 (1 час). Уменьшите для критичных по времени процессов. |
| QUEUE_BULL_REDIS_HOST | Адрес Redis сервера для распределенной очереди задач. | Обязателен для горизонтального масштабирования (запуска нескольких воркеров n8n). |
| N8N_CONCURRENCY_LIMIT | Максимальное количество параллельных выполнений на одном инстансе. | Значение по умолчанию 10. Увеличивайте в зависимости от ресурсов CPU. |
Мониторинг и логирование
Для диагностики проблем необходимо настроить сбор логов и метрик.
Кастомизация и расширение
N8n позволяет добавлять пользовательские узлы (nodes) и настраивать внешний вид.
Ответы на часто задаваемые вопросы (FAQ)
Как сбросить забытый пароль при базовой аутентификации?
Остановите n8n. Установите переменную окружения N8N_BASIC_AUTH_ACTIVE=false и перезапустите инстанс. После входа без пароля зайдите в настройки пользователя и установите новый пароль. Затем снова остановите n8n, верните N8N_BASIC_AUTH_ACTIVE=true и запустите заново.
Почему вебхуки не работают после выноса n8n за обратный прокси?
Наиболее вероятная причина — неверно заданная переменная N8N_WEBHOOK_URL. Она должна содержать полный публичный URL, по которому доступен ваш инстанс n8n (например, https://ваш-домен.com). Также убедитесь, что в настройках обратного прокси (Nginx/Apache) корректно передаются заголовки X-Forwarded-For и X-Forwarded-Proto.
Как перенести данные и рабочие процессы с SQLite на PostgreSQL?
1. Создайте дамп вашей текущей базы SQLite через интерфейс n8n (Settings -> Database -> Download Backup).
2. Настройте и запустите n8n с подключением к новой PostgreSQL БД (как описано выше).
3. В интерфейсе нового инстанса зайдите в Settings -> Database и используйте функцию «Upload Backup».
Важно: Шифрование учетных данных зависит от N8N_ENCRYPTION_KEY. Ключ должен быть идентичным на старом и новом инстансе для успешной расшифровки данных.
Как обновить n8n до новой версии при установке через Docker?
1. Остановите текущий контейнер: docker stop n8n.
2. Удалите его: docker rm n8n.
3. Получите новый образ: docker pull n8nio/n8n:latest (или конкретной версии).
4. Запустите контейнер снова, используя те же тома и переменные окружения. Все данные и workflow сохранятся, так как хранятся в смонтированном томе ~/.n8n.
Как ограничить доступ к n8n только из внутренней сети?
Есть два основных метода:
1. На уровне сети: Настройте брандмауэр (например, iptables, облачные Security Groups) так, чтобы порт 5678 (или порт обратного прокси) был доступен только с определенных IP-адресов.
2. На уровне n8n: Используйте переменную N8N_LISTEN_ADDRESS. Если установить значение 127.0.0.1, n8n будет принимать соединения только с локальной машины. Затем настройте обратный прокси-сервер (Nginx), который также будет доступен только из внутренней сети.
Почему запланированные workflow (Schedule Trigger) не срабатывают?
Проверьте следующие пункты:
1. Часовой пояс: Убедитесь, что переменная GENERIC_TIMEZONE установлена корректно (например, Europe/Moscow).
2. Активация workflow: Убедитесь, что workflow активирован (переключатель в правом верхнем углу редактора).
3. Время сервера: Проверьте системное время на сервере, где запущен n8n.
4. Статус инстанса: Убедитесь, что инстанс n8n работает бесперебойно. Для отказоустойчивости запланированных задач рассмотрите использование внешнего планировщика (например, cron), который будет вызывать ваш workflow через HTTP-запрос.
Добавить комментарий