Содержание

Установка n8n через Docker

Инструкция по развертыванию n8n в Docker с папкой данных в /opt/n8n.

Требования

Шаг 1: Обновление системы

sudo apt update && sudo apt upgrade -y

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

Вариант A: Установка из репозитория Ubuntu

sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable --now docker

Вариант B: Установка из официального репозитория Docker

sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
 
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Добавление пользователя в группу docker

sudo usermod -aG docker $USER
newgrp docker

Шаг 3: Создание структуры папок

sudo mkdir -p /opt/n8n/{n8n_data,n8n_nodes}
sudo chown -R $USER:$USER /opt/n8n
cd /opt/n8n

Шаг 4: Создание сети Docker

docker network create webproxy

Шаг 5: Создание файла переменных окружения

cd /opt/n8n
nano .env

Содержимое файла .env:

N8N_ENCRYPTION_KEY=сгенерируйте_случайный_ключ

Генерация ключа:

openssl rand -hex 32

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

nano docker-compose.yml

Содержимое файла docker-compose.yml:

services:
  n8n:
    image: n8nio/n8n:latest
    env_file:
      - .env
    container_name: n8n
    restart: always
    environment:
      - TZ=Europe/Moscow
      - N8N_HOST=n8n.example.com
      - WEBHOOK_URL=https://n8n.example.com
      - N8N_PROXY_HOPS=1
      - N8N_SECURE_COOKIE=false
      - N8N_ALLOW_CODE_ENV_VARS=true
      - N8N_EXPERIMENTAL_CHAT=true
      - N8N_ENABLE_COMMUNITY_NODES=true
      - N8N_ALLOW_SUPERDANGEROUS_EXECUTION=true
      - N8N_ALLOW_DANGEROUS_NODES=true
      - N8N_CUSTOM_EXTENSIONS=/home/node/custom/nodes
      - N8N_SMTP_HOST=mail.example.com
      - N8N_SMTP_PORT=465
      - N8N_SMTP_USER=noreply@example.com
      - N8N_SMTP_PASS=your_smtp_password
      - N8N_SMTP_SENDER=noreply@example.com
      - N8N_SMTP_SECURE=true
    volumes:
      - ./n8n_data:/home/node/.n8n
      - ./n8n_nodes:/home/node/custom/nodes
    networks:
      - webproxy

networks:
  webproxy:
    external: true

Шаг 7: Запуск контейнера

cd /opt/n8n
docker compose up -d

Шаг 8: Проверка статуса

docker compose ps
docker compose logs -f n8n

N8N_ENCRYPTION_KEY

Назначение

N8N_ENCRYPTION_KEY — ключ шифрования для защиты конфиденциальных данных в базе n8n:

Важно: Если ключ потерян или изменён — все сохранённые credentials станут нечитаемыми и их придётся создавать заново.

Поведение n8n

Ситуация Поведение
Ключ не задан n8n автоматически сгенерирует случайный ключ и сохранит в файл config
Ключ задан в .env Используется указанный ключ
Ключ изменён Все ранее сохранённые credentials перестанут работать
Миграция на другой сервер Необходимо использовать тот же ключ

Как посмотреть текущий ключ

Способ 1: Из файла config на хосте

cat /opt/n8n/n8n_data/config

Способ 2: Изнутри контейнера

docker compose exec n8n cat /home/node/.n8n/config

Способ 3: Через grep

grep -i encryptionkey /opt/n8n/n8n_data/config

Рекомендации

Новая установка n8n:

Существующая установка n8n:

Миграция на другой сервер:

Обновление n8n

Стандартное обновление

cd /opt/n8n
docker compose pull
docker compose up -d

Обновление с резервным копированием

cd /opt/n8n
tar -czvf n8n_backup_$(date +%Y%m%d).tar.gz n8n_data .env docker-compose.yml
docker compose pull
docker compose up -d

Очистка старых образов

docker image prune -f

Проверка версии

docker inspect n8n --format '{{.Config.Image}}'
docker compose logs --tail 50 n8n

Полезные команды

Команда Описание
docker compose ps Статус контейнеров
docker compose logs -f n8n Логи в реальном времени
docker compose logs --tail 100 n8n Последние 100 строк логов
docker compose restart n8n Перезапуск контейнера
docker compose down Остановка и удаление контейнера
docker compose up -d Запуск в фоновом режиме
docker compose exec n8n sh Вход в контейнер

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

Создание бэкапа

cd /opt/n8n
tar -czvf n8n_backup_$(date +%Y%m%d_%H%M%S).tar.gz n8n_data .env docker-compose.yml

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

cd /opt/n8n
docker compose down
tar -xzvf n8n_backup_YYYYMMDD_HHMMSS.tar.gz
docker compose up -d

Устранение неполадок

Проверка логов

docker compose logs n8n

Перезапуск сервиса

cd /opt/n8n
docker compose down
docker compose up -d

Проверка сети

docker network inspect webproxy

Переменные окружения

Переменная Описание
N8N_ENCRYPTION_KEY Ключ шифрования credentials (обязательно сохранить!)
N8N_HOST Доменное имя n8n
WEBHOOK_URL URL для вебхуков
N8N_PROXY_HOPS Количество прокси перед n8n
N8N_SECURE_COOKIE Использовать secure cookies
N8N_ALLOW_CODE_ENV_VARS Доступ к ENV из Code node
N8N_ALLOW_DANGEROUS_NODES Разрешить ExecuteCommand и LocalFileTrigger
N8N_ENABLE_COMMUNITY_NODES Разрешить community nodes
N8N_CUSTOM_EXTENSIONS Путь к кастомным нодам

Ссылки