Установка и настройка 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 update
    • sudo apt upgrade -y

    n8n требует наличия Node.js версии 18 или выше. Рекомендуется устанавливать Node.js через менеджер версий NVM (Node Version Manager) для гибкости управления. Установите 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.

    Для работы в качестве службы и использования реверс-прокси, установите пакет Nginx:

    • sudo apt install nginx -y

    Способ 1: Установка n8n с помощью npm (Базовый метод)

    Самый прямой метод установки — использование менеджера пакетов npm. Этот подход подходит для быстрого развертывания и тестирования. Установите n8n глобально, выполнив команду:

    • sudo npm install -g n8n

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

    • n8n start

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

    Способ 2: Установка n8n как системной службы (Systemd)

    Для обеспечения автозапуска, мониторинга и управления жизненным циклом процесса используется система инициализации systemd. Создайте файл службы:

    • sudo nano /etc/systemd/system/n8n.service

    Вставьте следующую конфигурацию, заменив 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-reload
    • sudo systemctl enable n8n
    • sudo 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 -y
    • sudo systemctl enable --now docker
    • Добавьте вашего пользователя в группу docker: sudo usermod -aG docker $USER (требуется перелогин).

    Создайте директорию для проекта и файл docker-compose.yml:

    • mkdir ~/n8n-docker && cd ~/n8n-docker
    • nano 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 nginx
    • sudo 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.

Комментарии

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

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

Войти

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

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

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