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

n8n — это мощный инструмент для автоматизации рабочих процессов с открытым исходным кодом, который позволяет соединять различные приложения, API и сервисы между собой. Данное руководство предоставляет исчерпывающую пошаговую инструкцию по установке, базовой и расширенной настройке n8n на операционной системе Ubuntu Server 20.04 LTS или 22.04 LTS. Мы рассмотрим несколько методов установки, настройку безопасности, конфигурацию базы данных и решение распространенных проблем.

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

Перед началом установки n8n необходимо подготовить сервер на Ubuntu. Убедитесь, что у вас есть доступ к учетной записи с привилегиями sudo.

Обновление системы и установка базовых пакетов

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

    • Откройте терминал и выполните следующие команды:
    • sudo apt update && sudo apt upgrade -y
    • sudo apt install -y curl wget gnupg git

    Установка Node.js и npm

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

    • Выполните команды для добавления репозитория NodeSource и установки Node.js:
    • curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
    • sudo apt install -y nodejs
    • Проверьте корректность установки: node --version и npm --version.

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

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

    • Установите n8n глобально: sudo npm install -g n8n
    • После завершения установки вы можете запустить n8n простой командой: n8n

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

    Метод 2: Установка n8n как системного сервиса (Рекомендуемый для production)

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

    Создание пользователя для n8n (опционально, но рекомендуется)

    • sudo adduser --system --group --no-create-home n8n

    Создание и настройка сервисного файла systemd

    Создайте файл конфигурации сервиса: sudo nano /etc/systemd/system/n8n.service

    Вставьте в файл следующую конфигурацию, адаптировав ее под свои нужды (например, путь установки, пользователя):

    • [Unit]
    • Description=n8n - Workflow Automation Tool
    • Documentation=https://docs.n8n.io
    • After=network.target
    • [Service]
    • Type=simple
    • User=n8n
    • Environment="NODE_ENV=production"
    • Environment="WEBHOOK_URL=http://localhost:5678/"
    • ExecStart=/usr/bin/n8n start
    • Restart=on-failure
    • RestartSec=10
    • [Install]
    • WantedBy=multi-user.target

    Запуск и управление сервисом n8n

    • Перезагрузите демон systemd: sudo systemctl daemon-reload
    • Включите автозапуск сервиса: sudo systemctl enable n8n
    • Запустите сервис: sudo systemctl start n8n
    • Проверьте статус: sudo systemctl status n8n
    • Для просмотра логов используйте: sudo journalctl -u n8n -f

    Метод 3: Установка с помощью Docker (Наиболее изолированный способ)

    Установка через Docker обеспечивает изоляцию и простоту управления зависимостями. Сначала установите Docker, если он еще не установлен.

    • Установите Docker: sudo apt install -y docker.io
    • Добавьте текущего пользователя в группу docker: sudo usermod -aG docker $USER (требуется перелогин).

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

    • docker run -d --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n

    Для более продвинутой конфигурации с использованием Docker Compose создайте файл docker-compose.yml.

    Базовая конфигурация и настройка n8n

    После успешной установки необходимо выполнить первоначальную настройку. Основные параметры конфигурации задаются через переменные окружения. Их можно установить в сервисном файле systemd (параметр Environment) или в файле .env в домашней директории пользователя n8n.

    Ключевые переменные окружения для настройки

    Переменная Описание Пример значения
    N8N_PROTOCOL Протокол для доступа к веб-интерфейсу. http или https
    N8N_HOST Хост, на котором работает n8n. localhost или IP-адрес сервера
    N8N_PORT Порт для веб-интерфейса. 5678
    N8N_ENCRYPTION_KEY Ключ для шифрования учетных данных. Обязательно измените! my-secret-key-32-chars-min
    WEBHOOK_URL Полный публичный URL, по которому доступен n8n. Важно для корректной работы вебхуков. http://your-domain.com:5678/
    N8N_METRICS Включение сбора метрик. true
    EXECUTIONS_DATA_PRUNE Включение автоматической очистки старых данных выполненных workflow. true
    EXECUTIONS_DATA_MAX_AGE Максимальный возраст данных выполнения в часах. 168 (неделя)

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

    По умолчанию n8n использует встроенную SQLite, что подходит для тестирования. Для production-среды настоятельно рекомендуется использовать внешнюю БД, такую как PostgreSQL.

    Установка и настройка PostgreSQL

    • Установите PostgreSQL: sudo apt install -y postgresql postgresql-contrib
    • Перейдите в учетную запись postgres: sudo -u postgres psql
    • В консоли PostgreSQL выполните:
    CREATE DATABASE n8n;
    CREATE USER n8n_user WITH PASSWORD 'your_strong_password_here';
    GRANT ALL PRIVILEGES ON DATABASE n8n TO n8n_user;
    q
    

    Настройка n8n для работы с PostgreSQL

    Добавьте следующие переменные окружения в сервисный файл n8n.service или в файл .env:

    • DB_TYPE=postgresdb
    • DB_POSTGRESDB_HOST=localhost
    • DB_POSTGRESDB_PORT=5432
    • DB_POSTGRESDB_DATABASE=n8n
    • DB_POSTGRESDB_USER=n8n_user
    • DB_POSTGRESDB_PASSWORD=your_strong_password_here

    После добавления переменных перезапустите сервис: sudo systemctl restart n8n.

    Настройка безопасности и обратного прокси (Nginx + SSL)

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

    Установка Nginx и настройка виртуального хоста

    • Установите Nginx: sudo apt install -y nginx
    • Создайте конфигурационный файл: 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 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 (проверка конфигурации)
    • sudo systemctl restart nginx

    Получение SSL-сертификата с помощью Certbot

    • Установите Certbot: sudo apt install -y certbot python3-certbot-nginx
    • Получите и установите сертификат: sudo certbot --nginx -d your_domain.com
    • Следуйте инструкциям на экране. Certbot автоматически обновит конфигурацию Nginx для использования HTTPS.

    После этого не забудьте обновить переменную окружения WEBHOOK_URL в конфигурации n8n на https://your_domain.com и перезапустить сервис.

    Обновление n8n до последней версии

    Процесс обновления зависит от выбранного метода установки.

    • Для установки через npm: sudo npm update -g n8n с последующим перезапуском сервиса.
    • Для установки через Docker: Остановите контейнер, удалите его образ и запустите заново с тегом latest или конкретной версией.
    • Для установки как сервиса: Обновите через npm, затем перезапустите сервис: sudo systemctl restart n8n.

    Перед обновлением всегда делайте резервную копию данных (директории ~/.n8n или базы данных).

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

    Данные n8n включают workflow, учетные данные, настройки и историю выполнений. Метод резервного копирования зависит от используемой базы данных.

    • При использовании SQLite: Скопируйте файл базы данных, обычно находящийся в ~/.n8n/database.sqlite.
    • При использовании PostgreSQL: Используйте утилиту pg_dump для создания дампа: pg_dump -U n8n_user n8n > n8n_backup.sql.
    • Общие файлы: Также архивируйте всю директорию ~/.n8n, где хранятся загруженные файлы и конфигурации.

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

    Как изменить порт, на котором работает n8n?

    Используйте переменную окружения N8N_PORT. Например, в сервисном файле systemd добавьте строку: Environment="N8N_PORT=8080". После этого перезапустите сервис. Не забудьте также обновить правила брандмауэра и конфигурацию обратного прокси, если она используется.

    Где хранятся данные n8n по умолчанию?

    При стандартной установке все данные (workflow, настройки, база данных SQLite) хранятся в домашней директории пользователя, от которого запущен процесс n8n, в папке .n8n. Например, /home/n8n/.n8n или /root/.n8n.

    Как сбросить пароль владельца?

    n8n не хранит традиционные пароли. Доступ управляется через «секрет владельца», задаваемый при первом запуске. Если он утерян, вы можете сбросить его, удалив запись из базы данных. Для SQLite выполните: sqlite3 ~/.n8n/database.sqlite "DELETE FROM user;". После перезапуска n8n предложит заново установить учетные данные владельца.

    Почему вебхуки из внешних сервисов не доходят до n8n?

    Наиболее частые причины:

    • Неправильно задана переменная WEBHOOK_URL. Она должна содержать полный публичный URL, по которому доступен ваш инстанс n8n (например, https://your-domain.com).
    • Проблемы с настройкой обратного прокси (Nginx/Apache). Убедитесь, что заголовки X-Forwarded-* передаются корректно.
    • Заблокирован порт на брандмауэре (если используется прямой доступ по порту).

    Как увеличить лимит памяти для ноды?

    Если workflow не хватает памяти, можно увеличить лимит для процесса Node.js. В сервисном файле systemd в секции [Service] добавьте параметр Environment="NODE_OPTIONS=--max-old-space-size=2048", где значение указано в мегабайтах. После этого перезагрузите демон и перезапустите сервис.

    Как организовать кластеризацию n8n для высокой доступности?

    Для работы в режиме кластера (несколько инстансов n8n) необходимы:

    • Общая база данных (PostgreSQL или MySQL).
    • Общее хранилище файлов (например, S3-совместимое объектное хранилище), настраиваемое через переменную N8N_S3_ENDPOINT и другие связанные с S3 переменные.
    • Внешний механизм очередей (Redis, RabbitMQ) для координации выполнения workflow, настраиваемый через переменные EXECUTIONS_MODE=queue и QUEUE_BULL_REDIS_*.

    Это продвинутая конфигурация, требующая тщательного планирования.

    Как решить проблему «ETIMEDOUT» или сетевых ошибок при работе нод?

    Такие ошибки часто возникают, когда нода пытается сделать HTTP-запрос, но на сервере отсутствует прямой выход в интернет или настроен прокси. Задайте переменные окружения для прокси-сервера в конфигурации n8n:

    • N8N_PROXY=http://your-proxy-server:port
    • N8N_HTTPS_PROXY=http://your-proxy-server:port
    • NO_PROXY=localhost,127.0.0.1

    Как включить базовую аутентификацию для доступа к веб-интерфейсу?

    Используйте переменные окружения:

    • N8N_BASIC_AUTH_ACTIVE=true
    • N8N_BASIC_AUTH_USER=admin
    • N8N_BASIC_AUTH_PASSWORD=your_password

Это создаст дополнительный слой аутентификации перед стандартным интерфейсом входа n8n.

Комментарии

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

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

Войти

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

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

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