Установка n8n на Ubuntu 20.04/22.04 - Пошаговая инструкция | AdminWiki

Установка n8n на Ubuntu: Полное руководство для DevOps и разработчиков

17 декабря 2025 9 мин. чтения #devops #docker #n8n #nodejs #ubuntu #workflow #автоматизация

Представь, что тебе нужно автоматизировать рутинные задачи: синхронизацию данных между сервисами, обработку webhook'ов или создание сложных бизнес-процессов. n8n — это мощный инструмент с открытым исходным кодом для создания workflow'ов, который можно развернуть на собственном сервере. Давай разберем, как выполнить установку n8n на Ubuntu правильно и безопасно.

Подготовка сервера Ubuntu

Перед началом установки n8n убедимся, что система готова. Работаем на свежем Ubuntu 20.04 LTS или 22.04 LTS.

Обновление системы и установка зависимостей

bash
# Обновляем пакеты системы
sudo apt update && sudo apt upgrade -y

# Устанавливаем необходимые утилиты
sudo apt install -y curl wget gnupg git build-essential

# Для работы с Docker (если будем использовать)
sudo apt install -y apt-transport-https ca-certificates software-properties-common

Важно: Все команды выполняем от обычного пользователя с sudo правами. Не работай от root напрямую!

Способ 1: Установка n8n через Node.js и PM2

Этот способ дает больше контроля и лучше подходит для production-окружения.

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

bash
# Устанавливаем Node.js 18.x (рекомендуемая версия для n8n)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

# Проверяем установку
node --version  # Должно быть v18.x.x
npm --version   # Должно быть 8.x.x или выше

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

bash
# Создаем директорию для n8n
mkdir ~/n8n && cd ~/n8n

# Инициализируем npm проект
npm init -y

# Устанавливаем n8n глобально или локально
npm install n8n -g

# ИЛИ локально (рекомендуется для изоляции)
npm install n8n

Настройка PM2 для управления процессом

bash
# Устанавливаем PM2 глобально
sudo npm install pm2 -g

# Создаем конфигурационный файл для n8n
cat > ~/n8n/ecosystem.config.js << 'EOF'
module.exports = {
  apps: [{
    name: 'n8n',
    script: 'n8n',
    args: 'start',
    env: {
      N8N_PROTOCOL: 'https',
      N8N_HOST: 'ваш-домен.ru',
      N8N_PORT: 5678,
      N8N_ENCRYPTION_KEY: 'ваш-секретный-ключ-минимум-32-символа',
      WEBHOOK_URL: 'https://ваш-домен.ru',
      N8N_METRICS: 'true',
      DB_TYPE: 'postgresdb',
      DB_POSTGRESDB_HOST: 'localhost',
      DB_POSTGRESDB_PORT: 5432,
      DB_POSTGRESDB_DATABASE: 'n8n',
      DB_POSTGRESDB_USER: 'n8n_user',
      DB_POSTGRESDB_PASSWORD: 'ваш-надежный-пароль'
    }
  }]
}
EOF

Внимание: Обязательно замени все значения в конфиге на свои! Генерация надежного ENCRYPTION_KEY: openssl rand -base64 32

Способ 2: Установка n8n через Docker

Docker-установка проще и обеспечивает лучшую изоляцию. Идеально для быстрого развертывания.

Установка Docker и Docker Compose

bash
# Устанавливаем Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

# Устанавливаем 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

# Перезагружаем сессию (или выходим/заходим)
newgrp docker

Docker Compose конфигурация для n8n

yaml
version: '3.8'

services:
  postgres:
    image: postgres:15-alpine
    restart: unless-stopped
    environment:
      - POSTGRES_USER=n8n_user
      - POSTGRES_PASSWORD=ваш-надежный-пароль
      - POSTGRES_DB=n8n
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - n8n_network

  n8n:
    image: n8nio/n8n:latest
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_PROTOCOL=https
      - N8N_HOST=ваш-домен.ru
      - WEBHOOK_URL=https://ваш-домен.ru
      - N8N_ENCRYPTION_KEY=ваш-секретный-ключ-минимум-32-символа
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n_user
      - DB_POSTGRESDB_PASSWORD=ваш-надежный-пароль
      - N8N_METRICS=true
      - GENERIC_TIMEZONE=Europe/Moscow
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      - postgres
    networks:
      - n8n_network

volumes:
  postgres_data:
  n8n_data:

networks:
  n8n_network:
    driver: bridge
bash
# Создаем директорию и конфиг
mkdir ~/n8n-docker && cd ~/n8n-docker
nano docker-compose.yml  # Вставляем конфиг выше

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

# Проверяем логи
docker-compose logs -f n8n

Настройка Nginx в качестве reverse proxy

Для production-окружения обязательно используем Nginx с SSL.

Установка и базовая настройка Nginx

bash
# Устанавливаем Nginx
sudo apt install -y nginx

# Настраиваем firewall
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable

# Проверяем статус Nginx
sudo systemctl status nginx

Конфигурация виртуального хоста для n8n

nginx
server {
    listen 80;
    server_name ваш-домен.ru www.ваш-домен.ru;
    
    location / {
        return 301 https://$server_name$request_uri;
    }
}

server {
    listen 443 ssl http2;
    server_name ваш-домен.ru www.ваш-домен.ru;

    # SSL сертификаты (сгенерируйте через Certbot)
    ssl_certificate /etc/letsencrypt/live/ваш-домен.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ваш-домен.ru/privkey.pem;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
    ssl_prefer_server_ciphers off;
    
    # Проксирование на n8n
    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;
        
        # WebSocket поддержка
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        
        # Таймауты
        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
    }
    
    # Статика
    location /static/ {
        alias /home/user/n8n/static/;
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}

Получение SSL сертификата через Certbot

bash
# Устанавливаем Certbot
sudo apt install -y certbot python3-certbot-nginx

# Получаем сертификат
sudo certbot --nginx -d ваш-домен.ru -d www.ваш-домен.ru

# Настраиваем авто-обновление
sudo certbot renew --dry-run

Сравнение методов установки n8n

Критерий Node.js + PM2 Docker
Сложность установки Средняя Низкая
Изоляция Частичная Полная
Обновление npm update n8n docker-compose pull
Резервное копирование Ручное копирование файлов Docker volumes
Производительность Выше (нативная) Немного ниже

Базовые команды управления n8n

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

  • pm2 start ecosystem.config.js — запуск
  • pm2 stop n8n — остановка
  • pm2 restart n8n — перезапуск
  • pm2 logs n8n — просмотр логов
  • pm2 save && pm2 startup — автозагрузка

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

  • docker-compose up -d — запуск
  • docker-compose down — остановка
  • docker-compose restart — перезапуск
  • docker-compose logs -f — логи
  • docker-compose pull — обновление

Часто задаваемые вопросы (FAQ)

Какой порт использует n8n по умолчанию?

n8n по умолчанию использует порт 5678. Это можно изменить через переменную окружения N8N_PORT или флаг --port при запуске.

Нужна ли отдельная база данных для n8n?

Для production-окружения настоятельно рекомендуется использовать внешнюю БД (PostgreSQL). Встроенная SQLite подходит только для тестирования. PostgreSQL обеспечивает надежность и возможность масштабирования.

Как настроить бэкапы workflow'ов?

Используйте встроенную функцию экспорта или настройте регулярное копирование директории с данными:

# Для Docker
sudo cp -r /var/lib/docker/volumes/n8n-docker_n8n_data /backup/n8n-$(date +%Y%m%d)

# Для PM2
sudo cp -r ~/.n8n /backup/n8n-$(date +%Y%m%d)

Как обновить n8n до новой версии?

Для Docker: docker-compose pull && docker-compose up -d
Для PM2: npm update n8n -g && pm2 restart n8n
Всегда делайте бэкап перед обновлением!

Как настроить аутентификацию в n8n?

Добавьте переменные окружения:

N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=ваш-пароль

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

После успешной установки n8n на Ubuntu, рассмотрим несколько советов по оптимизации:

  • Настройка лимитов памяти: Для PM2 укажите max_memory_restart: '1G' в ecosystem.config.js
  • Оптимизация PostgreSQL: Настройте shared_buffers и work_mem в postgresql.conf
  • Кэширование: Используйте Redis для кэширования, если много workflow'ов
  • Мониторинг: Настройте метрики через N8N_METRICS=true и подключите Prometheus
  • Логирование: Настройте ротацию логов через logrotate

Профессиональный совет: Для высоконагруженных инсталляций рассмотрите возможность запуска n8n в кластере с использованием нескольких worker'ов и балансировкой нагрузки.

Теперь у тебя есть полностью рабочая установка n8n на Ubuntu. Ты можешь начать создавать автоматизации, подключать сервисы и оптимизировать бизнес-процессы. Помни про безопасность: регулярно обновляй систему, настраивай бэкапы и мониторинг. Удачи в автоматизации!

Поделиться:
Сохранить гайд? В закладки браузера