Установка n8n на Ubuntu: Полное руководство
n8n — это инструмент с открытым исходным кодом для оркестрации рабочих процессов (workflow automation), который позволяет соединять различные приложения, API и сервисы между собой с помощью визуального редактора. Установка n8n на сервер Ubuntu предоставляет полный контроль над данными и процессами, что критически важно для корпоративной безопасности и интеграции внутренних систем. Данное руководство охватывает несколько методов установки, настройку для production-среды и решение распространенных проблем.
Предварительные требования и подготовка системы
Перед началом установки n8n необходимо подготовить операционную систему Ubuntu (рекомендуется LTS-версия, например 22.04 или 20.04) и убедиться, что выполнены следующие условия.
- Пользователь с правами sudo: Все команды должны выполняться от имени пользователя с привилегиями администратора.
- Обновление системы: Перед установкой любого нового ПО необходимо обновить индекс пакетов и установить обновления безопасности.
sudo apt update && sudo apt upgrade -ysudo apt install -y curl wget git(установка вспомогательных утилит)- Установите nvm, выполнив команду:
curl -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 npm install -g n8nn8n- Установите PM2 глобально через npm:
sudo npm install -g pm2 - Создайте пользователя:
sudo adduser --system --group --no-create-home n8n-user - Запустите n8n от имени этого пользователя через PM2:
sudo pm2 start n8n --name "n8n" -- -o - Сохраните конфигурацию PM2 для автозагрузки:
sudo pm2 saveиsudo pm2 startup - Установите пакет:
sudo apt install -y postgresql postgresql-contrib - Перейдите в консоль PostgreSQL:
sudo -u postgres psql - Создайте базу данных и пользователя для n8n:
CREATE USER n8n_user WITH PASSWORD 'ваш_надежный_пароль';CREATE DATABASE n8n_db OWNER n8n_user;GRANT ALL PRIVILEGES ON DATABASE n8n_db TO n8n_user;
DB_TYPE=postgresdbDB_POSTGRESDB_HOST=localhostDB_POSTGRESDB_PORT=5432DB_POSTGRESDB_DATABASE=n8n_dbDB_POSTGRESDB_USER=n8n_userDB_POSTGRESDB_PASSWORD=ваш_надежный_парольN8N_PROTOCOL=http(или https при наличии SSL)N8N_HOST=ваш_ip_адрес_или_доменWEBHOOK_URL=http://ваш_ip_адрес_или_домен:5678/N8N_ENCRYPTION_KEY=сгенерируйте_свой_уникальный_ключ_32_символаsudo pm2 stop n8nsudo pm2 start n8n --name "n8n" -- --env /home/n8n-user/.n8n/.env- Установите Docker:
sudo apt install -y docker.io - Запустите и добавьте Docker в автозагрузку:
sudo systemctl enable --now docker - Установите Docker Compose:
sudo apt install -y docker-compose - Добавьте вашего пользователя в группу docker:
sudo usermod -aG docker $USER(требуется перелогин).
Откройте терминал и выполните команды:
Способ 1: Установка n8n с помощью npm (Node.js Package Manager)
Этот метод подходит для тестирования, разработки и случаев, когда требуется максимальная гибкость в управлении версиями.
Шаг 1: Установка Node.js и npm
n8n требует Node.js версии 18.10 или выше. Рекомендуется использовать менеджер версий Node.js (nvm) для простоты обновления.
Шаг 2: Установка n8n глобально
Используйте npm для глобальной установки пакета n8n. Это добавит команду n8n в вашу систему.
Флаг -g указывает на глобальную установку, делая n8n доступным для всех пользователей системы (может потребовать прав sudo).
Шаг 3: Запуск n8n в режиме разработки
Для первоначальной проверки запустите n8n в простейшем режиме. В терминале выполните:
После запуска n8n будет доступен по адресу http://localhost:5678. Откройте этот адрес в браузере, и вы увидите интерфейс для создания рабочих процессов. Этот режим использует встроенную базу данных SQLite и не предназначен для постоянного использования, так как процесс завершится при закрытии терминала.
Способ 2: Установка n8n как системного сервиса (Демона) с помощью PM2
Для production-среды необходимо, чтобы n8n работал в фоновом режиме, автоматически запускался при загрузке системы и перезапускался в случае сбоев. Менеджер процессов PM2 идеально подходит для этих задач.
Шаг 1: Установка PM2
Шаг 2: Запуск n8n с помощью PM2
Запустите n8n как процесс под управлением PM2. Рекомендуется предварительно создать отдельного системного пользователя для n8n для повышения безопасности.
Флаг -o в команде запуска позволяет n8n работать на всех сетевых интерфейсах (0.0.0.0), что необходимо для доступа с других машин.
Шаг 3: Настройка внешней базы данных (PostgreSQL)
Для надежной работы в production обязательно需要使用 внешнюю базу данных. SQLite не подходит для многопользовательской среды и может привести к потере данных.
Установите и настройте PostgreSQL:
Для запуска n8n с использованием PostgreSQL необходимо установить переменные окружения. Самый удобный способ — использовать файл .env в домашней директории пользователя n8n.
Создайте файл /home/n8n-user/.n8n/.env со следующим содержимым:
Затем перезапустите процесс n8n через PM2 с указанием пути к файлу .env:
Способ 3: Установка с помощью Docker и Docker Compose
Docker предоставляет наиболее изолированный и воспроизводимый способ развертывания n8n, упрощая управление зависимостями и обновлениями.
Шаг 1: Установка Docker и Docker Compose
Шаг 2: Создание docker-compose.yml
Создайте директорию для проекта, например ~/n8n-docker, и внутри нее создайте файл docker-compose.yml.
version: '3.8'
services:
postgres:
image: postgres:15-alpine
restart: unless-stopped
environment:
- POSTGRES_USER=n8n_user
- POSTGRES_PASSWORD=ваш_надежный_пароль
- POSTGRES_DB=n8n_db
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n_user -d n8n_db"]
interval: 10s
timeout: 5s
retries: 5
n8n:
image: n8nio/n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_DATABASE_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n_db
- DB_POSTGRESDB_USER=n8n_user
- DB_POSTGRESDB_PASSWORD=ваш_надежный_пароль
- N8N_PROTOCOL=http
- N8N_HOST=localhost
- WEBHOOK_URL=http://localhost:5678/
- NODE_ENV=production
- GENERIC_TIMEZONE=Europe/Moscow
- N8N_ENCRYPTION_KEY=сгенерируйте_свой_уникальный_ключ_32_символа
volumes:
- n8n_data:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
links:
- postgres
volumes:
postgres_data:
n8n_data:
Шаг 3: Запуск n8n в Docker
В директории с файлом docker-compose.yml выполните команду:
docker-compose up -d
Флаг -d запускает контейнеры в фоновом режиме. n8n будет доступен на порту 5678 вашего сервера.
Настройка обратного прокси (Nginx) и SSL
Для безопасного доступа к n8n из интернета необходимо настроить веб-сервер Nginx в качестве обратного прокси и установить SSL-сертификат от Let’s Encrypt.
Шаг 1: Установка Nginx и Certbot
sudo apt install -y nginx certbot python3-certbot-nginx
Шаг 2: Создание конфигурационного файла для n8n
Создайте файл /etc/nginx/sites-available/n8n со следующим содержимым:
server {
listen 80;
server_name ваш_домен.com; Замените на ваш домен или IP
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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Шаг 3: Активация конфигурации и получение SSL
- Активируйте сайт:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/ - Проверьте синтаксис Nginx:
sudo nginx -t - Перезагрузите Nginx:
sudo systemctl reload nginx - Получите SSL-сертификат:
sudo certbot --nginx -d ваш_домен.com
Certbot автоматически обновит конфигурацию Nginx для использования HTTPS и настроит автоматическое продление сертификата.
Базовое администрирование и обновление
Управление службой n8n
В зависимости от метода установки используйте соответствующие команды:
| Действие | При установке через PM2 | При установке через Docker Compose |
|---|---|---|
| Просмотр логов | sudo pm2 logs n8n |
docker-compose logs -f n8n |
| Остановка | sudo pm2 stop n8n |
docker-compose stop |
| Перезапуск | sudo pm2 restart n8n |
docker-compose restart n8n |
| Автозагрузка | sudo pm2 startup и sudo pm2 save |
Добавить restart: unless-stopped в docker-compose.yml |
Обновление n8n
- Для установки через npm:
sudo npm update -g n8nи перезапуск PM2. - Для установки через Docker: Обновите образ:
docker-compose pull n8nи перезапустите:docker-compose up -d.
Ответы на часто задаваемые вопросы (FAQ)
1. Как сменить порт, на котором работает n8n?
Используйте переменную окружения N8N_PORT. Например, для порта 8080: в файле .env добавьте строку N8N_PORT=8080 и перезапустите n8n. В Docker Compose измените маппинг портов в секции ports на "8080:5678".
2. Как настроить аутентификацию для веб-интерфейса n8n?
Для production-среды настоятельно рекомендуется включить базовую аутентификацию. Установите следующие переменные окружения:
N8N_BASIC_AUTH_ACTIVE=trueN8N_BASIC_AUTH_USER=ваш_логинN8N_BASIC_AUTH_PASSWORD=ваш_пароль
3. Где хранятся рабочие процессы (workflows) и учетные данные?
При использовании PostgreSQL все данные (workflows, credentials, execution history) хранятся в таблицах этой базы данных. При использовании SQLite по умолчанию данные хранятся в файле ~/.n8n/database.sqlite. В Docker-установке данные сохраняются в смонтированном томе n8n_data.
4. Как выполнить резервное копирование данных n8n?
Необходимо резервировать саму базу данных. Для PostgreSQL используйте утилиту pg_dump:
pg_dump -U n8n_user n8n_db > n8n_backup_$(date +%Y%m%d).sql
Для Docker-установки можно создать дамп из контейнера или скопировать содержимое тома.
5. Почему вебхуки n8n не работают из интернета?
Убедитесь, что:
- В переменной
WEBHOOK_URLуказан правильный публичный адрес вашего сервера (домен или IP). - Порт 5678 (или 443 при использовании Nginx) открыт в файрволе:
sudo ufw allow 5678(для теста) илиsudo ufw allow 'Nginx Full'. - В настройках роутера выполнен проброс портов на внутренний IP-адрес сервера, если n8n работает в локальной сети.
6. Как увеличить лимит памяти для n8n?
При запуске через PM2 можно указать максимальный объем памяти. Отредактируйте процесс в PM2: pm2 edit n8n и в поле max_memory_restart укажите значение, например, "1G". Для Docker укажите ограничения в секции deploy.resources.limits файла docker-compose.yml.
Заключение
Установка n8n на Ubuntu может быть выполнена различными способами в зависимости от требований к среде выполнения. Для тестирования и разработки достаточно простой установки через npm. Для production-среды рекомендуется использовать связку PM2 + PostgreSQL или, что предпочтительнее, Docker Compose, что обеспечивает изоляцию, простоту развертывания и масштабирования. Критически важными шагами являются настройка внешней базы данных, реализация обратного прокси с SSL-шифрованием и настройка базовой аутентификации для защиты веб-интерфейса. Регулярное обновление n8n до последней версии и организация резервного копирования базы данных гарантируют стабильную и безопасную работу платформы автоматизации.
Комментарии