Установка n8n на Ubuntu: Полное руководство

n8n — это инструмент с открытым исходным кодом для оркестрации рабочих процессов (workflow automation), который позволяет соединять различные приложения, API и сервисы между собой с помощью визуального редактора. Установка n8n на сервер Ubuntu предоставляет полный контроль над данными и процессами, что критически важно для корпоративной безопасности и интеграции внутренних систем. Данное руководство охватывает несколько методов установки, настройку для production-среды и решение распространенных проблем.

Предварительные требования и подготовка системы

Перед началом установки n8n необходимо подготовить операционную систему Ubuntu (рекомендуется LTS-версия, например 22.04 или 20.04) и убедиться, что выполнены следующие условия.

    • Пользователь с правами sudo: Все команды должны выполняться от имени пользователя с привилегиями администратора.
    • Обновление системы: Перед установкой любого нового ПО необходимо обновить индекс пакетов и установить обновления безопасности.

    Откройте терминал и выполните команды:

    • sudo apt update && sudo apt upgrade -y
    • sudo apt install -y curl wget git (установка вспомогательных утилит)

    Способ 1: Установка n8n с помощью npm (Node.js Package Manager)

    Этот метод подходит для тестирования, разработки и случаев, когда требуется максимальная гибкость в управлении версиями.

    Шаг 1: Установка Node.js и npm

    n8n требует Node.js версии 18.10 или выше. Рекомендуется использовать менеджер версий Node.js (nvm) для простоты обновления.

    • Установите 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

    Шаг 2: Установка n8n глобально

    Используйте npm для глобальной установки пакета n8n. Это добавит команду n8n в вашу систему.

    • sudo npm install -g n8n

    Флаг -g указывает на глобальную установку, делая n8n доступным для всех пользователей системы (может потребовать прав sudo).

    Шаг 3: Запуск n8n в режиме разработки

    Для первоначальной проверки запустите n8n в простейшем режиме. В терминале выполните:

    • n8n

    После запуска n8n будет доступен по адресу http://localhost:5678. Откройте этот адрес в браузере, и вы увидите интерфейс для создания рабочих процессов. Этот режим использует встроенную базу данных SQLite и не предназначен для постоянного использования, так как процесс завершится при закрытии терминала.

    Способ 2: Установка n8n как системного сервиса (Демона) с помощью PM2

    Для production-среды необходимо, чтобы n8n работал в фоновом режиме, автоматически запускался при загрузке системы и перезапускался в случае сбоев. Менеджер процессов PM2 идеально подходит для этих задач.

    Шаг 1: Установка PM2

    • Установите PM2 глобально через npm: sudo npm install -g pm2

    Шаг 2: Запуск n8n с помощью PM2

    Запустите n8n как процесс под управлением PM2. Рекомендуется предварительно создать отдельного системного пользователя для n8n для повышения безопасности.

    • Создайте пользователя: 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

    Флаг -o в команде запуска позволяет n8n работать на всех сетевых интерфейсах (0.0.0.0), что необходимо для доступа с других машин.

    Шаг 3: Настройка внешней базы данных (PostgreSQL)

    Для надежной работы в production обязательно需要使用 внешнюю базу данных. SQLite не подходит для многопользовательской среды и может привести к потере данных.

    Установите и настройте PostgreSQL:

    • Установите пакет: 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;

    Для запуска n8n с использованием PostgreSQL необходимо установить переменные окружения. Самый удобный способ — использовать файл .env в домашней директории пользователя n8n.

    Создайте файл /home/n8n-user/.n8n/.env со следующим содержимым:

    • DB_TYPE=postgresdb
    • DB_POSTGRESDB_HOST=localhost
    • DB_POSTGRESDB_PORT=5432
    • DB_POSTGRESDB_DATABASE=n8n_db
    • DB_POSTGRESDB_USER=n8n_user
    • DB_POSTGRESDB_PASSWORD=ваш_надежный_пароль
    • N8N_PROTOCOL=http (или https при наличии SSL)
    • N8N_HOST=ваш_ip_адрес_или_домен
    • WEBHOOK_URL=http://ваш_ip_адрес_или_домен:5678/
    • N8N_ENCRYPTION_KEY=сгенерируйте_свой_уникальный_ключ_32_символа

    Затем перезапустите процесс n8n через PM2 с указанием пути к файлу .env:

    • sudo pm2 stop n8n
    • sudo pm2 start n8n --name "n8n" -- --env /home/n8n-user/.n8n/.env

    Способ 3: Установка с помощью Docker и Docker Compose

    Docker предоставляет наиболее изолированный и воспроизводимый способ развертывания n8n, упрощая управление зависимостями и обновлениями.

    Шаг 1: Установка Docker и Docker Compose

    • Установите 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 (требуется перелогин).

    Шаг 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=true
    • N8N_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 до последней версии и организация резервного копирования базы данных гарантируют стабильную и безопасную работу платформы автоматизации.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Войти

Зарегистрироваться

Сбросить пароль

Пожалуйста, введите ваше имя пользователя или эл. адрес, вы получите письмо со ссылкой для сброса пароля.