Инструкция по развертыванию n8n в Docker с папкой данных в /opt/n8n.
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:
Важно: Если ключ потерян или изменён — все сохранённые 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Существующая установка 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 | Путь к кастомным нодам |