N8n локально: Полное руководство по установке, настройке и эксплуатации
N8n — это мощный инструмент автоматизации рабочих процессов с открытым исходным кодом, который можно развернуть на собственном сервере или компьютере. Локальная установка предоставляет полный контроль над данными, безопасностью, производительностью и конфигурацией системы, что критически важно для компаний, работающих с конфиденциальной информацией или имеющих специфические инфраструктурные требования.
Преимущества локального развертывания N8n
Выбор установки N8n на собственную инфраструктуру обусловлен рядом ключевых преимуществ:
- Контроль и безопасность данных: Все данные, включая конфиденциальные ключи API, токены и промежуточные результаты, остаются внутри вашей сети. Это исключает риски, связанные с передачей информации через сторонние облачные сервисы.
- Соблюдение нормативных требований: Локальное развертывание помогает соответствовать строгим стандартам, таким как GDPR, HIPAA, или отраслевым нормам, требующим хранения данных в определенной юрисдикции.
- Производительность и надежность: Скорость выполнения рабочих процессов зависит только от мощности вашего оборудования и внутренней сети, что исключает задержки из-за интернет-соединения или нагрузки на облачные серверы.
- Гибкость конфигурации: Возможность тонкой настройки сервера, базы данных, сетевых параметров и самого N8n под конкретные нужды.
- Отсутствие лимитов и абонентской платы: Локальная версия не имеет ограничений на количество выполненных рабочих процессов или используемых нод, что характерно для облачного тарифа N8n.
- Установите Node.js версии 18 или выше.
- Откройте терминал и выполните команду:
npm install n8n -g - Запустите N8n командой:
n8n start - Установите Docker и Docker Compose на ваш сервер.
- Создайте файл
docker-compose.ymlсо следующим содержимым:
Системные требования и подготовка
Перед установкой необходимо убедиться, что ваша система соответствует минимальным требованиям.
| Компонент | Минимальные требования | Рекомендуемые требования |
|---|---|---|
| Операционная система | Linux (Ubuntu 20.04+, Debian 10+), macOS 10.14+, Windows 10/11 (WSL2) | Linux-сервер (Ubuntu 22.04 LTS) |
| Процессор | 2 ядра | 4+ ядра |
| Оперативная память (RAM) | 4 ГБ | 8 ГБ и более |
| Свободное место на диске | 10 ГБ | 50 ГБ+ (зависит от объема обрабатываемых данных) |
| Программное обеспечение | Node.js 18+, npm, база данных (SQLite, PostgreSQL, MySQL) | Node.js 20+, менеджер процессов (PM2), PostgreSQL 12+ |
Способы локальной установки N8n
Установка с помощью npm (Node.js)
Это базовый способ, подходящий для тестирования и настольного использования.
После запуска веб-интерфейс будет доступен по адресу http://localhost:5678. По умолчанию используется встроенная база данных SQLite, что удобно для начала работы.
Установка с помощью Docker (рекомендуемый способ)
Docker обеспечивает изоляцию, простоту обновления и переносимость контейнера.
version: '3.8'
services:
n8n:
image: n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_PROTOCOL=https
- N8N_HOST=localhost
- N8N_PORT=5678
- N8N_METRICS=true
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n_user
- DB_POSTGRESDB_PASSWORD=secure_password
- N8N_ENCRYPTION_KEY=your_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=secure_password
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
n8n_data:
postgres_data:
- Запустите контейнеры командой:
docker-compose up -d
Этот файл конфигурации развертывает N8n вместе с PostgreSQL, что является надежным решением для продакшн-среды.
Установка на Linux-сервер с использованием PM2
Для промышленной эксплуатации без Docker рекомендуется использовать менеджер процессов PM2 для обеспечения постоянной работы и автозапуска.
- Установите Node.js и npm.
- Установите N8n глобально:
npm install n8n -g - Установите PM2:
npm install pm2 -g - Запустите N8n под управлением PM2:
pm2 start n8n -- start - Сохраните список процессов PM2 для автозапуска:
pm2 saveиpm2 startup
Базовая и расширенная конфигурация
Конфигурация N8n осуществляется через переменные окружения или файл .env в корневой директории.
| Переменная | Описание | Пример значения |
|---|---|---|
| N8N_PROTOCOL | Протокол для доступа к веб-интерфейсу (http/https) | https |
| N8N_HOST | Хостнейм или IP-адрес сервера | automation.yourcompany.com |
| N8N_PORT | Порт, на котором работает N8n | 5678 |
| WEBHOOK_URL | Публичный URL для вебхуков (если отличается от N8N_HOST) | https://automation.yourcompany.com |
| DB_TYPE | Тип базы данных (sqlite, postgresdb, mysqldb) | postgresdb |
| N8N_ENCRYPTION_KEY | Ключ для шифрования учетных данных. Обязателен и должен быть одинаковым при перезапусках. | 32-символьная случайная строка |
| EXECUTIONS_DATA_PRUNE | Включить автоматическую очистку старых данных выполнений | true |
| EXECUTIONS_DATA_MAX_AGE | Срок хранения данных выполнений (в часах) | 168 (7 дней) |
Обеспечение безопасности локальной установки
- Настройка обратного прокси (Nginx/Apache): Используйте Nginx в качестве обратного прокси для обработки SSL/TLS шифрования (HTTPS). Это обязательно для защиты передаваемых данных.
- Базовая аутентификация: Включите встроенную аутентификацию, установив переменные
N8N_BASIC_AUTH_ACTIVE=true,N8N_BASIC_AUTH_USERиN8N_BASIC_AUTH_PASSWORD. - Настройка брандмауэра: Ограничьте доступ к порту N8n (5678) только с доверенных IP-адресов или внутренней сети.
- Регулярное обновление: Своевременно обновляйте образ Docker или пакет N8n для получения исправлений уязвимостей.
Резервное копирование и восстановление
Для надежной работы необходимо настроить регулярное резервное копирование.
- Данные рабочих процессов: Используйте встроенную функцию экспорта всех workflows в формате JSON через интерфейс или API.
- База данных: Регулярно создавайте дампы базы данных PostgreSQL или MySQL. Для SQLite достаточно копировать файл
database.sqlite. - Файлы и учетные данные: Резервируйте директорию
~/.n8n(или volume Docker), где хранятся зашифрованные учетные данные, файлы и настройки.
Мониторинг и логирование
- Встроенный мониторинг: Включите метрики, установив
N8N_METRICS=true. Метрики доступны по эндпоинту/metricsв формате Prometheus. - Логирование: Настройте уровень детализации логов через переменную
N8N_LOG_LEVEL(debug, info, warn, error). Логи можно направлять в централизованную систему (ELK Stack, Loki). - Внешний мониторинг: Используйте инструменты вроде Uptime Kuma или Nagios для отслеживания доступности эндпоинта
/healthz.
Интеграция с внешними системами и масштабирование
Локальный N8n может взаимодействовать с внутренними системами, недоступными из интернета: локальными CRM, ERP, базами данных, файловыми хранилищами, принт-серверами и т.д. Для масштабирования горизонтального масштабирования (когда один инстанс не справляется с нагрузкой) можно запустить несколько экземпляров N8n в режиме «веб-процесс» (web process) и «воркер-процесс» (worker process), используя внешнюю очередь, такую как Redis, и базовую балансировку нагрузки.
Ответы на часто задаваемые вопросы (FAQ)
Чем локальная установка отличается от облачной версии N8n?
Облачная версия (n8n.cloud) — это управляемый сервис, где N8n размещен на серверах компании-разработчика. Вы платите подписку, и за вами заботятся об обновлениях, инфраструктуре и резервном копировании. Локальная версия — это саморазмещаемое решение, которое вы устанавливаете на свой собственный сервер. Вы полностью контролируете данные и инфраструктуру, но и несете ответственность за настройку, обслуживание, безопасность и обновления.
Какой способ установки выбрать для продакшн-среды?
Для продакшн-среды рекомендуется использовать Docker Compose с PostgreSQL в качестве базы данных. Этот подход обеспечивает изоляцию сервисов, простоту развертывания и обновления, а также высокую надежность хранения данных по сравнению со встроенной SQLite.
Как обновить локально установленный N8n?
- Для Docker: Остановите контейнеры (
docker-compose down), обновите образ (docker-compose pull), и запустите заново (docker-compose up -d). Предварительно сделайте резервную копию данных. - Для npm: Выполните команду
npm update n8n -gи перезапустите процесс N8n.
Как перенести рабочие процессы и настройки с облачной версии на локальную?
В облачном интерфейсе N8n используйте функцию экспорта для каждого рабочего процесса (workflow) или экспортируйте все сразу через настройки пространства (workspace). Загрузите полученные JSON-файлы в вашу локальную установку через интерфейс импорта. Учетные данные (credentials) необходимо будет заново настроить в локальной среде.
Можно ли использовать N8n локально без доступа в интернет?
Да, это возможно в полностью изолированной сети (air-gapped). Для этого необходимо предварительно загрузить все необходимые Docker-образы (n8n, postgres) или npm-пакеты на машину с доступом в интернет, а затем перенести их на целевой сервер. Пользовательские ноды, требующие API внешних сервисов, в таком режиме работать не будут, но логика, работающая с локальными файлами, базами данных и внутренними системами, останется функциональной.
Как решить проблему с «недоверенным сертификатом» при использовании самоподписанного SSL?
При использовании самоподписанного сертификата в обратном прокси браузер будет предупреждать о небезопасном соединении. Чтобы N8n корректно формировал вебхук-URL, необходимо установить переменную окружения NODE_EXTRA_CA_CERTS, указав путь к вашему корневому сертификату, или отключить проверку SSL для исходящих запросов N8n (не рекомендуется для продакшн) через настройки соответствующей ноды или глобально.
Где хранятся данные локального N8n и как их резервировать?
При установке через npm данные по умолчанию хранятся в директории ~/.n8n. В Docker-контейнере они находятся внутри volume, который монтируется к пути /home/node/.n8n. Для резервного копирования необходимо сохранять: 1) Дамп базы данных (PostgreSQL/MySQL) или файл database.sqlite; 2) Содержимое директории .n8n (особенно папку credentials и файл config); 3) Экспортированные JSON-файлы рабочих процессов.
Добавить комментарий