Содержание
Установка 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 одной командой:
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: Создайте структуру директорий
mkdir -p ~/n8n && cd ~/n8n
mkdir -p data postgres-data
Шаг 2: Создайте 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
# Замените на свои значения
POSTGRES_PASSWORD=your_secure_password_here
Шаг 4: Запустите n8n
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
Установка
# Установка n8n глобально
npm install -g n8n
# Запуск
n8n start
Установка на Windows
# Установите Node.js с https://nodejs.org/
# Откройте PowerShell от администратора
npm install -g n8n
n8n start
Установка на macOS
# Через 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: Подготовка сервера
# Обновление системы
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: Настройка файрволла
# Базовая настройка 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
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. Создайте скрипт автоматического бэкапа:
#!/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
# Откройте 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.