Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| vm:n8n:01-install_vps [2025/08/10 19:09] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | vm:n8n:01-install_vps [2025/12/09 22:00] (текущий) – admin | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Установка n8n через Docker ====== | ||
| + | Инструкция по развертыванию n8n в Docker с папкой данных в /opt/n8n. | ||
| + | |||
| + | ===== Требования ===== | ||
| + | |||
| + | * Ubuntu 20.04/ | ||
| + | * Минимум 1 ГБ RAM | ||
| + | * Настроенный reverse proxy (Nginx Proxy Manager или аналог) | ||
| + | |||
| + | ===== Шаг 1: Обновление системы ===== | ||
| + | |||
| + | <code bash> | ||
| + | sudo apt update && sudo apt upgrade -y | ||
| + | </ | ||
| + | |||
| + | ===== Шаг 2: Установка Docker ===== | ||
| + | |||
| + | ==== Вариант A: Установка из репозитория Ubuntu ==== | ||
| + | |||
| + | <code bash> | ||
| + | sudo apt install -y docker.io docker-compose-plugin | ||
| + | sudo systemctl enable --now docker | ||
| + | </ | ||
| + | |||
| + | ==== Вариант B: Установка из официального репозитория Docker ==== | ||
| + | |||
| + | <code bash> | ||
| + | sudo apt install -y ca-certificates curl gnupg | ||
| + | sudo install -m 0755 -d / | ||
| + | curl -fsSL https:// | ||
| + | sudo chmod a+r / | ||
| + | |||
| + | echo "deb [arch=$(dpkg --print-architecture) signed-by=/ | ||
| + | |||
| + | sudo apt update | ||
| + | sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin | ||
| + | </ | ||
| + | |||
| + | ==== Добавление пользователя в группу docker ==== | ||
| + | |||
| + | <code bash> | ||
| + | sudo usermod -aG docker $USER | ||
| + | newgrp docker | ||
| + | </ | ||
| + | |||
| + | ===== Шаг 3: Создание структуры папок ===== | ||
| + | |||
| + | <code bash> | ||
| + | sudo mkdir -p / | ||
| + | sudo chown -R $USER:$USER /opt/n8n | ||
| + | cd /opt/n8n | ||
| + | </ | ||
| + | |||
| + | ===== Шаг 4: Создание сети Docker ===== | ||
| + | |||
| + | <code bash> | ||
| + | docker network create webproxy | ||
| + | </ | ||
| + | |||
| + | ===== Шаг 5: Создание файла переменных окружения ===== | ||
| + | |||
| + | <code bash> | ||
| + | cd /opt/n8n | ||
| + | nano .env | ||
| + | </ | ||
| + | |||
| + | Содержимое файла **.env**: | ||
| + | |||
| + | < | ||
| + | N8N_ENCRYPTION_KEY=сгенерируйте_случайный_ключ | ||
| + | </ | ||
| + | |||
| + | Генерация ключа: | ||
| + | |||
| + | <code bash> | ||
| + | openssl rand -hex 32 | ||
| + | </ | ||
| + | |||
| + | ===== Шаг 6: Создание docker-compose.yml ===== | ||
| + | |||
| + | <code bash> | ||
| + | nano docker-compose.yml | ||
| + | </ | ||
| + | |||
| + | Содержимое файла **docker-compose.yml**: | ||
| + | |||
| + | <code yaml> | ||
| + | services: | ||
| + | n8n: | ||
| + | image: n8nio/ | ||
| + | env_file: | ||
| + | - .env | ||
| + | container_name: | ||
| + | restart: always | ||
| + | environment: | ||
| + | - TZ=Europe/ | ||
| + | - N8N_HOST=n8n.example.com | ||
| + | - WEBHOOK_URL=https:// | ||
| + | - 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=/ | ||
| + | - 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: | ||
| + | - ./ | ||
| + | - ./ | ||
| + | networks: | ||
| + | - webproxy | ||
| + | |||
| + | networks: | ||
| + | webproxy: | ||
| + | external: true | ||
| + | </ | ||
| + | |||
| + | ===== Шаг 7: Запуск контейнера ===== | ||
| + | |||
| + | <code bash> | ||
| + | cd /opt/n8n | ||
| + | docker compose up -d | ||
| + | </ | ||
| + | |||
| + | ===== Шаг 8: Проверка статуса ===== | ||
| + | |||
| + | <code bash> | ||
| + | docker compose ps | ||
| + | docker compose logs -f n8n | ||
| + | </ | ||
| + | |||
| + | ====== N8N_ENCRYPTION_KEY ====== | ||
| + | |||
| + | ===== Назначение ===== | ||
| + | |||
| + | **N8N_ENCRYPTION_KEY** — ключ шифрования для защиты конфиденциальных данных в базе n8n: | ||
| + | |||
| + | * Credentials (API ключи, пароли, | ||
| + | * OAuth токены | ||
| + | * Другие секретные данные в workflows | ||
| + | |||
| + | **Важно: | ||
| + | |||
| + | ===== Поведение n8n ===== | ||
| + | |||
| + | ^ Ситуация ^ Поведение ^ | ||
| + | | Ключ не задан | n8n автоматически сгенерирует случайный ключ и сохранит в файл config | | ||
| + | | Ключ задан в .env | Используется указанный ключ | | ||
| + | | Ключ изменён | Все ранее сохранённые credentials перестанут работать | | ||
| + | | Миграция на другой сервер | Необходимо использовать тот же ключ | | ||
| + | |||
| + | ===== Как посмотреть текущий ключ ===== | ||
| + | |||
| + | ==== Способ 1: Из файла config на хосте ==== | ||
| + | |||
| + | <code bash> | ||
| + | cat / | ||
| + | </ | ||
| + | |||
| + | ==== Способ 2: Изнутри контейнера ==== | ||
| + | |||
| + | <code bash> | ||
| + | docker compose exec n8n cat / | ||
| + | </ | ||
| + | |||
| + | ==== Способ 3: Через grep ==== | ||
| + | |||
| + | <code bash> | ||
| + | grep -i encryptionkey / | ||
| + | </ | ||
| + | |||
| + | ===== Рекомендации ===== | ||
| + | |||
| + | **Новая установка n8n:** | ||
| + | * Сгенерируйте ключ заранее: | ||
| + | * Добавьте ключ в файл .env | ||
| + | * Сохраните ключ в надёжном месте (менеджер паролей, | ||
| + | |||
| + | **Существующая установка n8n:** | ||
| + | * Не добавляйте новый ключ в .env | ||
| + | * Используйте ключ, который n8n уже сгенерировал автоматически | ||
| + | * Если нужно перенести — скопируйте ключ из файла config | ||
| + | |||
| + | **Миграция на другой сервер: | ||
| + | * Скопируйте папку n8n_data целиком | ||
| + | * Убедитесь, | ||
| + | * Проверьте работу credentials после миграции | ||
| + | |||
| + | ====== Обновление n8n ====== | ||
| + | |||
| + | ===== Стандартное обновление ===== | ||
| + | |||
| + | <code bash> | ||
| + | cd /opt/n8n | ||
| + | docker compose pull | ||
| + | docker compose up -d | ||
| + | </ | ||
| + | |||
| + | ===== Обновление с резервным копированием ===== | ||
| + | |||
| + | <code bash> | ||
| + | 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 | ||
| + | </ | ||
| + | |||
| + | ===== Очистка старых образов ===== | ||
| + | |||
| + | <code bash> | ||
| + | docker image prune -f | ||
| + | </ | ||
| + | |||
| + | ===== Проверка версии ===== | ||
| + | |||
| + | <code bash> | ||
| + | docker inspect n8n --format ' | ||
| + | docker compose logs --tail 50 n8n | ||
| + | </ | ||
| + | |||
| + | ====== Полезные команды ====== | ||
| + | |||
| + | ^ Команда ^ Описание ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | ====== Резервное копирование ====== | ||
| + | |||
| + | ===== Создание бэкапа ===== | ||
| + | |||
| + | <code bash> | ||
| + | cd /opt/n8n | ||
| + | tar -czvf n8n_backup_$(date +%Y%m%d_%H%M%S).tar.gz n8n_data .env docker-compose.yml | ||
| + | </ | ||
| + | |||
| + | ===== Восстановление из бэкапа ===== | ||
| + | |||
| + | <code bash> | ||
| + | cd /opt/n8n | ||
| + | docker compose down | ||
| + | tar -xzvf n8n_backup_YYYYMMDD_HHMMSS.tar.gz | ||
| + | docker compose up -d | ||
| + | </ | ||
| + | |||
| + | ====== Устранение неполадок ====== | ||
| + | |||
| + | ===== Проверка логов ===== | ||
| + | |||
| + | <code bash> | ||
| + | docker compose logs n8n | ||
| + | </ | ||
| + | |||
| + | ===== Перезапуск сервиса ===== | ||
| + | |||
| + | <code bash> | ||
| + | cd /opt/n8n | ||
| + | docker compose down | ||
| + | docker compose up -d | ||
| + | </ | ||
| + | |||
| + | ===== Проверка сети ===== | ||
| + | |||
| + | <code bash> | ||
| + | docker network inspect webproxy | ||
| + | </ | ||
| + | |||
| + | ====== Переменные окружения ====== | ||
| + | |||
| + | ^ Переменная ^ Описание ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | ====== Ссылки ====== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||