Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| vm:n8n:01-install_vps [2025/12/09 21:32] – admin | vm:n8n:01-install_vps [2025/12/09 22:00] (текущий) – admin | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== Установка n8n через Docker ====== | ====== Установка n8n через Docker ====== | ||
| - | Инструкция по развертыванию n8n с автоматическим SSL сертификатом Let's Encrypt. | + | Инструкция по развертыванию n8n в Docker |
| ===== Требования ===== | ===== Требования ===== | ||
| * Ubuntu 20.04/ | * Ubuntu 20.04/ | ||
| - | * Доменное имя, направленное на сервер | ||
| * Минимум 1 ГБ RAM | * Минимум 1 ГБ RAM | ||
| - | * Открытые порты 80 и 443 | + | * Настроенный reverse proxy (Nginx Proxy Manager |
| ===== Шаг 1: Обновление системы ===== | ===== Шаг 1: Обновление системы ===== | ||
| Строка 49: | Строка 48: | ||
| <code bash> | <code bash> | ||
| - | sudo mkdir -p /opt/n8n/{certs, | + | sudo mkdir -p / |
| sudo chown -R $USER:$USER /opt/n8n | sudo chown -R $USER:$USER /opt/n8n | ||
| cd /opt/n8n | cd /opt/n8n | ||
| Строка 89: | Строка 88: | ||
| <code yaml> | <code yaml> | ||
| services: | services: | ||
| - | nginx-proxy: | ||
| - | image: jwilder/ | ||
| - | container_name: | ||
| - | restart: always | ||
| - | ports: | ||
| - | - " | ||
| - | - " | ||
| - | volumes: | ||
| - | - / | ||
| - | - ./ | ||
| - | - ./ | ||
| - | - ./ | ||
| - | labels: | ||
| - | com.github.nginx-proxy.nginx: | ||
| - | networks: | ||
| - | - webproxy | ||
| - | |||
| - | nginx-letsencrypt: | ||
| - | image: nginxproxy/ | ||
| - | container_name: | ||
| - | restart: always | ||
| - | environment: | ||
| - | NGINX_PROXY_CONTAINER: | ||
| - | DEFAULT_EMAIL: | ||
| - | volumes: | ||
| - | - / | ||
| - | - ./ | ||
| - | - ./ | ||
| - | - ./ | ||
| - | depends_on: | ||
| - | - nginx-proxy | ||
| - | networks: | ||
| - | - webproxy | ||
| - | |||
| n8n: | n8n: | ||
| image: n8nio/ | image: n8nio/ | ||
| Строка 135: | Строка 100: | ||
| - N8N_PROXY_HOPS=1 | - N8N_PROXY_HOPS=1 | ||
| - N8N_SECURE_COOKIE=false | - N8N_SECURE_COOKIE=false | ||
| - | - VIRTUAL_HOST=n8n.example.com | + | - N8N_ALLOW_CODE_ENV_VARS=true |
| - | - VIRTUAL_PORT=5678 | + | |
| - | - LETSENCRYPT_HOST=n8n.example.com | + | |
| - | - LETSENCRYPT_EMAIL=your@email.com | + | |
| - N8N_EXPERIMENTAL_CHAT=true | - N8N_EXPERIMENTAL_CHAT=true | ||
| - N8N_ENABLE_COMMUNITY_NODES=true | - N8N_ENABLE_COMMUNITY_NODES=true | ||
| - N8N_ALLOW_SUPERDANGEROUS_EXECUTION=true | - N8N_ALLOW_SUPERDANGEROUS_EXECUTION=true | ||
| + | - N8N_ALLOW_DANGEROUS_NODES=true | ||
| - N8N_CUSTOM_EXTENSIONS=/ | - N8N_CUSTOM_EXTENSIONS=/ | ||
| - N8N_SMTP_HOST=mail.example.com | - N8N_SMTP_HOST=mail.example.com | ||
| Строка 152: | Строка 115: | ||
| - ./ | - ./ | ||
| - ./ | - ./ | ||
| - | depends_on: | ||
| - | - nginx-proxy | ||
| networks: | networks: | ||
| - webproxy | - webproxy | ||
| Строка 162: | Строка 123: | ||
| </ | </ | ||
| - | ===== Шаг 7: Запуск контейнеров ===== | + | ===== Шаг 7: Запуск контейнера ===== |
| <code bash> | <code bash> | ||
| Строка 175: | Строка 136: | ||
| docker compose logs -f n8n | 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 ====== | ====== Обновление n8n ====== | ||
| Строка 190: | Строка 208: | ||
| <code bash> | <code bash> | ||
| cd /opt/n8n | cd /opt/n8n | ||
| - | tar -czvf n8n_backup_$(date +%Y%m%d).tar.gz n8n_data | + | tar -czvf n8n_backup_$(date +%Y%m%d).tar.gz n8n_data |
| docker compose pull | docker compose pull | ||
| docker compose up -d | docker compose up -d | ||
| Строка 213: | Строка 231: | ||
| | '' | | '' | ||
| | '' | | '' | ||
| - | | '' | + | | '' |
| | '' | | '' | ||
| - | | '' | + | | '' |
| | '' | | '' | ||
| | '' | | '' | ||
| Строка 242: | Строка 260: | ||
| <code bash> | <code bash> | ||
| - | docker compose logs nginx-proxy | ||
| - | docker compose logs nginx-letsencrypt | ||
| docker compose logs n8n | docker compose logs n8n | ||
| </ | </ | ||
| - | ===== Перезапуск | + | ===== Перезапуск сервиса ===== |
| <code bash> | <code bash> | ||
| Строка 253: | Строка 269: | ||
| docker compose down | docker compose down | ||
| docker compose up -d | docker compose up -d | ||
| - | </ | ||
| - | |||
| - | ===== Проверка сертификатов ===== | ||
| - | |||
| - | <code bash> | ||
| - | ls -la / | ||
| </ | </ | ||
| Строка 267: | Строка 277: | ||
| </ | </ | ||
| - | ====== | + | ====== |
| - | Если у вас уже есть внешний reverse proxy (например, Nginx Proxy Manager), | + | ^ Переменная ^ Описание ^ |
| - | + | | '' | |
| - | <code yaml> | + | | '' |
| - | services: | + | | '' |
| - | | + | | '' |
| - | image: n8nio/ | + | | '' |
| - | env_file: | + | | '' |
| - | - .env | + | | '' |
| - | container_name: | + | | '' |
| - | restart: always | + | | '' |
| - | environment: | + | |
| - | - TZ=Europe/ | + | |
| - | - N8N_HOST=n8n.example.com | + | |
| - | - WEBHOOK_URL=https:// | + | |
| - | | + | |
| - | | + | |
| - | - N8N_EXPERIMENTAL_CHAT=true | + | |
| - | - N8N_ENABLE_COMMUNITY_NODES=true | + | |
| - | - N8N_ALLOW_SUPERDANGEROUS_EXECUTION=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: | + | |
| - | - ./ | + | |
| - | - ./ | + | |
| - | | + | |
| - | - webproxy | + | |
| - | + | ||
| - | networks: | + | |
| - | webproxy: | + | |
| - | external: true | + | |
| - | </ | + | |
| ====== Ссылки ====== | ====== Ссылки ====== | ||