Установка и настройка n8n на Ubuntu 22.04 LTS: Полное руководство
n8n — это мощный инструмент автоматизации рабочих процессов с открытым исходным кодом, использующий парадигму workflow-as-code. Он позволяет создавать сложные цепочки задач, интегрируя различные сервисы, API и протоколы через визуальный редактор. Данное руководство подробно описывает процесс установки, базовой и продвинутой настройки n8n на операционной системе Ubuntu 22.04 LTS, рассматривая несколько методов развертывания для разных сценариев использования.
Предварительные требования и подготовка системы
Перед началом установки n8n необходимо подготовить сервер. Минимальные системные требования для работы n8n в production-среде: 2 ядра CPU, 4 ГБ оперативной памяти, 10 ГБ свободного дискового пространства. Для тестовых целей достаточно 1 ГБ RAM.
Первым шагом является обновление индексов пакетов и установка обновлений системы. Выполните следующие команды в терминале:
sudo apt updatesudo apt upgrade -ycurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash- Закройте и снова откройте терминал или выполните
source ~/.bashrc. - Установите последнюю LTS-версию Node.js:
nvm install --lts. - Проверьте установку:
node --versionиnpm --version. sudo apt install nginx -ysudo npm install -g n8nn8n startsudo nano /etc/systemd/system/n8n.service
n8n требует наличия Node.js версии 18 или выше. Рекомендуется устанавливать Node.js через менеджер версий NVM (Node Version Manager) для гибкости управления. Установите NVM, используя официальный скрипт:
Для работы в качестве службы и использования реверс-прокси, установите пакет Nginx:
Способ 1: Установка n8n с помощью npm (Базовый метод)
Самый прямой метод установки — использование менеджера пакетов npm. Этот подход подходит для быстрого развертывания и тестирования. Установите n8n глобально, выполнив команду:
После завершения установки вы можете запустить n8n вручную из командной строки:
По умолчанию n8n будет доступен по адресу http://localhost:5678. Однако такой запуск не является устойчивым — процесс завершится при закрытии терминала. Для постоянной работы необходимо настроить n8n в качестве системной службы.
Способ 2: Установка n8n как системной службы (Systemd)
Для обеспечения автозапуска, мониторинга и управления жизненным циклом процесса используется система инициализации systemd. Создайте файл службы:
Вставьте следующую конфигурацию, заменив YOUR_USERNAME на имя вашего пользователя Ubuntu (например, ubuntu). Важно указать корректный путь к Node.js и n8n, которые можно узнать командами which node и which n8n.
[Unit] Description=n8n - Workflow Automation Tool After=network.target [Service] Type=simple User=YOUR_USERNAME Environment="NODE_ENV=production" Environment="PATH=/usr/bin:/bin:/usr/local/bin:/home/YOUR_USERNAME/.nvm/versions/node/v18.17.0/bin" ExecStart=/home/YOUR_USERNAME/.nvm/versions/node/v18.17.0/bin/n8n start Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
Активируйте и запустите службу:
sudo systemctl daemon-reloadsudo systemctl enable n8nsudo systemctl start n8n- Проверьте статус:
sudo systemctl status n8n
Логи службы можно просмотреть командой sudo journalctl -u n8n -f.
Способ 3: Установка с использованием Docker и Docker Compose (Рекомендуемый)
Использование Docker обеспечивает изоляцию, простоту обновления и переносимость конфигурации. Установите Docker и Docker Compose:
sudo apt install docker.io docker-compose -ysudo systemctl enable --now docker- Добавьте вашего пользователя в группу docker:
sudo usermod -aG docker $USER(требуется перелогин).
Создайте директорию для проекта и файл docker-compose.yml:
mkdir ~/n8n-docker && cd ~/n8n-dockernano docker-compose.yml
Приведенная ниже конфигурация включает n8n, PostgreSQL для хранения рабочих процессов и настроек (вместо SQLite по умолчанию), а также настройки для production-среды.
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/
- 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_super_secure_encryption_key_32_chars
- GENERIC_TIMEZONE=Europe/Moscow
- NODE_ENV=production
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
networks:
- n8n_network
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
networks:
- n8n_network
volumes:
n8n_data:
postgres_data:
networks:
n8n_network:
driver: bridge
Перед запуском обязательно измените значения паролей (secure_password), домена (your_domain.com) и сгенерируйте надежный ключ шифрования (N8N_ENCRYPTION_KEY). Запустите контейнеры в фоновом режиме:
docker-compose up -d
Проверьте логи: docker-compose logs -f n8n.
Настройка реверс-прокси с Nginx и SSL
Для безопасного доступа к n8n извне необходимо настроить Nginx в качестве реверс-прокси и добавить SSL-сертификат от Let’s Encrypt. Установите Certbot:
sudo apt install certbot python3-certbot-nginx -y
Создайте конфигурационный файл виртуального хоста для n8n:
sudo nano /etc/nginx/sites-available/n8n
Добавьте следующую конфигурацию, заменив your_domain.com на ваш реальный домен. Если n8n работает в Docker на том же сервере, proxy_pass ведет на порт 5678 локальной машины.
server {
listen 80;
server_name your_domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your_domain.com;
ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1: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";
}
Увеличение размера файла для загрузки (при необходимости)
client_max_body_size 100M;
}
Активируйте конфигурацию и получите SSL-сертификат:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/sudo nginx -t(проверка синтаксиса)sudo systemctl reload nginxsudo certbot --nginx -d your_domain.com
Базовая настройка и первый запуск n8n
После успешного развертывания откройте в браузере ваш домен (или http://server_ip:5678 при локальной установке). Вам будет предложено создать учетную запись первого пользователя, которая также является учетной записью администратора. Заполните поля имени, email и пароля.
После входа вы попадете в интерфейс n8n Editor. Основные элементы интерфейса:
- Панель меню слева: Список рабочих процессов (Workflows), настройки (Settings), учетные записи (Credentials).
- Центральная область: Холст для создания workflow.
- Правая панель: Список узлов (Nodes), которые можно перетаскивать на холст.
Для создания первого рабочего процесса перетащите триггерный узел (например, «Schedule» или «Webhook») и узел для действия (например, «HTTP Request» или «Email»). Соедините их, настройте параметры и активируйте workflow с помощью переключателя в верхней части редактора.
Критические аспекты безопасности
При развертывании n8n в production необходимо уделить внимание безопасности.
| Аспект | Рекомендация |
|---|---|
| Аутентификация | Обязательно настройте дополнительные методы входа (Settings > User Management). Рекомендуется LDAP, OAuth2 (Google, GitHub) или SAML. |
| Ключ шифрования (N8N_ENCRYPTION_KEY) | Должен быть задан до первого запуска. Длина — 32 символа. Храните его в безопасности. Без него восстановление зашифрованных данных (учетных записей) невозможно. |
| Доступ к портам | Закройте порт 5678 на брандмауэре (UFW: sudo ufw deny 5678), оставив открытыми только 80 и 443 для Nginx. |
| Регулярные обновления | Регулярно обновляйте образ Docker (docker-compose pull && docker-compose up -d) или пакет npm (sudo npm update -g n8n). |
| Резервное копирование | Регулярно создавайте резервные копии базы данных PostgreSQL и volume’а n8n_data (или директории ~/.n8n). |
Оптимизация производительности
Для обработки большого количества workflow или объемных данных требуется тонкая настройка.
- База данных: Использование PostgreSQL вместо SQLite значительно повышает производительность и надежность в многопользовательской среде.
- Переменные окружения для масштабирования:
EXECUTIONS_DATA_PRUNE=true— автоматическая очистка старых данных выполнений.EXECUTIONS_DATA_MAX_AGE=168— хранить данные выполнения только 7 дней (168 часов).N8N_MAX_PAYLOAD_SIZE=16— увеличение максимального размера принимаемых данных (в МБ).
- Режим очереди (Queue Mode): В production-среде с несколькими воркерами необходимо настроить внешний брокер сообщений (например, Redis) для координации выполнения workflow.
Ответы на часто задаваемые вопросы (FAQ)
Как обновить n8n при установке через Docker?
Остановите контейнеры, обновите образ и перезапустите: docker-compose down && docker-compose pull && docker-compose up -d. Ваши данные сохранятся в volumes.
Где хранятся workflow и учетные данные при установке через npm?
По умолчанию они хранятся в SQLite-базе и файлах в директории пользователя: ~/.n8n. Путь можно изменить через переменные окружения N8N_USER_FOLDER или DB_SQLITE_DATABASE.
Как сбросить пароль администратора?
Если используется база данных SQLite, можно удалить файл ~/.n8n/database.sqlite и перезапустить n8n, после чего заново создать пользователя. Для PostgreSQL требуется выполнить SQL-запрос на обновление хэша пароля в таблице user.
Почему n8n недоступен после настройки Nginx?
Проверьте: 1) Запущен ли сам n8n (sudo systemctl status n8n или docker-compose ps). 2) Корректно ли настроен proxy_pass на правильный IP и порт. 3) Не блокирует ли брандмауэр порт 5678 или 443. 4) Указан ли правильный домен в настройках n8n (N8N_HOST, N8N_WEBHOOK_URL).
Как организовать высокую доступность (High Availability) n8n?
Для HA требуется развернуть несколько экземпляров n8n, общую базу данных PostgreSQL (в кластере), внешний брокер сообщений Redis для режима очереди и общее хранилище файлов (например, S3). Балансировщик нагрузки (например, AWS ALB или Nginx) будет распределять трафик между экземплярами.
Какие есть альтернативы установке на собственный сервер?
n8n предлагает облачный хостинг (n8n.cloud) с управляемой инфраструктурой. Также возможна установка на платформы Kubernetes с помощью официального Helm-чарта, что упрощает оркестрацию и масштабирование.
Как настроить отправку email-уведомлений из n8n?
Используйте узел «Email (SMTP)». В его настройках необходимо указать параметры SMTP-сервера (хост, порт, логин, пароль). Эти учетные данные следует предварительно сохранить в Credentials.
Комментарии