Как развернуть n8n на своем сервере

Развертывание n8n на собственном сервере: Полное руководство

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

Выбор и подготовка сервера

Для работы n8n требуется сервер с операционной системой Linux. Рекомендуется использовать Ubuntu 20.04 LTS или 22.04 LTS в силу их широкой поддержки. Минимальные требования к аппаратным ресурсам зависят от сложности и количества рабочих процессов.

Тип нагрузки Рекомендуемые CPU Рекомендуемая RAM Дисковое пространство
Тестирование, небольшое использование 1-2 ядра 2-4 ГБ 20 ГБ
Производственная среда, умеренная нагрузка 4 ядра 8 ГБ 40-100 ГБ (SSD)
Высокая нагрузка, множество workflow 8+ ядер 16+ ГБ 100+ ГБ (SSD)

Перед установкой обновите пакеты системы: sudo apt update && sudo apt upgrade -y. Убедитесь, что на сервере открыты необходимые порты (по умолчанию 5678 для web-интерфейса и 5679 для внутренней коммуникации в режиме очереди).

Установка зависимостей: Node.js и npm

n8n построен на Node.js. Рекомендуется устанавливать LTS-версию через менеджер версий Node (nvm) или из официальных репозиториев NodeSource.

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

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

    Этот метод подходит для быстрого старта и тестирования.

    • Установите n8n глобально: sudo npm install n8n -g
    • Запустите n8n: n8n start
    • По умолчанию веб-интерфейс будет доступен по адресу http://ваш_сервер:5678.

    Для постоянной работы в фоне используйте процесс-менеджер PM2.

    • Установите PM2: sudo npm install pm2 -g
    • Запустите n8n под управлением PM2: pm2 start n8n --cwd ~/ --name "n8n"
    • Настройте автозагрузку PM2: pm2 startup и pm2 save.

    Способ 2: Развертывание с помощью Docker (Рекомендуемый для production)

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

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

    Создайте директорию для проекта и файл 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=secure_password_here
          - N8N_HOST=ваш_домен_или_ip
          - N8N_PORT=5678
          - N8N_PROTOCOL=https
          - NODE_ENV=production
          - WEBHOOK_URL=https://ваш_домен_или_ip/
          - GENERIC_TIMEZONE=Europe/Moscow
        volumes:
          - n8n_data:/home/node/.n8n
    volumes:
      n8n_data:
    
    

    Запустите контейнер: docker-compose up -d. Для обновления используйте команды: docker-compose pull и docker-compose up -d.

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

    По умолчанию n8n использует SQLite, что не подходит для production. Настройка PostgreSQL обязательна для надежности и многопользовательского режима.

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

    В файле docker-compose.yml добавьте сервис БД и обновите переменные окружения n8n:

    
    services:
      postgres:
        image: postgres:15
        container_name: n8n_postgres
        restart: unless-stopped
        environment:
          - POSTGRES_USER=n8n_user
          - POSTGRES_PASSWORD=strong_password_here
          - POSTGRES_DB=n8n_db
        volumes:
          - postgres_data:/var/lib/postgresql/data
      n8n:
        ...
        environment:
          - DB_TYPE=postgresdb
          - DB_POSTGRESDB_HOST=postgres
          - DB_POSTGRESDB_PORT=5432
          - DB_POSTGRESDB_DATABASE=n8n_db
          - DB_POSTGRESDB_USER=n8n_user
          - DB_POSTGRESDB_PASSWORD=strong_password_here
          

    ... остальные переменные

    depends_on: - postgres volumes: n8n_data: postgres_data:

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

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

    • Установите Nginx: sudo apt install nginx -y
    • Установите Certbot для получения SSL-сертификатов: sudo apt install certbot python3-certbot-nginx -y
    • Создайте конфигурационный файл для вашего домена в /etc/nginx/sites-available/n8n:
    
    server {
        server_name ваш_домен.ru;
    
        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";
        }
    
        

    Для вебхуков рекомендуется увеличение таймаута

    location ~
  • (webhook|hook) {
  • proxy_read_timeout 600s; proxy_pass http://localhost:5678;

    ... остальные proxy_set_header

    } }

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

    • sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
    • sudo nginx -t (проверка конфигурации)
    • sudo systemctl reload nginx
    • sudo certbot --nginx -d ваш_домен.ru

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

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

    Переменная Назначение Пример значения
    N8N_BASIC_AUTH_ACTIVE Включить базовую HTTP аутентификацию true
    N8N_BASIC_AUTH_USER / PASSWORD Учетные данные для входа admin / ваш_пароль
    N8N_ENCRYPTION_KEY Ключ для шифрования учетных данных workflow (обязателен!) длинная_случайная_строка_32+_символа
    EXECUTIONS_DATA_PRUNE Автоматически удалять старые данные выполнений true
    EXECUTIONS_DATA_MAX_AGE Максимальный возраст данных (в часах) 168 (7 дней)
    N8N_USER_MANAGEMENT_DISABLED Отключить встроенную аутентификацию (для использования внешней) false
    WEBHOOK_URL Публичный URL для вызова вебхуков https://ваш_домен.ru/

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

    Резервное копирование критически важно. Основные данные хранятся в двух местах: база данных (workflow, credentials, executions) и файловое хранилище (загруженные файлы, статические данные).

    • Резервное копирование БД PostgreSQL: Используйте pg_dump для создания дампа: docker exec n8n_postgres pg_dump -U n8n_user n8n_db > backup_$(date +%Y%m%d).sql
    • Резервное копирование volume Docker: Скопируйте содержимое тома n8n_data.
    • Обновление при установке через Docker: Остановите контейнеры, создайте резервную копию, обновите образы и перезапустите: docker-compose pull && docker-compose up -d.
    • Обновление при установке через npm: Выполните команду sudo npm update -g n8n и перезапустите процесс через PM2.

    Мониторинг и логирование

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

    • Логи Docker: docker logs n8n --tail 100 -f
    • Логи PM2: pm2 logs n8n
    • Мониторинг в n8n: В разделе «Settings» -> «Metrics» можно включить сбор метрик (Prometheus).
    • Внешний мониторинг: Настройте оповещения на доступность порта 5678 и проверку дискового пространства.

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

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

Если используется база данных PostgreSQL, пароль хранится в хэшированном виде в таблице user. Вы можете создать нового пользователя через SQL-команду или сбросить хэш пароля на известный. Для этого сгенерируйте bcrypt хэш для пароля «admin» (или другого) и обновите его в БД. Альтернативно, временно отключите аутентификацию (N8N_BASIC_AUTH_ACTIVE=false), войдите и заново настройте ее.

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

Наиболее частые причины: неправильная настройка заголовков X-Forwarded-For и X-Forwarded-Proto в Nginx, а также неверное значение переменной окружения WEBHOOK_URL. Убедитесь, что WEBHOOK_URL соответствует вашему публичному домену с правильным протоколом (https), а в конфиге Nginx корректно передаются указанные заголовки.

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

Встроенная система n8n поддерживает несколько пользователей с ролями (owner, member, user). Для ее использования убедитесь, что настроена внешняя БД (PostgreSQL) и не активирована переменная N8N_USER_MANAGEMENT_DISABLED=false (значение по умолчанию). Первый зарегистрированный пользователь станет владельцем (owner). Для более сложных сценариев можно интегрировать внешнюю аутентификацию через OAuth2 (например, Google, GitHub) или LDAP.

Как повысить производительность при большом количестве workflow?

1. Перейдите с SQLite на PostgreSQL. 2. Включите режим очереди (Queue Mode), запустив отдельный процесс-воркер для выполнения workflow. Это требует настройки Redis или RabbitMQ в качестве брокера сообщений. 3. Увеличьте ресурсы сервера (CPU, RAM). 4. Регулярно настраивайте очистку старых данных выполнений (EXECUTIONS_DATA_PRUNE). 5. Для высоконагруженных вебхуков рассмотрите использование выделенного процесса-вебхука.

Где хранятся сохраненные логины и пароли (credentials) и как они защищены?

Учетные данные хранятся в зашифрованном виде в базе данных. Ключ шифрования задается переменной окружения N8N_ENCRYPTION_KEY. Если этот ключ утерян или изменен, все сохраненные credentials станут нечитаемыми. Ключ должен быть длинной случайной строкой (рекомендуется 32+ символа) и надежно храниться в резервных копиях.

Как перенести n8n на другой сервер?

1. Остановите n8n на старом сервере. 2. Создайте полный дамп базы данных PostgreSQL. 3. Скопируйте содержимое volume с пользовательскими данными (папка .n8n). 4. Перенесите дамп БД и файлы на новый сервер. 5. Разверните на новом сервере n8n с той же версией и идентичным ключом шифрования (N8N_ENCRYPTION_KEY). 6. Восстановите БД из дампа и смонтируйте скопированные файлы. 7. Запустите n8n.

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

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