Установка и настройка n8n на операционной системе Ubuntu
n8n — это инструмент с открытым исходным кодом для оркестрации рабочих процессов (workflow automation), который позволяет соединять различные приложения, API и сервисы между собой. Его архитектура, основанная на узлах (nodes), предоставляет гибкость и мощь, сравнимую с коммерческими аналогами, но с возможностью полного контроля над данными, так как его можно развернуть на собственном сервере. Операционная система Ubuntu Server, благодаря своей стабильности, широкой поддержке сообщества и безопасности, является одной из наиболее предпочтительных платформ для развертывания n8n в производственной среде.
Предварительные требования и подготовка системы
Перед началом установки n8n необходимо подготовить сервер под управлением Ubuntu 20.04 LTS или более поздней версии. Рекомендуется использовать минимум 2 ГБ оперативной памяти и 2 ядра процессора для стабильной работы, особенно при выполнении нескольких рабочих процессов одновременно. Обязательным условием является наличие прав суперпользователя (sudo).
Первым шагом является обновление индексов пакетов и установка обновлений системы:
sudo apt updatesudo apt upgrade -ycurl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -sudo apt-get install -y nodejssudo npm install -g n8nsudo npm install -g pm2pm2 start n8n --cwd ~ --name "n8n"pm2 startuppm2 savesudo apt install docker.io -ysudo systemctl start dockersudo systemctl enable dockersudo docker run -d --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n -e N8N_BASIC_AUTH_ACTIVE=true -e N8N_BASIC_AUTH_USER=user -e N8N_BASIC_AUTH_PASSWORD=securepass n8nio/n8n
Далее необходимо установить Node.js, так как n8n написан на этом языке. Рекомендуется использовать версию Node.js 18 или выше. Установку можно выполнить через менеджер пакетов Nodesource:
Проверьте корректность установки командой node --version и npm --version.
Способы установки n8n на Ubuntu
Существует несколько методов установки n8n на Ubuntu, выбор которых зависит от требований к окружению и масштабированию.
Установка с использованием npm (менеджер пакетов Node.js)
Это самый прямой способ, подходящий для быстрого развертывания и тестирования. Установка выполняется глобально через npm:
После завершения установки n8n можно запустить простой командой n8n. Однако такой запуск привязан к активной сессии терминала. Для работы в фоновом режиме потребуется использование менеджера процессов, такого как PM2.
Установка и настройка с использованием PM2
PM2 — это продвинутый менеджер процессов для Node.js, который обеспечивает постоянную работу приложения, его автоматический перезапуск при сбоях и управление логированием.
Установите PM2 глобально:
Запустите n8n под управлением PM2:
Для автоматического запуска PM2 при загрузке системы выполните:
Состояние процессов можно проверить командой pm2 status.
Установка с использованием Docker
Docker предоставляет изолированное и воспроизводимое окружение, что упрощает развертывание и обновление. Этот метод рекомендуется для производственных сред.
Установите Docker, если он еще не установлен:
Запустите контейнер n8n с помощью следующей команды, которая монтирует том для сохранения данных и устанавливает переменные окружения:
В данной команде:
— Порт 5678 пробрасывается на хост.
— Данные конфигурации и рабочих процессов сохраняются в директории ~/.n8n на хосте.
— Активирована базовая HTTP-аутентификация для защиты веб-интерфейса.
Конфигурация n8n для производственного использования
Базовая установка требует дополнительной настройки для безопасной и эффективной работы. Основные параметры задаются через переменные окружения. Их можно установить в системе, в файле службы systemd или в Docker-композе.
Ключевые переменные окружения:
| Переменная | Описание | Пример значения |
|---|---|---|
| N8N_BASIC_AUTH_ACTIVE | Включает базовую аутентификацию | true |
| N8N_BASIC_AUTH_USER | Имя пользователя для входа | admin |
| N8N_BASIC_AUTH_PASSWORD | Пароль для входа | secure_password |
| N8N_PROTOCOL | Протокол (http/https) | https |
| WEBHOOK_URL | Публичный URL для вызова вебхуков | https://n8n.yourdomain.com |
| N8N_ENCRYPTION_KEY | Ключ для шифрования учетных данных | your_random_key_32_chars |
| EXECUTIONS_DATA_PRUNE | Включить очистку старых данных выполнений | true |
| EXECUTIONS_DATA_MAX_AGE | Максимальный возраст данных в часах | 168 (неделя) |
Настройка n8n как службы systemd
Для надежной работы в качестве системной службы создайте файл конфигурации systemd: /etc/systemd/system/n8n.service
Содержимое файла может выглядеть так:
[Unit] Description=n8n workflow automation server After=network.target [Service] Type=simple User=ubuntu Environment="N8N_BASIC_AUTH_ACTIVE=true" Environment="N8N_BASIC_AUTH_USER=admin" Environment="N8N_BASIC_AUTH_PASSWORD=your_strong_password" Environment="N8N_ENCRYPTION_KEY=your_super_secret_key_for_encryption" ExecStart=/usr/bin/n8n start Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
После создания файла выполните:
sudo systemctl daemon-reloadsudo systemctl enable n8nsudo systemctl start n8nsudo systemctl status n8n
Настройка обратного прокси с Nginx и SSL
Для безопасного доступа к n8n извне необходимо настроить веб-сервер Nginx в качестве обратного прокси и установить SSL-сертификат от Let’s Encrypt.
Установите Nginx и Certbot:
sudo apt install nginx certbot python3-certbot-nginx -y
Создайте конфигурационный файл виртуального хоста для n8n: /etc/nginx/sites-available/n8n
server {
listen 80;
server_name n8n.yourdomain.com;
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;
}
}
Активируйте конфигурацию и получите SSL-сертификат:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginxsudo certbot --nginx -d n8n.yourdomain.com
Certbot автоматически обновит конфигурацию Nginx для использования HTTPS.
Резервное копирование и восстановление данных
Данные n8n (рабочие процессы, учетные данные, настройки) по умолчанию хранятся в SQLite базе данных в директории ~/.n8n. Для резервного копирования необходимо регулярно архивировать эту папку. Критически важной частью является файл database.sqlite.
Пример команды для создания резервной копии с использованием cron:
tar -czf /backup/n8n_backup_$(date +%Y%m%d).tar.gz -C /home/ubuntu .n8n
Для восстановления достаточно остановить n8n, заменить содержимое директории .n8n из архива и перезапустить службу.
Мониторинг и обслуживание
Для мониторинга работы n8n используйте встроенные логи systemd или PM2:
- Просмотр логов systemd:
sudo journalctl -u n8n -f - Просмотр логов PM2:
pm2 logs n8n
Регулярно обновляйте n8n до последней версии для получения исправлений безопасности и новых функций. Для обновления при установке через npm:
sudo npm update -g n8npm2 restart n8n(илиsudo systemctl restart n8n)
Для Docker-контейнера:
sudo docker pull n8nio/n8nsudo docker stop n8nsudo docker rm n8n- Запустите контейнер заново с теми же параметрами.
Ответы на часто задаваемые вопросы (FAQ)
Как сменить порт, который использует n8n по умолчанию (5678)?
Используйте переменную окружения N8N_PORT. Например, для запуска на порту 8080: export N8N_PORT=8080 && n8n start. В Docker используйте флаг -e N8N_PORT=8080 и измените проброс портов на -p 8080:8080.
Где хранятся мои рабочие процессы и настройки после установки?
При стандартной установке все данные сохраняются в директории пользователя: /home/ваш_пользователь/.n8n. Ключевой файл — database.sqlite. При использовании Docker данные хранятся в смонтированном томе, путь к которому вы указали при запуске (например, -v ~/.n8n:/home/node/.n8n).
Как организовать высокую доступность (High Availability) для n8n?
Для развертывания в режиме высокой доступности необходимо использовать внешнюю базу данных (например, PostgreSQL или MySQL) вместо SQLite. Задайте переменную окружения DB_TYPE=postgresdb и укажите параметры подключения (DB_POSTGRESDB_HOST, DB_POSTGRESDB_DATABASE и т.д.). Затем можно запускать несколько независимых экземпляров n8n, подключенных к одной базе данных, за балансировщиком нагрузки.
Почему n8n перезагружается или останавливается после выхода из SSH-сессии?
Это происходит, если n8n запущен напрямую в терминале, а не как фоновая служба. Для постоянной работы необходимо использовать менеджер процессов (PM2) или службу systemd, как описано в статье.
Как интегрировать собственный API или инструмент, которого нет в списке узлов?
n8n предоставляет несколько вариантов: 1) Использовать универсальные узлы «HTTP Request» или «Webhook» для ручного взаимодействия с API. 2) Создать собственный пользовательский узел, следуя документации по разработке. 3) Установить сообщественный узел через npm, если он уже создан кем-то другим.
Как ограничить доступ к n8n по IP-адресу?
Настройте правила брандмауэра UFW на Ubuntu: sudo ufw allow from ваш_ip to any port 5678. Для веб-доступа через Nginx настройте ограничения в конфигурационном файле Nginx с помощью директив allow и deny внутри блока location.
Как решить проблему с ошибкой «Unable to connect to the database»?
1) Убедитесь, что директория .n8n существует и имеет правильные права на запись для пользователя, от которого запущен процесс. 2) Проверьте, не заблокирован ли файл database.sqlite другим процессом. 3) При использовании внешней БД проверьте корректность параметров подключения и доступность сервера базы данных.
Добавить комментарий