Установка n8n через Docker
Инструкция по развертыванию n8n в Docker с папкой данных в /opt/n8n.
Требования
- Ubuntu 20.04/22.04/24.04 LTS
- Минимум 1 ГБ RAM
- Настроенный reverse proxy (Nginx Proxy Manager или аналог)
Шаг 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 (API ключи, пароли, токены доступа)
- OAuth токены
- Другие секретные данные в workflows
Важно: Если ключ потерян или изменён — все сохранённые 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:
- Сгенерируйте ключ заранее:
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 | Путь к кастомным нодам |