N8n ubuntu

Установка и настройка n8n на операционной системе Ubuntu

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

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

Перед началом установки n8n необходимо подготовить сервер под управлением Ubuntu 20.04 LTS или более поздней версии. Рекомендуется использовать минимум 2 ГБ оперативной памяти и 2 ядра процессора для стабильной работы, особенно при выполнении нескольких рабочих процессов одновременно. Обязательным условием является наличие прав суперпользователя (sudo).

Первым шагом является обновление индексов пакетов и установка обновлений системы:

    • sudo apt update
    • sudo apt upgrade -y

    Далее необходимо установить Node.js, так как n8n написан на этом языке. Рекомендуется использовать версию Node.js 18 или выше. Установку можно выполнить через менеджер пакетов Nodesource:

    • curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
    • sudo apt-get install -y nodejs

    Проверьте корректность установки командой node --version и npm --version.

    Способы установки n8n на Ubuntu

    Существует несколько методов установки n8n на Ubuntu, выбор которых зависит от требований к окружению и масштабированию.

    Установка с использованием npm (менеджер пакетов Node.js)

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

    • sudo npm install -g n8n

    После завершения установки n8n можно запустить простой командой n8n. Однако такой запуск привязан к активной сессии терминала. Для работы в фоновом режиме потребуется использование менеджера процессов, такого как PM2.

    Установка и настройка с использованием PM2

    PM2 — это продвинутый менеджер процессов для Node.js, который обеспечивает постоянную работу приложения, его автоматический перезапуск при сбоях и управление логированием.

    Установите PM2 глобально:

    • sudo npm install -g pm2

    Запустите n8n под управлением PM2:

    • pm2 start n8n --cwd ~ --name "n8n"

    Для автоматического запуска PM2 при загрузке системы выполните:

    • pm2 startup
    • pm2 save

    Состояние процессов можно проверить командой pm2 status.

    Установка с использованием Docker

    Docker предоставляет изолированное и воспроизводимое окружение, что упрощает развертывание и обновление. Этот метод рекомендуется для производственных сред.

    Установите Docker, если он еще не установлен:

    • sudo apt install docker.io -y
    • sudo systemctl start docker
    • sudo systemctl enable docker

    Запустите контейнер n8n с помощью следующей команды, которая монтирует том для сохранения данных и устанавливает переменные окружения:

    • sudo docker run -d --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n -e N8N_BASIC_AUTH_ACTIVE=true -e N8N_BASIC_AUTH_USER=user -e N8N_BASIC_AUTH_PASSWORD=securepass n8nio/n8n

    В данной команде:
    — Порт 5678 пробрасывается на хост.
    — Данные конфигурации и рабочих процессов сохраняются в директории ~/.n8n на хосте.
    — Активирована базовая HTTP-аутентификация для защиты веб-интерфейса.

    Конфигурация n8n для производственного использования

    Базовая установка требует дополнительной настройки для безопасной и эффективной работы. Основные параметры задаются через переменные окружения. Их можно установить в системе, в файле службы systemd или в Docker-композе.

    Ключевые переменные окружения:

    Переменная Описание Пример значения
    N8N_BASIC_AUTH_ACTIVE Включает базовую аутентификацию true
    N8N_BASIC_AUTH_USER Имя пользователя для входа admin
    N8N_BASIC_AUTH_PASSWORD Пароль для входа secure_password
    N8N_PROTOCOL Протокол (http/https) https
    WEBHOOK_URL Публичный URL для вызова вебхуков https://n8n.yourdomain.com
    N8N_ENCRYPTION_KEY Ключ для шифрования учетных данных your_random_key_32_chars
    EXECUTIONS_DATA_PRUNE Включить очистку старых данных выполнений true
    EXECUTIONS_DATA_MAX_AGE Максимальный возраст данных в часах 168 (неделя)

    Настройка n8n как службы systemd

    Для надежной работы в качестве системной службы создайте файл конфигурации systemd: /etc/systemd/system/n8n.service

    Содержимое файла может выглядеть так:

    [Unit]
    Description=n8n workflow automation server
    After=network.target
    
    [Service]
    Type=simple
    User=ubuntu
    Environment="N8N_BASIC_AUTH_ACTIVE=true"
    Environment="N8N_BASIC_AUTH_USER=admin"
    Environment="N8N_BASIC_AUTH_PASSWORD=your_strong_password"
    Environment="N8N_ENCRYPTION_KEY=your_super_secret_key_for_encryption"
    ExecStart=/usr/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

    Настройка обратного прокси с Nginx и SSL

    Для безопасного доступа к n8n извне необходимо настроить веб-сервер Nginx в качестве обратного прокси и установить SSL-сертификат от Let’s Encrypt.

    Установите Nginx и Certbot:

    • sudo apt install nginx certbot python3-certbot-nginx -y

    Создайте конфигурационный файл виртуального хоста для n8n: /etc/nginx/sites-available/n8n

    server {
        listen 80;
        server_name n8n.yourdomain.com;
    
        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;
        }
    }
    

    Активируйте конфигурацию и получите SSL-сертификат:

    • sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
    • sudo nginx -t
    • sudo systemctl reload nginx
    • sudo certbot --nginx -d n8n.yourdomain.com

    Certbot автоматически обновит конфигурацию Nginx для использования HTTPS.

    Резервное копирование и восстановление данных

    Данные n8n (рабочие процессы, учетные данные, настройки) по умолчанию хранятся в SQLite базе данных в директории ~/.n8n. Для резервного копирования необходимо регулярно архивировать эту папку. Критически важной частью является файл database.sqlite.

    Пример команды для создания резервной копии с использованием cron:

    • tar -czf /backup/n8n_backup_$(date +%Y%m%d).tar.gz -C /home/ubuntu .n8n

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

    Мониторинг и обслуживание

    Для мониторинга работы n8n используйте встроенные логи systemd или PM2:

    • Просмотр логов systemd: sudo journalctl -u n8n -f
    • Просмотр логов PM2: pm2 logs n8n

    Регулярно обновляйте n8n до последней версии для получения исправлений безопасности и новых функций. Для обновления при установке через npm:

    • sudo npm update -g n8n
    • pm2 restart n8n (или sudo systemctl restart n8n)

    Для Docker-контейнера:

    • sudo docker pull n8nio/n8n
    • sudo docker stop n8n
    • sudo docker rm n8n
    • Запустите контейнер заново с теми же параметрами.

Ответы на часто задаваемые вопросы (FAQ)

Как сменить порт, который использует n8n по умолчанию (5678)?

Используйте переменную окружения N8N_PORT. Например, для запуска на порту 8080: export N8N_PORT=8080 && n8n start. В Docker используйте флаг -e N8N_PORT=8080 и измените проброс портов на -p 8080:8080.

Где хранятся мои рабочие процессы и настройки после установки?

При стандартной установке все данные сохраняются в директории пользователя: /home/ваш_пользователь/.n8n. Ключевой файл — database.sqlite. При использовании Docker данные хранятся в смонтированном томе, путь к которому вы указали при запуске (например, -v ~/.n8n:/home/node/.n8n).

Как организовать высокую доступность (High Availability) для n8n?

Для развертывания в режиме высокой доступности необходимо использовать внешнюю базу данных (например, PostgreSQL или MySQL) вместо SQLite. Задайте переменную окружения DB_TYPE=postgresdb и укажите параметры подключения (DB_POSTGRESDB_HOST, DB_POSTGRESDB_DATABASE и т.д.). Затем можно запускать несколько независимых экземпляров n8n, подключенных к одной базе данных, за балансировщиком нагрузки.

Почему n8n перезагружается или останавливается после выхода из SSH-сессии?

Это происходит, если n8n запущен напрямую в терминале, а не как фоновая служба. Для постоянной работы необходимо использовать менеджер процессов (PM2) или службу systemd, как описано в статье.

Как интегрировать собственный API или инструмент, которого нет в списке узлов?

n8n предоставляет несколько вариантов: 1) Использовать универсальные узлы «HTTP Request» или «Webhook» для ручного взаимодействия с API. 2) Создать собственный пользовательский узел, следуя документации по разработке. 3) Установить сообщественный узел через npm, если он уже создан кем-то другим.

Как ограничить доступ к n8n по IP-адресу?

Настройте правила брандмауэра UFW на Ubuntu: sudo ufw allow from ваш_ip to any port 5678. Для веб-доступа через Nginx настройте ограничения в конфигурационном файле Nginx с помощью директив allow и deny внутри блока location.

Как решить проблему с ошибкой «Unable to connect to the database»?

1) Убедитесь, что директория .n8n существует и имеет правильные права на запись для пользователя, от которого запущен процесс. 2) Проверьте, не заблокирован ли файл database.sqlite другим процессом. 3) При использовании внешней БД проверьте корректность параметров подключения и доступность сервера базы данных.

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

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