vm:n8n:01-install_vps

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
vm:n8n:01-install_vps [2025/12/09 21:28] adminvm:n8n:01-install_vps [2025/12/09 22:00] (текущий) admin
Строка 1: Строка 1:
-Установка n8n через Docker с папкой данных в /opt/n8n+====== Установка n8n через Docker ======
  
-Шаг 1: Обновление системы +Инструкция по развертыванию n8n в Docker с папкой данных в /opt/n8n.
-<code>sudo apt update && sudo apt upgrade -y</code>+
  
-Шаг 2: Установи Docker и Docker Compose +===== Требования =====
-<code>sudo apt install -y docker.io docker-compose +
-sudo systemctl enable --now docker</code>+
  
-Шаг 3: Создай папку для n8n в /opt и выставь права +  * Ubuntu 20.04/22.04/24.04 LTS 
-<code>sudo mkdir -p /opt/n8n/n8n_data +  * Минимум 1 ГБ RAM 
-sudo chown -R $USER:$USER /opt/n8n</code>+  * Настроенный reverse proxy (Nginx Proxy Manager или аналог)
  
-Шаг 4Создай файл docker-compose.yml в /opt/n8n +===== Шаг 1Обновление системы =====
-<code>cd /opt/n8n +
-nano docker-compose.yml</code>+
  
-Шаг 5: Вставляем текст в файл yml +<code bash
-<code>services: +sudo apt update && sudo apt upgrade -y 
-  nginx-proxy: +</code>
-    image: jwilder/nginx-proxy:alpine +
-    container_name: nginx-proxy +
-    restart: always +
-    ports: +
-      - "80:80" +
-      - "443:443" +
-    volumes: +
-      - /var/run/docker.sock:/tmp/docker.sock:ro +
-      - ./certs:/etc/nginx/certs:ro +
-      - ./vhost.d:/etc/nginx/vhost.d +
-      - ./html:/usr/share/nginx/html +
-    labels: +
-      com.github.nginx-proxy.nginx: "true" +
-    networks: +
-      - webproxy+
  
-  nginx-letsencrypt+===== Шаг 2Установка Docker ===== 
-    imagenginxproxy/acme-companion + 
-    container_name: nginx-letsencrypt +==== Вариант AУстановка из репозитория Ubuntu ==== 
-    restart: always + 
-    environment: +<code bash> 
-      NGINX_PROXY_CONTAINERnginx-proxy +sudo apt install -y docker.io docker-compose-plugin 
-      DEFAULT_EMAIL: **email** +sudo systemctl enable --now docker 
-    volumes: +</code> 
-      - /var/run/docker.sock:/var/run/docker.sock:ro + 
-      - ./certs:/etc/nginx/certs +==== Вариант BУстановка из официального репозитория Docker ==== 
-      ./vhost.d:/etc/nginx/vhost.d + 
-      - ./html:/usr/share/nginx/html +<code bash> 
-    depends_on+sudo apt install -y ca-certificates curl gnupg 
-      nginx-proxy +sudo install -m 0755 -d /etc/apt/keyrings 
-    networks+curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 
-      webproxy+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:   n8n:
-    image: n8nio/n8n+    image: n8nio/n8n:latest 
 +    env_file: 
 +      - .env
     container_name: n8n     container_name: n8n
     restart: always     restart: always
     environment:     environment:
-      - N8N_GENERIC_RESPONSE_MIDDLEWARE_TRUST_PROXY=true 
-      - N8N_RUNNERS_ENABLED=true 
-      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true 
       - TZ=Europe/Moscow       - TZ=Europe/Moscow
-      - N8N_BASIC_AUTH_ACTIVE=true +      - N8N_HOST=n8n.example.com 
-      - N8N_BASIC_AUTH_USER=admin +      - WEBHOOK_URL=https://n8n.example.com 
-      - N8N_BASIC_AUTH_PASSWORD=**pass** +      - N8N_PROXY_HOPS=1 
-      - N8N_HOST=**host.test.ru** +      - N8N_SECURE_COOKIE=false 
-      - WEBHOOK_URL=https://**host.test.ru**/ +      - N8N_ALLOW_CODE_ENV_VARS=true
-      - VIRTUAL_HOST=**host.test.ru** +
-      - VIRTUAL_PORT=5678 +
-      - LETSENCRYPT_HOST=**host.test.ru** +
-      - LETSENCRYPT_EMAIL=**email**+
       - 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=/home/node/custom/nodes       - 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:     volumes:
       - ./n8n_data:/home/node/.n8n       - ./n8n_data:/home/node/.n8n
Строка 82: Строка 120:
 networks: networks:
   webproxy:   webproxy:
-    external: true</code> +    external: true 
-    +</code>
  
-Шаг 6Создаем сеть в докере +===== Шаг 7Запуск контейнера =====
-<code>docker network create webproxy</code>+
  
-Шаг 7: Создаем все необходимые папки для маппинга дисков и запускаем контейнер +<code bash>
-<code>sudo mkdir -p /opt/n8n/{certs,vhost.d,html,n8n_data,n8n_nodes} +
-sudo chown -R $USER:$USER /opt/n8n+
 cd /opt/n8n cd /opt/n8n
-docker-compose up -d</code>+docker compose up -
 +</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]]
  • vm/n8n/01-install_vps.1765315736.txt.gz
  • Последнее изменение: 2025/12/09 21:28
  • admin