====== Установка 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]]