Skip to content

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

Это подробное руководство по развертыванию n8n на собственном сервере. В нем описаны все шаги от подготовки сервера до настройки и запуска.

Предварительные требования

Для следования этому руководству вам понадобится:

  • Сервер с Ubuntu 20.04+ / Debian 11+ (или другой Linux-дистрибутив)
  • SSH доступ к серверу с правами sudo
  • Доменное имя, указывающее на IP-адрес вашего сервера (для HTTPS)
  • Базовые знания работы с командной строкой Linux

Способ установки

Мы будем использовать Docker для развертывания n8n. Это рекомендуемый подход для production-окружений.


Шаг 1: Подключение к серверу

Подключитесь к вашему серверу по SSH:

bash
ssh your_username@your_server_ip

Замените your_username на ваше имя пользователя и your_server_ip на IP-адрес вашего сервера.

Шаг 2: Установка Docker

Если Docker еще не установлен, выполните следующие команды:

bash
# Обновление системы
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

# Добавление репозитория Docker
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
sudo apt install -y docker-ce docker-ce-cli containerd.io

# Установка Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# Добавление текущего пользователя в группу docker
sudo usermod -aG docker $USER

# Проверка установки
docker --version
docker-compose --version

Перезайдите в систему для применения изменений группы.

Шаг 3: Создание директории для n8n

bash
# Создание директории для данных n8n
mkdir -p ~/n8n-data
cd ~/n8n-data

Шаг 4: Создание docker-compose.yml

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

bash
nano docker-compose.yml

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

yaml
version: '3.8'

services:
  postgres:
    image: postgres:15
    restart: unless-stopped
    environment:
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=CHANGE_THIS_TO_SECURE_PASSWORD
      - POSTGRES_DB=n8n
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U n8n']
      interval: 5s
      timeout: 5s
      retries: 10

  n8n:
    image: n8nio/n8n:latest
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=CHANGE_THIS_TO_SECURE_PASSWORD
      - N8N_HOST=your-domain.com
      - N8N_PROTOCOL=https
      - N8N_PORT=5678
      - WEBHOOK_URL=https://your-domain.com/
      - GENERIC_TIMEZONE=UTC
      - TZ=UTC
    volumes:
      - n8n-data:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy

volumes:
  postgres-data:
  n8n-data:

Важно: Обязательно замените следующие значения:

  • CHANGE_THIS_TO_SECURE_PASSWORD - на пароль для базы данных
  • your-domain.com - на ваш доменный адрес
  • UTC - на ваш часовой пояс (например, Europe/Moscow)

Сохраните файл (Ctrl+O, Enter, Ctrl+X).

Шаг 5: Запуск n8n

bash
# Запуск контейнеров
docker-compose up -d

# Проверка статуса
docker-compose ps

# Просмотр логов
docker-compose logs -f n8n

n8n теперь запущен и доступен на порту 5678.

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

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

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

bash
sudo apt install -y nginx

Шаг 2: Создание конфигурации Nginx

bash
sudo nano /etc/nginx/sites-available/n8n

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

nginx
server {
    listen 80;
    server_name your-domain.com;

    # Редирект на HTTPS
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name your-domain.com;

    # SSL сертификаты (будут созданы через Certbot)
    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

    # SSL настройки
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # Логи
    access_log /var/log/nginx/n8n-access.log;
    error_log /var/log/nginx/n8n-error.log;

    # Максимальный размер загружаемых файлов
    client_max_body_size 50M;

    location / {
        proxy_pass http://localhost:5678;
        proxy_http_version 1.1;
        
        # Заголовки
        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;
        
        # WebSocket support
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        
        # Таймауты
        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
    }
}

Важно: Замените your-domain.com на ваш реальный доменный адрес.

Сохраните файл.

Шаг 3: Активация конфигурации

bash
# Создание символической ссылки
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/

# Проверка конфигурации
sudo nginx -t

# Перезапуск Nginx
sudo systemctl restart nginx

Шаг 4: Настройка SSL с Let's Encrypt

bash
# Установка Certbot
sudo apt install -y certbot python3-certbot-nginx

# Получение сертификата (замените your-domain.com на ваш домен)
sudo certbot --nginx -d your-domain.com

# Автоматическое обновление сертификата
sudo certbot renew --dry-run

Certbot запросит ваш email и попросит согласиться с условиями использования.

Certbot автоматически настроит SSL и создаст задание для автоматического обновления сертификатов.


Настройка файрвола

Откройте необходимые порты:

bash
# Установка UFW (если не установлен)
sudo apt install -y ufw

# Разрешение SSH
sudo ufw allow OpenSSH

# Разрешение HTTP и HTTPS
sudo ufw allow 'Nginx Full'

# Включение файрвола
sudo ufw enable

# Проверка статуса
sudo ufw status

Первоначальная настройка n8n

Шаг 1: Доступ к веб-интерфейсу

Откройте браузер и перейдите по адресу:

https://your-domain.com

Шаг 2: Создание первого пользователя

При первом запуске n8n предложит создать учетную запись владельца:

  1. Введите email
  2. Придумайте надежный пароль
  3. Укажите имя и фамилию
  4. Нажмите "Создать аккаунт"

Шаг 3: Базовые настройки

После входа в систему рекомендуется:

  1. Настроить переменные окружения - Settings → Environment Variables
  2. Настроить SMTP для отправки email (если требуется)
  3. Создать дополнительных пользователей - Settings → Users

Важные переменные окружения

Вот полный список важных переменных окружения для n8n:

Базовые настройки

bash
# URL и протокол
N8N_HOST=your-domain.com
N8N_PROTOCOL=https
N8N_PORT=5678

# Webhook URL
WEBHOOK_URL=https://your-domain.com/

База данных

bash
# PostgreSQL
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=localhost
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n_user
DB_POSTGRESDB_PASSWORD=your_password

# Или SQLite (не рекомендуется для продакшена)
DB_TYPE=sqlite
DB_SQLITE_DATABASE=/home/node/.n8n/database.sqlite

Часовой пояс

bash
# Установите ваш часовой пояс
GENERIC_TIMEZONE=UTC
TZ=UTC

# Можно установить, например, Europe/Moscow

Безопасность

bash
# Отключение базовой аутентификации (если используется RBAC)
N8N_BASIC_AUTH_ACTIVE=false

# Или включение базовой аутентификации
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=secure_password

Выполнение воркфлоу

bash
# Таймаут выполнения (в секундах)
EXECUTIONS_TIMEOUT=3600

# Максимальное время выполнения
EXECUTIONS_TIMEOUT_MAX=7200

# Режим выполнения (main или queue)
EXECUTIONS_MODE=main

Логирование

bash
# Уровень логирования
N8N_LOG_LEVEL=info

# Формат логов
N8N_LOG_OUTPUT=console

Обновление n8n

bash
cd ~/n8n-data

# Остановка контейнеров
docker-compose down

# Обновление образов
docker-compose pull

# Запуск обновленных контейнеров
docker-compose up -d

# Проверка логов
docker-compose logs -f n8n

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

Регулярное создание резервных копий критически важно для защиты ваших данных.

Что нужно бэкапить

  1. База данных PostgreSQL - содержит все воркфлоу, учетные данные и настройки
  2. Docker volumes - содержит все данные n8n

Автоматический бэкап базы данных

Создайте скрипт для автоматического бэкапа:

bash
nano ~/backup-n8n.sh

Вставьте следующий скрипт:

bash
#!/bin/bash

# Настройки - ИЗМЕНИТЕ ЭТИ ЗНАЧЕНИЯ
BACKUP_DIR="$HOME/n8n-backups"
DB_NAME="n8n"
DB_USER="n8n"
N8N_DATA_DIR="$HOME/n8n-data"
DATE=$(date +%Y%m%d_%H%M%S)

# Создание директории для бэкапов
mkdir -p $BACKUP_DIR

# Переход в директорию с docker-compose.yml
cd $N8N_DATA_DIR

# Бэкап базы данных PostgreSQL из Docker контейнера
docker-compose exec -T postgres pg_dump -U $DB_USER $DB_NAME > $BACKUP_DIR/n8n_db_$DATE.sql

# Бэкап Docker volumes
docker run --rm -v n8n-data:/data -v $BACKUP_DIR:/backup alpine tar -czf /backup/n8n_docker_data_$DATE.tar.gz -C /data .

# Удаление старых бэкапов (старше 30 дней)
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete

echo "Backup completed: $DATE"

Сделайте скрипт исполняемым:

bash
chmod +x ~/backup-n8n.sh

Настройка автоматического бэкапа через cron

bash
# Открытие crontab
crontab -e

# Добавьте следующую строку для ежедневного бэкапа в 2 часа ночи
# Замените /home/username на ваш домашний каталог
0 2 * * * $HOME/backup-n8n.sh >> $HOME/backup-n8n.log 2>&1

Восстановление из бэкапа

Для восстановления базы данных:

bash
# Остановка n8n
cd ~/n8n-data
docker-compose down

# Восстановление базы данных
docker-compose up -d postgres
sleep 10
cat /path/to/backup/n8n_db_YYYYMMDD_HHMMSS.sql | docker-compose exec -T postgres psql -U n8n n8n

# Запуск n8n
docker-compose up -d

Мониторинг и логи

Просмотр логов

bash
# Просмотр логов n8n
docker-compose logs -f n8n

# Просмотр логов PostgreSQL
docker-compose logs -f postgres

# Просмотр всех логов
docker-compose logs -f

Мониторинг ресурсов

bash
# Использование ресурсов Docker контейнерами
docker stats

# Общее использование системных ресурсов
htop
# или
top

Решение частых проблем

n8n не запускается

  1. Проверьте логи:
bash
cd ~/n8n-data
docker-compose logs n8n
  1. Убедитесь, что база данных запущена:
bash
docker-compose ps
  1. Проверьте порт 5678:
bash
sudo netstat -tulpn | grep 5678

Ошибка подключения к базе данных

  1. Проверьте переменные окружения
  2. Убедитесь, что PostgreSQL запущен
  3. Проверьте пароль и права доступа

Проблемы с SSL сертификатом

bash
# Проверка сертификата
sudo certbot certificates

# Принудительное обновление
sudo certbot renew --force-renewal

Высокая нагрузка на систему

  1. Проверьте количество активных воркфлоу
  2. Оптимизируйте воркфлоу (добавьте задержки, используйте очереди)
  3. Увеличьте ресурсы сервера

Оптимизация производительности

Для Docker установки

Отредактируйте docker-compose.yml и добавьте лимиты ресурсов:

yaml
n8n:
  # ... остальная конфигурация
  deploy:
    resources:
      limits:
        cpus: '2'
        memory: 2G
      reservations:
        cpus: '1'
        memory: 1G

Настройка PostgreSQL (опционально)

Если вы используете внешний PostgreSQL (не в Docker), можете оптимизировать его настройки.

Отредактируйте /etc/postgresql/*/main/postgresql.conf:

ini
# Увеличение лимитов для n8n
shared_buffers = 256MB
effective_cache_size = 1GB
work_mem = 16MB
maintenance_work_mem = 128MB
max_connections = 100

Перезапустите PostgreSQL:

bash
sudo systemctl restart postgresql

Примечание: Для PostgreSQL в Docker эти настройки не требуются.

Включение режима очереди (Queue Mode)

Для обработки большого количества воркфлоу используйте Queue Mode с Redis:

Добавьте в docker-compose.yml:

yaml
redis:
  image: redis:7-alpine
  restart: unless-stopped
  volumes:
    - redis-data:/data

n8n:
  # ... остальная конфигурация
  environment:
    # ... остальные переменные
    - EXECUTIONS_MODE=queue
    - QUEUE_BULL_REDIS_HOST=redis
    - QUEUE_BULL_REDIS_PORT=6379

volumes:
  redis-data:

Безопасность

Рекомендации по безопасности

  1. Используйте сильные пароли для всех учетных записей
  2. Регулярно обновляйте n8n и систему
  3. Настройте файрвол (UFW)
  4. Используйте HTTPS (Let's Encrypt)
  5. Ограничьте доступ по IP (если возможно)
  6. Регулярно делайте бэкапы
  7. Включите двухфакторную аутентификацию (если доступно)

Ограничение доступа по IP в Nginx

Отредактируйте /etc/nginx/sites-available/n8n:

nginx
location / {
    # Разрешить доступ только с определенных IP
    allow 192.168.1.0/24;
    allow 10.0.0.0/8;
    deny all;
    
    proxy_pass http://localhost:5678;
    # ... остальная конфигурация
}

Дополнительные ресурсы


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

  • [ ] Сервер подготовлен и обновлен
  • [ ] Docker и Docker Compose установлены
  • [ ] Директория ~/n8n-data создана
  • [ ] Файл docker-compose.yml настроен с вашими данными
  • [ ] Пароль базы данных изменен
  • [ ] Доменное имя указывает на IP сервера
  • [ ] n8n запущен и доступен на порту 5678
  • [ ] Nginx установлен и настроен с вашим доменом
  • [ ] SSL сертификат получен через Certbot
  • [ ] Файрвол настроен (UFW)
  • [ ] n8n доступен по HTTPS через ваш домен
  • [ ] Первый пользователь создан
  • [ ] Скрипт автоматического бэкапа настроен
  • [ ] Cron задание для бэкапа добавлено
  • [ ] Логи проверены на наличие ошибок

Поздравляем! Ваш n8n сервер готов к работе.


Следующие шаги

После успешной установки рекомендуется:

  1. Изучить базовые концепции - ознакомьтесь с руководством для начинающих
  2. Создать первый workflow - следуйте первым шагам
  3. Настроить подключения - узнайте как работать с credentials
  4. Изучить доступные nodes - посмотрите список доступных интеграций

Нужна помощь?

Документация n8n