====== Установка 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'' | Путь к кастомным нодам | ====== Ссылки ====== * [[https://docs.n8n.io/|Официальная документация n8n]] * [[https://hub.docker.com/r/n8nio/n8n|Docker Hub n8n]] * [[https://community.n8n.io/|Форум сообщества n8n]]