Установка и настройка n8n на Ubuntu: Полное руководство
n8n — это инструмент с открытым исходным кодом для оркестрации рабочих процессов (workflow automation), который позволяет соединять различные приложения, API и сервисы без необходимости писать код. Установка n8n на операционную систему Ubuntu может быть выполнена несколькими методами, каждый из которых подходит для разных сценариев использования: от быстрого тестирования до промышленной эксплуатации. Данное руководство детально рассматривает все основные способы установки, их преимущества и недостатки, а также последующую настройку и обслуживание.
Подготовка системы Ubuntu к установке n8n
Перед началом установки n8n необходимо убедиться, что система обновлена и на ней установлены ключевые зависимости. Выполните следующие команды в терминале для подготовки вашего сервера Ubuntu (версии 20.04 LTS, 22.04 LTS или новее).
- Обновление индексов пакетов и установка обновлений системы:
sudo apt update && sudo apt upgrade -y - Установка базовых утилит и зависимостей, которые могут потребоваться:
sudo apt install -y curl wget git build-essential - Установка Node.js и npm. n8n требует Node.js версии 16 или выше. Рекомендуется использовать менеджер версий nvm или установить Node.js из официальных репозиториев NodeSource.
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -sudo apt install -y nodejsПосле установки проверьте версии:
node --versionnpm --version - Установите n8n глобально:
sudo npm install n8n -g - После завершения установки вы можете запустить n8n простой командой:
n8n start - По умолчанию n8n будет доступен по адресу
http://localhost:5678. Веб-интерфейс откроется после перехода по этому адресу в браузере. - Создайте пользователя для запуска службы n8n (рекомендуется для безопасности):
sudo adduser --system --group --no-create-home n8n - Создайте директорию для хранения данных n8n и назначьте права:
sudo mkdir /home/n8n && sudo mkdir /home/n8n/.n8nsudo chown -R n8n:n8n /home/n8n - Создайте файл конфигурации службы Systemd:
sudo nano /etc/systemd/system/n8n.service
Способ 1: Установка n8n с помощью npm (менеджер пакетов Node.js)
Это самый прямой метод установки, идеально подходящий для разработки и быстрого развертывания. Установка выполняется глобально через npm.
Преимущества: Простота и скорость установки; легкое обновление через sudo npm update n8n -g.
Недостатки: Отсутствие автоматического управления службой (запуск при перезагрузке системы, мониторинг); менее изолированная установка.
Способ 2: Установка n8n как системной службы (Systemd Service)
Для использования n8n на производственном сервере необходимо настроить его как службу, которая будет автоматически запускаться при загрузке системы и перезапускаться в случае сбоев.
Добавьте в файл следующую конфигурацию, адаптировав параметры под свои нужды (например, домен, порт):
[Unit]
Description=n8n - workflow automation tool
After=network.target
[Service]
Type=simple
User=n8n
Group=n8n
WorkingDirectory=/home/n8n
Environment="NODE_ENV=production"
Environment="N8N_USER_FOLDER=/home/n8n/.n8n"
ExecStart=/usr/bin/n8n start
Restart=on-failure
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=n8n
[Install]
WantedBy=multi-user.target
- Перезагрузите демон systemd, включите службу n8n в автозагрузку и запустите ее:
sudo systemctl daemon-reloadsudo systemctl enable n8nsudo systemctl start n8n - Проверьте статус службы:
sudo systemctl status n8n
Теперь n8n будет работать в фоновом режиме и автоматически запускаться при каждой загрузке сервера.
Способ 3: Установка n8n с помощью Docker
Установка через Docker обеспечивает максимальную изоляцию и простоту управления зависимостями. Этот метод рекомендуется для контейнеризированных сред.
- Установите Docker и Docker Compose, если они еще не установлены:
sudo apt install -y docker.io docker-composesudo systemctl enable --now dockersudo usermod -aG docker $USERНе забудьте выйти из системы и зайти снова, чтобы изменения вступили в силу.
- Создайте директорию для проекта n8n и перейдите в нее:
mkdir ~/n8n-docker && cd ~/n8n-docker - Создайте файл
docker-compose.yml:nano docker-compose.yml
Добавьте следующую базовую конфигурацию. В этом примере также подключается база данных PostgreSQL для хранения рабочих процессов (рекомендуется для production вместо SQLite).
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
- DB_POSTGRESDB_PASSWORD=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
- POSTGRES_PASSWORD=secure_password
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
n8n_data:
postgres_data:
- Запустите контейнеры в фоновом режиме:
docker-compose up -d - Проверьте логи контейнера n8n для отслеживания запуска:
docker logs n8n --follow
Базовая настройка и конфигурация n8n
После успешного запуска n8n требуется выполнить его первоначальную настройку. Откройте веб-интерфейс по адресу http://your_server_ip:5678. Вам будет предложено создать первого пользователя (администратора). Далее критически важно настроить ключевые переменные окружения для production-среды.
| Переменная окружения | Описание | Пример значения |
|---|---|---|
N8N_ENCRYPTION_KEY |
Ключ для шифрования учетных данных. Должен быть длиной 16, 24 или 32 символа. Обязателен для production. | my-secret-key-32-chars-123456789 |
N8N_PROTOCOL, N8N_HOST, N8N_WEBHOOK_URL |
Настройки для корректной генерации URL вебхуков. | https, automation.example.com, https://automation.example.com |
DB_TYPE |
Тип базы данных. Для production используйте postgresdb или mysqldb. |
postgresdb |
EXECUTIONS_DATA_PRUNE, EXECUTIONS_DATA_MAX_AGE |
Автоматическая очистка старых данных выполненных workflow для экономии места. | true, 336 (часов, т.е. 14 дней) |
N8N_SECURE_COOKIE |
Включение безопасных cookies. Должно быть true при использовании HTTPS. |
true |
Для установки, работающей через npm или systemd, переменные окружения задаются в файле службы (Environment в n8n.service). Для Docker они указываются в секции environment файла docker-compose.yml.
Настройка обратного прокси (Nginx) и HTTPS
Для безопасного доступа к n8n из интернета необходимо настроить веб-сервер Nginx в качестве обратного прокси и получить SSL-сертификат от Let’s Encrypt.
- Установите Nginx и Certbot:
sudo apt install -y nginx certbot python3-certbot-nginx - Создайте конфигурационный файл виртуального хоста для n8n:
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 Connection '';
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
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 - Если проверка прошла успешно, перезагрузите Nginx:
sudo systemctl reload nginx - Получите SSL-сертификат:
sudo certbot --nginx -d your_domain.comCertbot автоматически обновит конфигурацию Nginx для использования HTTPS.
Обновление n8n
Процесс обновления зависит от выбранного метода установки.
- Для установки через npm:
sudo npm update n8n -g, затем перезапустите службу:sudo systemctl restart n8n. - Для установки через Docker: Остановите контейнеры, обновите образ и пересоздайте их:
cd ~/n8n-dockerdocker-compose downdocker-compose pulldocker-compose up -d - Важно: Перед обновлением всегда делайте резервную копию данных (папку
.n8nили базу данных). Ознакомьтесь с примечаниями к выпуску (release notes) на GitHub.
Резервное копирование и восстановление
Регулярное резервное копирование данных n8n является обязательной практикой.
- При использовании SQLite или файлового хранилища: Скопируйте всю папку
/home/n8n/.n8n(или ту, что указана вN8N_USER_FOLDER). - При использовании PostgreSQL (Docker): Используйте команды
pg_dumpили создайте дамп тома Docker.docker exec n8n_postgres pg_dump -U n8n n8n > n8n_backup_$(date +%Y%m%d).sql - Восстановление: Для SQLite — замените папку. Для PostgreSQL — восстановите дамп с помощью
psql.
Ответы на часто задаваемые вопросы (FAQ)
Как изменить порт, на котором работает n8n?
Используйте переменную окружения N8N_PORT. В systemd-службе добавьте строку Environment="N8N_PORT=8080" в файл n8n.service. В Docker укажите ее в секции environment и измените маппинг портов на "8080:8080".
Где хранятся мои workflow и учетные данные?
По умолчанию они хранятся во внутренней базе SQLite в папке пользователя n8n (например, /home/n8n/.n8n). Учетные данные шифруются с помощью ключа, заданного в N8N_ENCRYPTION_KEY. Для production настоятельно рекомендуется перейти на PostgreSQL или MySQL.
Как сбросить пароль администратора?
Остановите n8n. Удалите файл sqlite базы данных (по умолчанию ~/.n8n/database.sqlite) или, если используется внешняя БД, таблицу user. При следующем запуске n8n снова предложит создать первого пользователя. Внимание: Это удалит всех пользователей и их настройки.
Почему вебхуки n8n не работают при использовании обратного прокси?
Убедитесь, что в настройках n8n правильно заданы переменные N8N_PROTOCOL, N8N_HOST и N8N_WEBHOOK_URL, соответствующие вашему публичному домену. В конфигурации Nginx критически важно отключить буферизацию (proxy_buffering off;) и chunked transfer encoding для корректной работы Server-Sent Events (SSE), которые использует n8n.
Как увеличить лимит памяти для нодов (узлов) в workflow?
Для Node.js процессов можно задать переменную окружения NODE_OPTIONS. В systemd-службе добавьте: Environment="NODE_OPTIONS=--max-old-space-size=4096" (это установит лимит в 4 ГБ). В Docker сделайте аналогично в секции environment.
Как организовать многопользовательский доступ?
Начиная с версии 0.198.0, n8n поддерживает несколько пользователей по умолчанию. Вы можете приглашать новых пользователей через интерфейс «Settings» -> «Users». Для старых версий необходимо было явно включать многопользовательский режим переменной N8N_USER_MANAGEMENT_ENABLED=true.
Какие есть альтернативы установке на чистый Ubuntu?
n8n можно развернуть с помощью готовых облачных образов (DigitalOcean, AWS Marketplace), использовать официальный n8n.sh (управляемый сервис), установить через пакетный менеджер Snap (sudo snap install n8n) или развернуть на Kubernetes с помощью Helm-чарта.
Комментарии