vm:n8n:01-install_vps

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
vm:n8n:01-install_vps [2025/08/10 19:09] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1vm:n8n:01-install_vps [2025/12/09 22:00] (текущий) admin
Строка 1: Строка 1:
 +====== Установка n8n через Docker ======
  
 +Инструкция по развертыванию n8n в Docker с папкой данных в /opt/n8n.
 +
 +===== Требования =====
 +
 +  * Ubuntu 20.04/22.04/24.04 LTS
 +  * Минимум 1 ГБ RAM
 +  * Настроенный reverse proxy (Nginx Proxy Manager или аналог)
 +
 +===== Шаг 1: Обновление системы =====
 +
 +<code bash>
 +sudo apt update && sudo apt upgrade -y
 +</code>
 +
 +===== Шаг 2: Установка Docker =====
 +
 +==== Вариант A: Установка из репозитория Ubuntu ====
 +
 +<code bash>
 +sudo apt install -y docker.io docker-compose-plugin
 +sudo systemctl enable --now docker
 +</code>
 +
 +==== Вариант B: Установка из официального репозитория Docker ====
 +
 +<code bash>
 +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
 +</code>
 +
 +==== Добавление пользователя в группу docker ====
 +
 +<code bash>
 +sudo usermod -aG docker $USER
 +newgrp docker
 +</code>
 +
 +===== Шаг 3: Создание структуры папок =====
 +
 +<code bash>
 +sudo mkdir -p /opt/n8n/{n8n_data,n8n_nodes}
 +sudo chown -R $USER:$USER /opt/n8n
 +cd /opt/n8n
 +</code>
 +
 +===== Шаг 4: Создание сети Docker =====
 +
 +<code bash>
 +docker network create webproxy
 +</code>
 +
 +===== Шаг 5: Создание файла переменных окружения =====
 +
 +<code bash>
 +cd /opt/n8n
 +nano .env
 +</code>
 +
 +Содержимое файла **.env**:
 +
 +<code>
 +N8N_ENCRYPTION_KEY=сгенерируйте_случайный_ключ
 +</code>
 +
 +Генерация ключа:
 +
 +<code bash>
 +openssl rand -hex 32
 +</code>
 +
 +===== Шаг 6: Создание docker-compose.yml =====
 +
 +<code bash>
 +nano docker-compose.yml
 +</code>
 +
 +Содержимое файла **docker-compose.yml**:
 +
 +<code yaml>
 +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
 +</code>
 +
 +===== Шаг 7: Запуск контейнера =====
 +
 +<code bash>
 +cd /opt/n8n
 +docker compose up -d
 +</code>
 +
 +===== Шаг 8: Проверка статуса =====
 +
 +<code bash>
 +docker compose ps
 +docker compose logs -f n8n
 +</code>
 +
 +====== N8N_ENCRYPTION_KEY ======
 +
 +===== Назначение =====
 +
 +**N8N_ENCRYPTION_KEY** — ключ шифрования для защиты конфиденциальных данных в базе n8n:
 +
 +  * Credentials (API ключи, пароли, токены доступа)
 +  * OAuth токены
 +  * Другие секретные данные в workflows
 +
 +**Важно:** Если ключ потерян или изменён — все сохранённые credentials станут нечитаемыми и их придётся создавать заново.
 +
 +===== Поведение n8n =====
 +
 +^ Ситуация ^ Поведение ^
 +| Ключ не задан | n8n автоматически сгенерирует случайный ключ и сохранит в файл config |
 +| Ключ задан в .env | Используется указанный ключ |
 +| Ключ изменён | Все ранее сохранённые credentials перестанут работать |
 +| Миграция на другой сервер | Необходимо использовать тот же ключ |
 +
 +===== Как посмотреть текущий ключ =====
 +
 +==== Способ 1: Из файла config на хосте ====
 +
 +<code bash>
 +cat /opt/n8n/n8n_data/config
 +</code>
 +
 +==== Способ 2: Изнутри контейнера ====
 +
 +<code bash>
 +docker compose exec n8n cat /home/node/.n8n/config
 +</code>
 +
 +==== Способ 3: Через grep ====
 +
 +<code bash>
 +grep -i encryptionkey /opt/n8n/n8n_data/config
 +</code>
 +
 +===== Рекомендации =====
 +
 +**Новая установка n8n:**
 +  * Сгенерируйте ключ заранее: ''openssl rand -hex 32''
 +  * Добавьте ключ в файл .env
 +  * Сохраните ключ в надёжном месте (менеджер паролей, vault)
 +
 +**Существующая установка n8n:**
 +  * Не добавляйте новый ключ в .env
 +  * Используйте ключ, который n8n уже сгенерировал автоматически
 +  * Если нужно перенести — скопируйте ключ из файла config
 +
 +**Миграция на другой сервер:**
 +  * Скопируйте папку n8n_data целиком
 +  * Убедитесь, что N8N_ENCRYPTION_KEY совпадает с оригиналом
 +  * Проверьте работу credentials после миграции
 +
 +====== Обновление n8n ======
 +
 +===== Стандартное обновление =====
 +
 +<code bash>
 +cd /opt/n8n
 +docker compose pull
 +docker compose up -d
 +</code>
 +
 +===== Обновление с резервным копированием =====
 +
 +<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>
 +
 +===== Очистка старых образов =====
 +
 +<code bash>
 +docker image prune -f
 +</code>
 +
 +===== Проверка версии =====
 +
 +<code bash>
 +docker inspect n8n --format '{{.Config.Image}}'
 +docker compose logs --tail 50 n8n
 +</code>
 +
 +====== Полезные команды ======
 +
 +^ Команда ^ Описание ^
 +| ''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'' | Вход в контейнер |
 +
 +====== Резервное копирование ======
 +
 +===== Создание бэкапа =====
 +
 +<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>
 +
 +===== Восстановление из бэкапа =====
 +
 +<code bash>
 +cd /opt/n8n
 +docker compose down
 +tar -xzvf n8n_backup_YYYYMMDD_HHMMSS.tar.gz
 +docker compose up -d
 +</code>
 +
 +====== Устранение неполадок ======
 +
 +===== Проверка логов =====
 +
 +<code bash>
 +docker compose logs n8n
 +</code>
 +
 +===== Перезапуск сервиса =====
 +
 +<code bash>
 +cd /opt/n8n
 +docker compose down
 +docker compose up -d
 +</code>
 +
 +===== Проверка сети =====
 +
 +<code bash>
 +docker network inspect webproxy
 +</code>
 +
 +====== Переменные окружения ======
 +
 +^ Переменная ^ Описание ^
 +| ''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]]