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

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

Выбор метода установки и системные требования

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

Метод установки Сложность Гибкость Рекомендуется для
Docker (Docker Compose) Низкая Средняя Быстрого развертывания, изолированного окружения, большинства пользователей.
Собственный процесс (PM2) Средняя Высокая Продвинутых пользователей, тонкой настройки Node.js окружения.
Kubernetes (Helm) Высокая Очень высокая Кластерных сред, высокодоступных и масштабируемых развертываний.
Прямая установка (npm) Средняя Низкая Тестирования и разработки, не рекомендуется для production.

Минимальные системные требования:

    • Операционная система: Ubuntu 20.04/22.04 LTS, Debian 10/11, CentOS 7/8 или аналогичная.
    • Процессор: 2+ ядра.
    • Оперативная память (RAM): 4 ГБ (рекомендуется 8 ГБ для production).
    • Свободное место на диске: 10 ГБ (зависит от объема обрабатываемых данных).
    • Node.js версии 18 или выше (для методов, отличных от Docker).
    • Docker и Docker Compose (для Docker-метода).

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

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

    Шаг 1: Подготовка сервера и установка Docker

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

    • sudo apt update && sudo apt upgrade -y
    • sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

    Добавьте официальный GPG-ключ Docker и репозиторий:

    • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    • echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    Установите Docker Engine и Docker Compose:

    • sudo apt update
    • sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

    Проверьте установку: sudo docker --version и sudo docker compose version.

    Шаг 2: Создание конфигурационного файла docker-compose.yml

    Создайте отдельный каталог для n8n и перейдите в него: mkdir ~/n8n && cd ~/n8n. Создайте файл docker-compose.yml:

    version: '3.8'
    
    services:
      n8n:
        image: n8nio/n8n:latest
        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
          - N8N_EDITOR_BASE_URL=https://your_domain.com
          - NODE_ENV=production
          - WEBHOOK_URL=https://your_domain.com
          - GENERIC_TIMEZONE=Europe/Moscow
          - N8N_ENCRYPTION_KEY=your_super_secure_encryption_key_32_chars
          - DB_TYPE=postgresdb
          - DB_POSTGRESDB_HOST=postgres
          - DB_POSTGRESDB_PORT=5432
          - DB_POSTGRESDB_DATABASE=n8n
          - DB_POSTGRESDB_USER=n8n_user
          - DB_POSTGRESDB_PASSWORD=your_secure_db_password
          - N8N_METRICS=true
          - N8N_METRICS_INCLUDE_DEFAULT_METRICS=true
        volumes:
          - n8n_data:/home/node/.n8n
        depends_on:
          - postgres
        networks:
          - n8n_network
    
      postgres:
        image: postgres:15-alpine
        container_name: n8n_postgres
        restart: unless-stopped
        environment:
          - POSTGRES_USER=n8n_user
          - POSTGRES_PASSWORD=your_secure_db_password
          - POSTGRES_DB=n8n
        volumes:
          - postgres_data:/var/lib/postgresql/data
        networks:
          - n8n_network
    
    volumes:
      n8n_data:
      postgres_data:
    
    networks:
      n8n_network:
        driver: bridge
    

    Шаг 3: Настройка переменных окружения и запуск

    В файле docker-compose.yml критически важно заменить следующие значения:

    • your_domain.com на ваш реальный домен или IP-адрес.
    • your_super_secure_encryption_key_32_chars на случайную строку длиной ровно 32 символа. Сгенерировать можно командой: openssl rand -base64 24.
    • your_secure_db_password на надежный пароль для базы данных.
    • Настройте GENERIC_TIMEZONE в соответствии с вашим часовым поясом.

    Запустите n8n в фоновом режиме: sudo docker compose up -d. Проверьте логи для отслеживания запуска: sudo docker compose logs -f n8n.

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

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

    Шаг 1: Установка и настройка Nginx

    Установите Nginx: sudo apt install -y nginx. Создайте новый конфигурационный файл виртуального хоста: sudo nano /etc/nginx/sites-available/n8n.

    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;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }
    

    Активируйте конфигурацию и проверьте синтаксис:

    • sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
    • sudo nginx -t
    • sudo systemctl reload nginx

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

    Установите Certbot и плагин для Nginx:

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

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

    • sudo certbot --nginx -d your_domain.com

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

    Базовая конфигурация и первичный вход в n8n

    После успешного запуска откройте в браузере https://your_domain.com. Вам будет предложено создать учетную запись первого пользователя, который станет владельцем (owner) инстанса. Используйте надежный email и пароль. После входа рекомендуется настроить следующие параметры в разделе Settings:

    • Features: Активация/деактивация функций, таких как внешние хранилища, логирование исполнения.
    • Personal settings: Смена пароля, настройка двухфакторной аутентификации (2FA).
    • Instance settings: Настройка времени жизни webhook-ов, лимитов данных, политик очистки.

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

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

    Данные n8n хранятся в двух местах: рабочие процессы и настройки — в базе данных PostgreSQL, а файлы (например, для узла «Read/Write Files from Disk») — в смонтированном томе n8n_data.

    Резервная копия базы данных:

    • sudo docker compose exec postgres pg_dump -U n8n_user n8n > n8n_backup_$(date +%Y%m%d).sql

    Резервная копия файлов:

    • sudo tar -czvf n8n_files_backup_$(date +%Y%m%d).tar.gz /var/lib/docker/volumes/n8n_n8n_data/_data (путь может отличаться).

    Обновление n8n

    Для обновления версии n8n при использовании Docker Compose:

    1. Остановите контейнеры: sudo docker compose down.
    2. Сделайте резервные копии (как описано выше).
    3. Потяните новую версию образа: sudo docker compose pull.
    4. Запустите контейнеры заново: sudo docker compose up -d.
    5. Проверьте логи на наличие ошибок: sudo docker compose logs -f n8n.

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

    Для мониторинга производительности n8n используйте встроенные метрики (Prometheus) и логи Docker.

    Настройка экспорта метрик: Убедитесь, что в docker-compose.yml установлены переменные N8N_METRICS=true. Метрики доступны по эндпоинту https://your_domain.com/metrics. Их можно собирать с помощью Prometheus и визуализировать в Grafana.

    Просмотр логов: Используйте команду sudo docker compose logs --tail=100 -f n8n для просмотра логов в реальном времени. Для долгосрочного хранения логов настройте драйвер логирования Docker, например, на отправку в централизованную систему (Loki, ELK Stack).

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

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

    Измените маппинг портов в секции ports файла docker-compose.yml. Например, "8080:5678" сделает n8n доступным на порту 8080 хоста. Не забудьте также обновить переменную окружения N8N_PORT, если это необходимо, и конфигурацию обратного прокси.

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

    Используйте узел «Email (SMTP)». Для настройки SMTP-транспорта в самом n8n добавьте переменные окружения в docker-compose.yml:

    • N8N_EMAIL_MODE=smtp
    • N8N_SMTP_HOST=smtp.yourprovider.com
    • N8N_SMTP_PORT=587
    • N8N_SMTP_USER=your_email@domain.com
    • N8N_SMTP_PASSWORD=your_app_specific_password
    • N8N_SMTP_SENDER=your_email@domain.com

    Как увеличить лимит на размер загружаемых файлов или payload?

    По умолчанию n8n имеет лимит на размер payload. Чтобы увеличить его, добавьте переменную окружения N8N_PAYLOAD_SIZE_MAX=16 (значение в мегабайтах). В Nginx также нужно увеличить соответствующий лимит, добавив в блок location директиву client_max_body_size 16M;.

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

    В настройках экземпляра (Instance Settings) в веб-интерфейсе n8n вы можете переключить аутентификацию с «Just me» на «Everyone» или «Team». Для «Team» требуется настроить метод аутентификации: встроенная база данных, LDAP, SAML или OAuth2 (например, через Google, GitHub). Настройка производится через соответствующие переменные окружения (например, N8N_AUTHENTICATION_PROVIDERS).

    Почему мои webhook-и не работают после настройки Nginx?

    Наиболее вероятная причина — неправильная конфигурация прокси. Убедитесь, что в конфиге Nginx присутствуют строки proxy_set_header Host $host; и proxy_set_header X-Forwarded-Proto $scheme;. Также проверьте, что переменные окружения N8N_WEBHOOK_URL и WEBHOOK_URL установлены правильно и указывают на ваш публичный домен с https://.

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

    1. На старом сервере создайте полную резервную копию БД и тома с файлами.
    2. Установите n8n на новом сервере, используя ту же версию.
    3. Остановите n8n на новом сервере: sudo docker compose down.
    4. Восстановите дамп базы данных: sudo docker compose exec -T postgres psql -U n8n_user n8n < n8n_backup.sql.
    5. Замените содержимое тома n8n_data на новом сервере скопированными файлами.
    6. Важно: Скопируйте и используйте тот же N8N_ENCRYPTION_KEY, что и на старом сервере, иначе зашифрованные данные (например, credentials) не будут расшифрованы.
    7. Запустите n8n на новом сервере: sudo docker compose up -d.

Комментарии

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

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

Войти

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

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

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