Как установить n8n на свой сервер

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

n8n — это мощный инструмент для автоматизации рабочих процессов с открытым исходным кодом. Его установка на собственный сервер обеспечивает полный контроль над данными, производительностью и конфигурацией. Данное руководство детально описывает процесс установки, настройки и обслуживания n8n на сервере под управлением Linux.

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

Перед началом установки убедитесь, что ваш сервер соответствует следующим требованиям:

    • Операционная система: Ubuntu 20.04/22.04 LTS, Debian 11/12, или другой дистрибутив Linux. Команды в статье приведены для Ubuntu/Debian.
    • Пользователь с привилегиями sudo: У вас должен быть доступ к учетной записи с правами администратора.
    • Минимальные аппаратные ресурсы: 2 ядра CPU, 2 ГБ оперативной памяти, 10 ГБ свободного дискового пространства. Для производственных нагрузок ресурсы должны быть увеличены.
    • Сетевые настройки: Открытые порты (по умолчанию 5678 для n8n и 80/443 для веб-доступа). Убедитесь, что брандмауэр (например, UFW) настроен корректно.
    • Установленный Node.js: n8n требует среду выполнения Node.js версии 18 или выше.

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

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

    Выполните следующие команды в терминале:

    • Обновление списка пакетов: sudo apt update && sudo apt upgrade -y
    • Установка curl: sudo apt install -y curl
    • Добавление репозитория NodeSource для Node.js 20 (LTS): curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    • Установка Node.js и npm: sudo apt install -y nodejs
    • Проверка установки: node --version и npm --version

    Способ 1: Установка n8n с помощью npm (Прямая установка)

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

    • Установите n8n глобально: sudo npm install -g n8n
    • Запустите n8n вручную для проверки: n8n start

    После выполнения этих команд n8n будет доступен по адресу http://ваш_ip_сервера:5678. Однако такой запуск не является постоянным и завершится при закрытии сессии терминала.

    Способ 2: Установка n8n как службы systemd (Рекомендуемый для production)

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

    • Создайте пользователя для n8n (опционально, но рекомендуется для безопасности): sudo useradd -m -s /bin/bash n8n-user
    • Перейдите в домашнюю директорию пользователя и установите n8n локально: sudo -u n8n-user -H sh -c "cd /home/n8n-user && npm install n8n"
    • Создайте файл службы systemd: sudo nano /etc/systemd/system/n8n.service

    Вставьте следующую конфигурацию в файл, заменив `/home/n8n-user` на актуальный путь при необходимости:

    
    [Unit]
    Description=n8n - Workflow Automation Tool
    After=network.target
    
    [Service]
    Type=simple
    User=n8n-user
    ExecStart=/usr/bin/node /home/n8n-user/node_modules/n8n/bin/n8n start
    Restart=on-failure
    RestartSec=10
    Environment="NODE_ENV=production"
    Environment="WEBHOOK_URL=http://localhost:5678/"
    Environment="N8N_BASIC_AUTH_ACTIVE=true"
    Environment="N8N_BASIC_AUTH_USER=admin"
    Environment="N8N_BASIC_AUTH_PASSWORD=your_secure_password_here"
    
    [Install]
    WantedBy=multi-user.target
    
    

    Ключевые параметры среды (Environment):

    • N8N_BASIC_AUTH_ACTIVE, N8N_BASIC_AUTH_USER, N8N_BASIC_AUTH_PASSWORD — включают базовую HTTP аутентификацию. Это критически важно при выносе сервиса в интернет.
    • WEBHOOK_URL — базовый URL для вебхуков.
    • N8N_PROTOCOL, N8N_HOST, N8N_PORT — для тонкой настройки сетевых параметров.
    • Перезагрузите демон systemd, включите и запустите службу:
      • sudo systemctl daemon-reload
      • sudo systemctl enable n8n.service
      • sudo systemctl start n8n.service
    • Проверьте статус службы: sudo systemctl status n8n.service
    • Просмотр логов в реальном времени: sudo journalctl -u n8n.service -f

    Способ 3: Установка n8n с помощью Docker (Изолированная установка)

    Docker обеспечивает изоляцию и простоту управления зависимостями. Убедитесь, что Docker и Docker Compose установлены на вашем сервере.

    • Создайте директорию для проекта и файл docker-compose.yml: mkdir ~/n8n-docker && cd ~/n8n-docker && nano docker-compose.yml

    Добавьте следующую конфигурацию:

    
    version: '3.8'
    
    services:
      n8n:
        image: n8nio/n8n
        container_name: n8n
        restart: unless-stopped
        ports:
          - "5678:5678"
        environment:
          - N8N_BASIC_AUTH_ACTIVE=true
          - N8N_BASIC_AUTH_USER=admin
          - N8N_BASIC_AUTH_PASSWORD=your_secure_password_here
          - NODE_ENV=production
          - WEBHOOK_URL=http://localhost:5678/
          - N8N_PROTOCOL=http
          - N8N_HOST=localhost
          - N8N_PORT=5678
          - N8N_METRICS=true
          - GENERIC_TIMEZONE=Europe/Moscow
        volumes:
          - n8n_data:/home/node/.n8n
        networks:
          - n8n_network
    
    volumes:
      n8n_data:
    
    networks:
      n8n_network:
        driver: bridge
    
    
    • Запустите контейнер в фоновом режиме: docker-compose up -d
    • Проверьте статус контейнера: docker-compose ps
    • Остановка контейнера: docker-compose down (данные сохранятся в томе n8n_data)

    Настройка обратного прокси с помощью Nginx и SSL

    Для безопасного доступа к n8n по стандартным портам (HTTP/80 и HTTPS/443) и настройки SSL-шифрования необходимо установить обратный прокси.

    • Установите Nginx и Certbot: sudo apt install -y nginx certbot python3-certbot-nginx
    • Создайте конфигурационный файл для вашего домена: sudo nano /etc/nginx/sites-available/n8n.yourdomain.com

    Добавьте следующую конфигурацию, заменив `n8n.yourdomain.com` на ваш домен:

    
    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;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }
    
    
    • Активируйте конфигурацию и перезапустите Nginx:
      • sudo ln -s /etc/nginx/sites-available/n8n.yourdomain.com /etc/nginx/sites-enabled/
      • sudo nginx -t (проверка синтаксиса)
      • sudo systemctl reload nginx
    • Получите SSL-сертификат от Let’s Encrypt: sudo certbot --nginx -d n8n.yourdomain.com

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

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

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

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

    Для применения PostgreSQL в n8n, установленном через systemd, добавьте в секцию [Service] файла /etc/systemd/system/n8n.service следующие переменные среды:

    
    Environment="DB_TYPE=postgresdb"
    Environment="DB_POSTGRESDB_HOST=localhost"
    Environment="DB_POSTGRESDB_PORT=5432"
    Environment="DB_POSTGRESDB_DATABASE=n8n_db"
    Environment="DB_POSTGRESDB_USER=n8n_user"
    Environment="DB_POSTGRESDB_PASSWORD=your_strong_db_password"
    Environment="DB_POSTGRESDB_SSL=false"
    
    

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

    Базовое администрирование и обслуживание

    После установки важно правильно управлять сервисом.

    Управление службой systemd:

    • Остановка: sudo systemctl stop n8n
    • Запуск: sudo systemctl start n8n
    • Перезагрузка (после изменения конфигурации): sudo systemctl restart n8n
    • Просмотр логов: sudo journalctl -u n8n -f

    Резервное копирование:

    Критически важные данные n8n (workflows, credentials) хранятся в базе данных. Регулярно создавайте дампы.

    • Для PostgreSQL: sudo -u postgres pg_dump n8n_db > /path/to/backup/n8n_backup_$(date +%Y%m%d).sql
    • Для SQLite (при использовании Docker volume): docker cp n8n:/home/node/.n8n/database.sqlite ./backup.sqlite

    Обновление n8n:

    • Для установки через npm: sudo npm update -g n8n с последующим перезапуском службы.
    • Для Docker: обновите образ в файле docker-compose.yml до последней версии и выполните docker-compose pull && docker-compose up -d.

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

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

    Пароль хранится в базе данных. Для сброса необходимо обновить хэш пароля в таблице user. Можно использовать команду n8n для смены пароля, если есть доступ к серверу: n8n user:reset --email=your@email.com. Альтернативно, отключите базовую аутентификацию (N8N_BASIC_AUTH_ACTIVE=false), перезапустите n8n, зайдите в интерфейс и установите новый пароль в настройках пользователя, после чего снова включите аутентификацию.

    Почему вебхуки n8n не работают из интернета?

    Вероятные причины и решения:

    • Неправильная настройка WEBHOOK_URL. Эта переменная должна содержать публичный URL, по которому доступен ваш n8n (например, https://n8n.yourdomain.com).
    • Проблемы с настройкой обратного прокси. Убедитесь, что Nginx корректно проксирует запросы на порт 5678.
    • Брандмауэр блокирует порт 80/443 или 5678. Проверьте правила UFW или iptables.
    • Для Docker: убедитесь, что порты проброшены корректно, и в контейнере установлена правильная переменная N8N_HOST (часто требуется 0.0.0.0).

    Как увеличить лимит памяти для Node.js в n8n?

    При сложных workflow может потребоваться увеличить лимит памяти. В файле службы systemd (/etc/systemd/system/n8n.service) в строке ExecStart укажите флаг --max-old-space-size.

    ExecStart=/usr/bin/node --max-old-space-size=4096 /home/n8n-user/node_modules/n8n/bin/n8n start

    Значение указано в мегабайтах (например, 4096 = 4 ГБ). После изменения перезагрузите службу.

    Где хранятся файлы конфигурации и данные workflows?

    Локация зависит от способа установки:

    • Установка npm (глобальная): Данные пользователя по умолчанию хранятся в ~/.n8n (директория домашней папки пользователя, от которого запущен процесс).
    • Установка systemd (отдельный пользователь): В домашней директории этого пользователя, например, /home/n8n-user/.n8n.
    • Установка Docker: Внутри Docker volume (по умолчанию с именем n8n_data), который монтируется в путь /home/node/.n8n внутри контейнера.

    Как организовать кластеризацию или горизонтальное масштабирование n8n?

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

    1. Использовать общую базу данных (PostgreSQL) для всех экземпляров.
    2. Настроить внешний брокер сообщений (например, Redis) для координации выполнения workflow. Укажите переменные среды:
      • EXECUTIONS_PROCESS=queue
      • QUEUE_BULL_REDIS_HOST=your_redis_host
      • QUEUE_BULL_REDIS_PORT=6379
    3. Использовать общее хранилище для файлов (если workflow работают с файлами) через S3-совместимое хранилище или общую сетевую файловую систему (NFS).

Как настроить отправку email-уведомлений от n8n?

n8n имеет встроенный узел Email (SMTP). Для его работы необходимо настроить переменные среды SMTP на сервере:


Environment="N8N_EMAIL_SMTP_HOST=smtp.yourprovider.com"
Environment="N8N_EMAIL_SMTP_PORT=587"
Environment="N8N_EMAIL_SMTP_USER=your_email@domain.com"
Environment="N8N_EMAIL_SMTP_PASSWORD=your_app_password"
Environment="N8N_EMAIL_SENDER_ADDRESS=your_email@domain.com"

После перезапуска службы узел Email (SMTP) будет автоматически использовать эти учетные данные.

Заключение

Установка n8n на собственный сервер — процесс, требующий внимания к деталям конфигурации, безопасности и производительности. Рекомендуемый путь для production-среды — использование Docker или systemd-службы в связке с PostgreSQL, Nginx в качестве обратного прокси и обязательным включением аутентификации. Регулярное резервное копирование базы данных и своевременное обновление версии n8n обеспечат стабильную и безопасную работу вашей платформы автоматизации. Данное руководство покрывает ключевые аспекты развертывания и администрирования, позволяя создать надежную основу для построения сложных рабочих процессов.

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

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