Содержание

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

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

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

Официальных минимальных требований к железу в документации n8n нет. Ориентир — бенчмарк самой n8n: одиночный инстанс с PostgreSQL в нём работал на сервере ECS c5a.large с 4 GB RAM. Нагрузку дают в первую очередь объём данных в выполнениях и Code-ноды, поэтому под AI-проекты с большими ответами моделей памяти закладывайте больше.

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

Для России рекомендуем: Timeweb Cloud, Selectel, REG.RU. Для международных проектов: Hetzner, DigitalOcean, Vultr.

Установка через 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, а контейнер с флагом --rm удаляется после остановки (данные остаются в томе n8n_data). Для 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
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=${POSTGRES_PASSWORD}
    volumes:
      - ./data:/home/node/.n8n
    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

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

.env
# Замените на свои значения
POSTGRES_PASSWORD=your_secure_password_here

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

Bash
docker compose up -d

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

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

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

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

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

  • Node.js от 20.19 до 24.x (требование документации n8n)
  • npm или pnpm

Установка

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

# Запуск
n8n start

Установка на 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 v2 ставится скриптом get.docker.com как плагин
docker compose version

Шаг 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
services:
  traefik:
    image: traefik:v3.6
    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

Для production мы рекомендуем 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

# Опционально: 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 (в ней ключ шифрования учётных данных)
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

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

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

Официальных минимальных требований в документации n8n нет. В собственном бенчмарке n8n одиночный инстанс с PostgreSQL работал на сервере с 4 GB RAM (ECS c5a.large).

Для России рекомендуются Timeweb Cloud, Selectel, REG.RU. Для международных проектов — Hetzner, DigitalOcean, Vultr.

Самый быстрый способ: 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 через Traefik и Let's Encrypt. Установка — 4 шага: папки, docker-compose.yml, .env и запуск.

docker run — быстрый старт для тестирования. Данные в SQLite, нет SSL, контейнер удаляется после остановки. Конфигурация Docker Compose из статьи поднимает PostgreSQL, SSL через Traefik и перезапускает контейнеры автоматически (restart: always).

Для тестирования n8n использует SQLite из коробки. Для продакшна мы рекомендуем PostgreSQL. В n8n 2.0 новый SQLite pooling драйвер до 10 раз быстрее старого, но MySQL и MariaDB больше не поддерживаются — выбор между SQLite и PostgreSQL.

Поставьте перед n8n reverse proxy с Let's Encrypt — в статье это Traefik, подойдёт и Nginx с certbot. В переменных n8n укажите N8N_HOST=ваш-домен и N8N_PROTOCOL=https. Telegram требует HTTPS для работы webhooks.

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

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

AI / LLM

Claude Fable 5: что за новая модель ИИ от Anthropic и что она даёт бизнесу

Читать →

AI / LLM

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

Читать →

AI / LLM

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

Читать →

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

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

Ctrl + D