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

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

Подготовка системы Ubuntu к установке n8n

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

    • Обновление индексов пакетов и установка обновлений системы:

      sudo apt update && sudo apt upgrade -y

    • Установка базовых утилит и зависимостей, которые могут потребоваться:

      sudo apt install -y curl wget git build-essential

    • Установка Node.js и npm. n8n требует Node.js версии 16 или выше. Рекомендуется использовать менеджер версий nvm или установить Node.js из официальных репозиториев NodeSource.

      curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -

      sudo apt install -y nodejs

      После установки проверьте версии:

      node --version

      npm --version

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

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

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

      sudo npm install n8n -g

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

      n8n start

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

    Преимущества: Простота и скорость установки; легкое обновление через sudo npm update n8n -g.

    Недостатки: Отсутствие автоматического управления службой (запуск при перезагрузке системы, мониторинг); менее изолированная установка.

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

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

    • Создайте пользователя для запуска службы n8n (рекомендуется для безопасности):

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

    • Создайте директорию для хранения данных n8n и назначьте права:

      sudo mkdir /home/n8n && sudo mkdir /home/n8n/.n8n

      sudo chown -R n8n:n8n /home/n8n

    • Создайте файл конфигурации службы Systemd:

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

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

    
    [Unit]
    Description=n8n - workflow automation tool
    After=network.target
    
    [Service]
    Type=simple
    User=n8n
    Group=n8n
    WorkingDirectory=/home/n8n
    Environment="NODE_ENV=production"
    Environment="N8N_USER_FOLDER=/home/n8n/.n8n"
    ExecStart=/usr/bin/n8n start
    Restart=on-failure
    RestartSec=10
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=n8n
    
    [Install]
    WantedBy=multi-user.target
    
    
    • Перезагрузите демон systemd, включите службу n8n в автозагрузку и запустите ее:

      sudo systemctl daemon-reload

      sudo systemctl enable n8n

      sudo systemctl start n8n

    • Проверьте статус службы:

      sudo systemctl status n8n

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

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

    Установка через Docker обеспечивает максимальную изоляцию и простоту управления зависимостями. Этот метод рекомендуется для контейнеризированных сред.

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

      sudo apt install -y docker.io docker-compose

      sudo systemctl enable --now docker

      sudo usermod -aG docker $USER

      Не забудьте выйти из системы и зайти снова, чтобы изменения вступили в силу.

    • Создайте директорию для проекта n8n и перейдите в нее:

      mkdir ~/n8n-docker && cd ~/n8n-docker

    • Создайте файл docker-compose.yml:

      nano docker-compose.yml

    Добавьте следующую базовую конфигурацию. В этом примере также подключается база данных PostgreSQL для хранения рабочих процессов (рекомендуется для production вместо SQLite).

    
    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
          - DB_POSTGRESDB_PASSWORD=secure_password
          - N8N_ENCRYPTION_KEY=your_super_secure_encryption_key
        volumes:
          - n8n_data:/home/node/.n8n
        depends_on:
          - postgres
    
      postgres:
        image: postgres:15
        container_name: n8n_postgres
        restart: unless-stopped
        environment:
          - POSTGRES_USER=n8n
          - POSTGRES_PASSWORD=secure_password
          - POSTGRES_DB=n8n
        volumes:
          - postgres_data:/var/lib/postgresql/data
    
    volumes:
      n8n_data:
      postgres_data:
    
    
    • Запустите контейнеры в фоновом режиме:

      docker-compose up -d

    • Проверьте логи контейнера n8n для отслеживания запуска:

      docker logs n8n --follow

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

    После успешного запуска n8n требуется выполнить его первоначальную настройку. Откройте веб-интерфейс по адресу http://your_server_ip:5678. Вам будет предложено создать первого пользователя (администратора). Далее критически важно настроить ключевые переменные окружения для production-среды.

    Переменная окружения Описание Пример значения
    N8N_ENCRYPTION_KEY Ключ для шифрования учетных данных. Должен быть длиной 16, 24 или 32 символа. Обязателен для production. my-secret-key-32-chars-123456789
    N8N_PROTOCOL, N8N_HOST, N8N_WEBHOOK_URL Настройки для корректной генерации URL вебхуков. https, automation.example.com, https://automation.example.com
    DB_TYPE Тип базы данных. Для production используйте postgresdb или mysqldb. postgresdb
    EXECUTIONS_DATA_PRUNE, EXECUTIONS_DATA_MAX_AGE Автоматическая очистка старых данных выполненных workflow для экономии места. true, 336 (часов, т.е. 14 дней)
    N8N_SECURE_COOKIE Включение безопасных cookies. Должно быть true при использовании HTTPS. true

    Для установки, работающей через npm или systemd, переменные окружения задаются в файле службы (Environment в n8n.service). Для Docker они указываются в секции environment файла docker-compose.yml.

    Настройка обратного прокси (Nginx) и HTTPS

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

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

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

    • Создайте конфигурационный файл виртуального хоста для n8n:

      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 Connection '';
            proxy_http_version 1.1;
            chunked_transfer_encoding off;
            proxy_buffering off;
            proxy_cache off;
            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

    • Если проверка прошла успешно, перезагрузите Nginx:

      sudo systemctl reload nginx

    • Получите SSL-сертификат:

      sudo certbot --nginx -d your_domain.com

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

    Обновление n8n

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

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

      cd ~/n8n-docker

      docker-compose down

      docker-compose pull

      docker-compose up -d

    • Важно: Перед обновлением всегда делайте резервную копию данных (папку .n8n или базу данных). Ознакомьтесь с примечаниями к выпуску (release notes) на GitHub.

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

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

    • При использовании SQLite или файлового хранилища: Скопируйте всю папку /home/n8n/.n8n (или ту, что указана в N8N_USER_FOLDER).
    • При использовании PostgreSQL (Docker): Используйте команды pg_dump или создайте дамп тома Docker.

      docker exec n8n_postgres pg_dump -U n8n n8n > n8n_backup_$(date +%Y%m%d).sql

    • Восстановление: Для SQLite — замените папку. Для PostgreSQL — восстановите дамп с помощью psql.

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

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

Используйте переменную окружения N8N_PORT. В systemd-службе добавьте строку Environment="N8N_PORT=8080" в файл n8n.service. В Docker укажите ее в секции environment и измените маппинг портов на "8080:8080".

Где хранятся мои workflow и учетные данные?

По умолчанию они хранятся во внутренней базе SQLite в папке пользователя n8n (например, /home/n8n/.n8n). Учетные данные шифруются с помощью ключа, заданного в N8N_ENCRYPTION_KEY. Для production настоятельно рекомендуется перейти на PostgreSQL или MySQL.

Как сбросить пароль администратора?

Остановите n8n. Удалите файл sqlite базы данных (по умолчанию ~/.n8n/database.sqlite) или, если используется внешняя БД, таблицу user. При следующем запуске n8n снова предложит создать первого пользователя. Внимание: Это удалит всех пользователей и их настройки.

Почему вебхуки n8n не работают при использовании обратного прокси?

Убедитесь, что в настройках n8n правильно заданы переменные N8N_PROTOCOL, N8N_HOST и N8N_WEBHOOK_URL, соответствующие вашему публичному домену. В конфигурации Nginx критически важно отключить буферизацию (proxy_buffering off;) и chunked transfer encoding для корректной работы Server-Sent Events (SSE), которые использует n8n.

Как увеличить лимит памяти для нодов (узлов) в workflow?

Для Node.js процессов можно задать переменную окружения NODE_OPTIONS. В systemd-службе добавьте: Environment="NODE_OPTIONS=--max-old-space-size=4096" (это установит лимит в 4 ГБ). В Docker сделайте аналогично в секции environment.

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

Начиная с версии 0.198.0, n8n поддерживает несколько пользователей по умолчанию. Вы можете приглашать новых пользователей через интерфейс «Settings» -> «Users». Для старых версий необходимо было явно включать многопользовательский режим переменной N8N_USER_MANAGEMENT_ENABLED=true.

Какие есть альтернативы установке на чистый Ubuntu?

n8n можно развернуть с помощью готовых облачных образов (DigitalOcean, AWS Marketplace), использовать официальный n8n.sh (управляемый сервис), установить через пакетный менеджер Snap (sudo snap install n8n) или развернуть на Kubernetes с помощью Helm-чарта.

Комментарии

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

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

Войти

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

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

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