Содержание

Установка n8n — Docker, локально, VPS | Пошаговая инструкция 2025

Установка n8n — Docker, локально, VPS | Пошаговая инструкция 2025

Системные требования

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

Минимальные

  • 1 vCPU
  • 2 GB RAM
  • 20 GB диск
  • Ubuntu 20.04+ / Debian 11+

Для AI-проектов

  • 4+ vCPU
  • 8+ GB RAM
  • 100+ GB NVMe SSD
  • GPU (опционально)

Какой VPS выбрать?

Для России рекомендуем: Timeweb Cloud, Selectel, REG.RU. Для международных проектов: Hetzner, DigitalOcean, Vultr. Минимальный тариф от 500₽/мес подойдёт для начала.

Установка через Docker (быстрый старт)

Самый простой способ попробовать n8n — запустить его в Docker одной командой:

Bash
docker run -it --rm \
  --name n8n \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  n8nio/n8n

После запуска откройте в браузере: http://localhost:5678

Только для тестирования!

Этот способ не подходит для production. Данные хранятся в SQLite, нет SSL, при перезапуске контейнера могут возникнуть проблемы. Для production используйте Docker Compose.

Docker Compose (рекомендуется)

Для production-установки используйте Docker Compose с PostgreSQL:

Шаг 1: Создайте структуру директорий

Bash
mkdir -p ~/n8n && cd ~/n8n
mkdir -p data postgres-data

Шаг 2: Создайте docker-compose.yml

docker-compose.yml
version: '3.8'

services:
  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=n8n.yourdomain.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.yourdomain.com/
      - GENERIC_TIMEZONE=Europe/Moscow
      - TZ=Europe/Moscow
      # PostgreSQL
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=your_secure_password
      # Безопасность
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=your_admin_password
    volumes:
      - ./data:/home/node/.n8n
    depends_on:
      - postgres

  postgres:
    image: postgres:15-alpine
    restart: always
    environment:
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=your_secure_password
      - POSTGRES_DB=n8n
    volumes:
      - ./postgres-data:/var/lib/postgresql/data

volumes:
  n8n_data:
  postgres_data:

Шаг 3: Создайте файл .env

.env
# Замените на свои значения
N8N_HOST=n8n.yourdomain.com
POSTGRES_PASSWORD=your_secure_password_here
N8N_BASIC_AUTH_PASSWORD=your_admin_password_here

Шаг 4: Запустите n8n

Bash
docker-compose up -d

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

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

Локальная установка через npm

Если Docker вам не подходит, можно установить n8n глобально через npm:

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

  • Node.js 18+ (рекомендуется LTS версия)
  • npm или pnpm

Установка

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

# Запуск
n8n start

# Или с туннелем для тестирования webhooks
n8n start --tunnel

Установка на Windows

PowerShell
# Установите Node.js с https://nodejs.org/
# Откройте PowerShell от администратора

npm install -g n8n
n8n start

Установка на macOS

Bash
# Через Homebrew
brew install node
npm install -g n8n
n8n start

# Или через nvm (рекомендуется)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install --lts
npm install -g n8n
n8n start

Полная настройка на VPS

Пошаговая инструкция для чистого Ubuntu 22.04 сервера:

Шаг 1: Подготовка сервера

Bash
# Обновление системы
sudo apt update && sudo apt upgrade -y

# Установка необходимых пакетов
sudo apt install -y curl git wget

# Установка Docker
curl -fsSL https://get.docker.com | sh

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

# Установка 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

Шаг 2: Настройка файрволла

Bash
# Базовая настройка UFW
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Шаг 3: Настройка DNS

Направьте домен (например, n8n.yourdomain.com) на IP-адрес вашего сервера через A-запись в DNS.

Шаг 4: Разверните n8n

Используйте docker-compose.yml из раздела выше, затем настройте SSL.

Настройка SSL-сертификата

Для production обязательно нужен HTTPS. Используем Traefik как reverse proxy с автоматическим получением Let's Encrypt сертификатов.

docker-compose.yml с Traefik

docker-compose.yml
version: '3.8'

services:
  traefik:
    image: traefik:v2.10
    restart: always
    command:
      - "--api.dashboard=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.letsencrypt.acme.email=your@email.com"
      - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./letsencrypt:/letsencrypt

  n8n:
    image: n8nio/n8n:latest
    restart: always
    environment:
      - N8N_HOST=n8n.yourdomain.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.yourdomain.com/
      - GENERIC_TIMEZONE=Europe/Moscow
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - ./n8n-data:/home/node/.n8n
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.n8n.rule=Host(`n8n.yourdomain.com`)"
      - "traefik.http.routers.n8n.entrypoints=websecure"
      - "traefik.http.routers.n8n.tls.certresolver=letsencrypt"
      - "traefik.http.services.n8n.loadbalancer.server.port=5678"
    depends_on:
      - postgres

  postgres:
    image: postgres:15-alpine
    restart: always
    environment:
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=n8n
    volumes:
      - ./postgres-data:/var/lib/postgresql/data

Не забудьте

Замените n8n.yourdomain.com на ваш домен и your@email.com на вашу почту для уведомлений от Let's Encrypt.

Настройка PostgreSQL

PostgreSQL — рекомендуемая база данных для production. Основные переменные окружения:

Переменные окружения
# Тип базы данных
DB_TYPE=postgresdb

# Подключение
DB_POSTGRESDB_HOST=postgres
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=your_secure_password

# Опционально: SSL для подключения к внешней БД
DB_POSTGRESDB_SSL_ENABLED=true
DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED=false

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

Регулярный backup критически важен для production. Создайте скрипт автоматического бэкапа:

backup.sh
#!/bin/bash

# Настройки
BACKUP_DIR="/backups/n8n"
DATE=$(date +%Y-%m-%d_%H-%M)
N8N_DIR="/home/user/n8n"

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

# Бэкап PostgreSQL
docker exec n8n-postgres-1 pg_dump -U n8n n8n > $BACKUP_DIR/db_$DATE.sql

# Бэкап файлов n8n (credentials, workflows export)
tar -czf $BACKUP_DIR/n8n_data_$DATE.tar.gz $N8N_DIR/n8n-data

# Удаление старых бэкапов (старше 30 дней)
find $BACKUP_DIR -type f -mtime +30 -delete

echo "Backup completed: $DATE"

Автоматизация через cron

Bash
# Откройте crontab
crontab -e

# Добавьте строку (бэкап каждый день в 3:00)
0 3 * * * /home/user/n8n/backup.sh >> /var/log/n8n-backup.log 2>&1

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

Частые вопросы

Минимум: 1 vCPU, 2 GB RAM, 20 GB диска, Ubuntu 20.04+. Рекомендуется: 2+ vCPU, 4+ GB RAM, 40+ GB SSD. Для AI-проектов с агентами: 4+ vCPU, 8+ GB RAM, 100+ GB NVMe SSD.

Для России рекомендуются Timeweb Cloud, Selectel, REG.RU. Для международных проектов — Hetzner, DigitalOcean, Vultr. Минимальный тариф от 500 ₽/мес подойдёт для старта с n8n.

Самый быстрый способ: docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n n8nio/n8n. После этого откройте http://localhost:5678. Этот способ только для тестирования — не используйте в продакшне.

Для продакшна используйте Docker Compose с PostgreSQL: n8n + postgres в отдельных контейнерах, настройка SSL через Nginx, переменные окружения для безопасности. Структура создаётся за 3 шага через docker-compose.yml.

docker run — быстрый старт для тестирования. Данные в SQLite, нет SSL, проблемы с перезапуском. Docker Compose для продакшна использует PostgreSQL, настраивает SSL и Nginx, обеспечивает стабильную работу при перезапусках сервера.

Для тестирования n8n использует SQLite из коробки. Для продакшна PostgreSQL обязателен: надёжнее хранит данные, лучше работает под нагрузкой и поддерживает миграции. n8n 2.0 SQLite pooling ускоряет работу, но PostgreSQL всё равно предпочтительнее.

Настройте Nginx как reverse proxy перед n8n и получите SSL от Let's Encrypt через certbot. В переменных n8n укажите N8N_HOST=ваш-домен и N8N_PROTOCOL=https. Telegram требует HTTPS для работы webhooks.

Понравилась статья? Поставь лайк.

Нужна ИИ-автоматизация под ваш бизнес?

Запишитесь на бесплатную консультацию — обсудим задачу и пришлём готовое решение.

Обсудить проект →

Читайте также

AI / LLM

Claude Opus 4.8: что нового и что даёт бизнесу новая модель ИИ

Читать →

AI / LLM

Локальная LLM на сервере в 2026: модели, железо, стек и бюджеты

Читать →

Право и AI

152-ФЗ и нейросети: отправлять ли данные клиентов в ChatGPT | 2026

Читать →

Полезная статья?

Сохраните в закладки, чтобы не потерять

Ctrl + D