vm:n8n:01-install_vps

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

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

  • Ubuntu 20.04/22.04/24.04 LTS
  • Минимум 1 ГБ RAM
  • Настроенный reverse proxy (Nginx Proxy Manager или аналог)
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable --now 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
sudo usermod -aG docker $USER
newgrp docker
sudo mkdir -p /opt/n8n/{n8n_data,n8n_nodes}
sudo chown -R $USER:$USER /opt/n8n
cd /opt/n8n
docker network create webproxy
cd /opt/n8n
nano .env

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

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

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

openssl rand -hex 32
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
cd /opt/n8n
docker compose up -d
docker compose ps
docker compose logs -f n8n

N8N_ENCRYPTION_KEY

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

  • Credentials (API ключи, пароли, токены доступа)
  • OAuth токены
  • Другие секретные данные в workflows

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

Ситуация Поведение
Ключ не задан n8n автоматически сгенерирует случайный ключ и сохранит в файл config
Ключ задан в .env Используется указанный ключ
Ключ изменён Все ранее сохранённые credentials перестанут работать
Миграция на другой сервер Необходимо использовать тот же ключ
cat /opt/n8n/n8n_data/config
docker compose exec n8n cat /home/node/.n8n/config
grep -i encryptionkey /opt/n8n/n8n_data/config

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

  • Сгенерируйте ключ заранее: openssl rand -hex 32
  • Добавьте ключ в файл .env
  • Сохраните ключ в надёжном месте (менеджер паролей, vault)

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

  • Не добавляйте новый ключ в .env
  • Используйте ключ, который n8n уже сгенерировал автоматически
  • Если нужно перенести — скопируйте ключ из файла config

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

  • Скопируйте папку n8n_data целиком
  • Убедитесь, что N8N_ENCRYPTION_KEY совпадает с оригиналом
  • Проверьте работу credentials после миграции

Обновление 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 Путь к кастомным нодам

Ссылки

  • vm/n8n/01-install_vps.txt
  • Последнее изменение: 2025/12/09 22:00
  • admin