Установка и настройка n8n на Ubuntu: Полное руководство
n8n — это мощный инструмент для автоматизации рабочих процессов с открытым исходным кодом, который позволяет соединять различные приложения, API и сервисы между собой. Данное руководство предоставляет исчерпывающую пошаговую инструкцию по установке, базовой и расширенной настройке n8n на операционной системе Ubuntu Server 20.04 LTS или 22.04 LTS. Мы рассмотрим несколько методов установки, настройку безопасности, конфигурацию базы данных и решение распространенных проблем.
Предварительные требования и подготовка системы
Перед началом установки n8n необходимо подготовить сервер на Ubuntu. Убедитесь, что у вас есть доступ к учетной записи с привилегиями sudo.
Обновление системы и установка базовых пакетов
Первым делом обновите индекс пакетов и установите обновления для системы, а также необходимые вспомогательные пакеты.
- Откройте терминал и выполните следующие команды:
sudo apt update && sudo apt upgrade -ysudo apt install -y curl wget gnupg git- Выполните команды для добавления репозитория NodeSource и установки Node.js:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -sudo apt install -y nodejs- Проверьте корректность установки:
node --versionиnpm --version. - Установите n8n глобально:
sudo npm install -g n8n - После завершения установки вы можете запустить n8n простой командой:
n8n sudo adduser --system --group --no-create-home n8n[Unit]Description=n8n - Workflow Automation ToolDocumentation=https://docs.n8n.ioAfter=network.target[Service]Type=simpleUser=n8nEnvironment="NODE_ENV=production"Environment="WEBHOOK_URL=http://localhost:5678/"ExecStart=/usr/bin/n8n startRestart=on-failureRestartSec=10[Install]WantedBy=multi-user.target- Перезагрузите демон systemd:
sudo systemctl daemon-reload - Включите автозапуск сервиса:
sudo systemctl enable n8n - Запустите сервис:
sudo systemctl start n8n - Проверьте статус:
sudo systemctl status n8n - Для просмотра логов используйте:
sudo journalctl -u n8n -f - Установите Docker:
sudo apt install -y docker.io - Добавьте текущего пользователя в группу docker:
sudo usermod -aG docker $USER(требуется перелогин). docker run -d --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n- Установите PostgreSQL:
sudo apt install -y postgresql postgresql-contrib - Перейдите в учетную запись postgres:
sudo -u postgres psql - В консоли PostgreSQL выполните:
Установка Node.js и npm
n8n написан на Node.js, поэтому его наличие является обязательным. Рекомендуется использовать версию Node.js 18 или выше. Установим ее через менеджер версий NodeSource.
Метод 1: Установка n8n с помощью npm (Самый простой способ)
Этот метод рекомендуется для быстрого развертывания и тестирования. Установка выполняется глобально через npm.
По умолчанию n8n запустится на порту 5678, а веб-интерфейс будет доступен по адресу http://localhost:5678. Однако этот запуск не является фоновым сервисом и завершится при закрытии терминала.
Метод 2: Установка n8n как системного сервиса (Рекомендуемый для production)
Для постоянной работы n8n в фоновом режиме с автоматическим запуском при перезагрузке системы необходимо настроить его как системный сервис.
Создание пользователя для n8n (опционально, но рекомендуется)
Создание и настройка сервисного файла systemd
Создайте файл конфигурации сервиса: sudo nano /etc/systemd/system/n8n.service
Вставьте в файл следующую конфигурацию, адаптировав ее под свои нужды (например, путь установки, пользователя):
Запуск и управление сервисом n8n
Метод 3: Установка с помощью Docker (Наиболее изолированный способ)
Установка через Docker обеспечивает изоляцию и простоту управления зависимостями. Сначала установите Docker, если он еще не установлен.
Запустите n8n в контейнере Docker с помощью следующей команды. Она монтирует том для сохранения данных и перенаправляет порты.
Для более продвинутой конфигурации с использованием Docker Compose создайте файл docker-compose.yml.
Базовая конфигурация и настройка n8n
После успешной установки необходимо выполнить первоначальную настройку. Основные параметры конфигурации задаются через переменные окружения. Их можно установить в сервисном файле systemd (параметр Environment) или в файле .env в домашней директории пользователя n8n.
Ключевые переменные окружения для настройки
| Переменная | Описание | Пример значения |
|---|---|---|
| N8N_PROTOCOL | Протокол для доступа к веб-интерфейсу. | http или https |
| N8N_HOST | Хост, на котором работает n8n. | localhost или IP-адрес сервера |
| N8N_PORT | Порт для веб-интерфейса. | 5678 |
| N8N_ENCRYPTION_KEY | Ключ для шифрования учетных данных. Обязательно измените! | my-secret-key-32-chars-min |
| WEBHOOK_URL | Полный публичный URL, по которому доступен n8n. Важно для корректной работы вебхуков. | http://your-domain.com:5678/ |
| N8N_METRICS | Включение сбора метрик. | true |
| EXECUTIONS_DATA_PRUNE | Включение автоматической очистки старых данных выполненных workflow. | true |
| EXECUTIONS_DATA_MAX_AGE | Максимальный возраст данных выполнения в часах. | 168 (неделя) |
Настройка внешней базы данных (PostgreSQL)
По умолчанию n8n использует встроенную SQLite, что подходит для тестирования. Для production-среды настоятельно рекомендуется использовать внешнюю БД, такую как PostgreSQL.
Установка и настройка PostgreSQL
CREATE DATABASE n8n; CREATE USER n8n_user WITH PASSWORD 'your_strong_password_here'; GRANT ALL PRIVILEGES ON DATABASE n8n TO n8n_user; q
Настройка n8n для работы с PostgreSQL
Добавьте следующие переменные окружения в сервисный файл n8n.service или в файл .env:
DB_TYPE=postgresdbDB_POSTGRESDB_HOST=localhostDB_POSTGRESDB_PORT=5432DB_POSTGRESDB_DATABASE=n8nDB_POSTGRESDB_USER=n8n_userDB_POSTGRESDB_PASSWORD=your_strong_password_here
После добавления переменных перезапустите сервис: sudo systemctl restart n8n.
Настройка безопасности и обратного прокси (Nginx + SSL)
Для безопасного доступа к n8n из интернета необходимо настроить веб-сервер Nginx в качестве обратного прокси и добавить SSL-сертификат от Let’s Encrypt.
Установка Nginx и настройка виртуального хоста
- Установите Nginx:
sudo apt install -y nginx - Создайте конфигурационный файл:
sudo nano /etc/nginx/sites-available/n8n - Добавьте следующую конфигурацию, заменив
your_domain.comна ваше доменное имя:
server {
listen 80;
server_name your_domain.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;
}
}
- Активируйте конфигурацию и перезапустите Nginx:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/sudo nginx -t(проверка конфигурации)sudo systemctl restart nginx
Получение SSL-сертификата с помощью Certbot
- Установите Certbot:
sudo apt install -y certbot python3-certbot-nginx - Получите и установите сертификат:
sudo certbot --nginx -d your_domain.com - Следуйте инструкциям на экране. Certbot автоматически обновит конфигурацию Nginx для использования HTTPS.
После этого не забудьте обновить переменную окружения WEBHOOK_URL в конфигурации n8n на https://your_domain.com и перезапустить сервис.
Обновление n8n до последней версии
Процесс обновления зависит от выбранного метода установки.
- Для установки через npm:
sudo npm update -g n8nс последующим перезапуском сервиса. - Для установки через Docker: Остановите контейнер, удалите его образ и запустите заново с тегом
latestили конкретной версией. - Для установки как сервиса: Обновите через npm, затем перезапустите сервис:
sudo systemctl restart n8n.
Перед обновлением всегда делайте резервную копию данных (директории ~/.n8n или базы данных).
Резервное копирование и восстановление данных
Данные n8n включают workflow, учетные данные, настройки и историю выполнений. Метод резервного копирования зависит от используемой базы данных.
- При использовании SQLite: Скопируйте файл базы данных, обычно находящийся в
~/.n8n/database.sqlite. - При использовании PostgreSQL: Используйте утилиту
pg_dumpдля создания дампа:pg_dump -U n8n_user n8n > n8n_backup.sql. - Общие файлы: Также архивируйте всю директорию
~/.n8n, где хранятся загруженные файлы и конфигурации.
Ответы на часто задаваемые вопросы (FAQ)
Как изменить порт, на котором работает n8n?
Используйте переменную окружения N8N_PORT. Например, в сервисном файле systemd добавьте строку: Environment="N8N_PORT=8080". После этого перезапустите сервис. Не забудьте также обновить правила брандмауэра и конфигурацию обратного прокси, если она используется.
Где хранятся данные n8n по умолчанию?
При стандартной установке все данные (workflow, настройки, база данных SQLite) хранятся в домашней директории пользователя, от которого запущен процесс n8n, в папке .n8n. Например, /home/n8n/.n8n или /root/.n8n.
Как сбросить пароль владельца?
n8n не хранит традиционные пароли. Доступ управляется через «секрет владельца», задаваемый при первом запуске. Если он утерян, вы можете сбросить его, удалив запись из базы данных. Для SQLite выполните: sqlite3 ~/.n8n/database.sqlite "DELETE FROM user;". После перезапуска n8n предложит заново установить учетные данные владельца.
Почему вебхуки из внешних сервисов не доходят до n8n?
Наиболее частые причины:
- Неправильно задана переменная
WEBHOOK_URL. Она должна содержать полный публичный URL, по которому доступен ваш инстанс n8n (например,https://your-domain.com). - Проблемы с настройкой обратного прокси (Nginx/Apache). Убедитесь, что заголовки
X-Forwarded-*передаются корректно. - Заблокирован порт на брандмауэре (если используется прямой доступ по порту).
Как увеличить лимит памяти для ноды?
Если workflow не хватает памяти, можно увеличить лимит для процесса Node.js. В сервисном файле systemd в секции [Service] добавьте параметр Environment="NODE_OPTIONS=--max-old-space-size=2048", где значение указано в мегабайтах. После этого перезагрузите демон и перезапустите сервис.
Как организовать кластеризацию n8n для высокой доступности?
Для работы в режиме кластера (несколько инстансов n8n) необходимы:
- Общая база данных (PostgreSQL или MySQL).
- Общее хранилище файлов (например, S3-совместимое объектное хранилище), настраиваемое через переменную
N8N_S3_ENDPOINTи другие связанные с S3 переменные. - Внешний механизм очередей (Redis, RabbitMQ) для координации выполнения workflow, настраиваемый через переменные
EXECUTIONS_MODE=queueиQUEUE_BULL_REDIS_*.
Это продвинутая конфигурация, требующая тщательного планирования.
Как решить проблему «ETIMEDOUT» или сетевых ошибок при работе нод?
Такие ошибки часто возникают, когда нода пытается сделать HTTP-запрос, но на сервере отсутствует прямой выход в интернет или настроен прокси. Задайте переменные окружения для прокси-сервера в конфигурации n8n:
N8N_PROXY=http://your-proxy-server:portN8N_HTTPS_PROXY=http://your-proxy-server:portNO_PROXY=localhost,127.0.0.1
Как включить базовую аутентификацию для доступа к веб-интерфейсу?
Используйте переменные окружения:
N8N_BASIC_AUTH_ACTIVE=trueN8N_BASIC_AUTH_USER=adminN8N_BASIC_AUTH_PASSWORD=your_password
Это создаст дополнительный слой аутентификации перед стандартным интерфейсом входа n8n.
Комментарии