vm:n8n:01-install_vps

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
vm:n8n:01-install_vps [2025/12/09 21:32] adminvm:n8n:01-install_vps [2025/12/09 22:00] (текущий) admin
Строка 1: Строка 1:
 ====== Установка n8n через Docker ====== ====== Установка n8n через Docker ======
  
-Инструкция по развертыванию n8n с автоматическим SSL сертификатом Let's Encrypt.+Инструкция по развертыванию n8n в Docker с папкой данных в /opt/n8n.
  
 ===== Требования ===== ===== Требования =====
  
   * Ubuntu 20.04/22.04/24.04 LTS   * Ubuntu 20.04/22.04/24.04 LTS
-  * Доменное имя, направленное на сервер 
   * Минимум 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,vhost.d,html,n8n_data,n8n_nodes}+sudo mkdir -p /opt/n8n/{n8n_data,n8n_nodes}
 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/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: 
-    image: nginxproxy/acme-companion 
-    container_name: nginx-letsencrypt 
-    restart: always 
-    environment: 
-      NGINX_PROXY_CONTAINER: nginx-proxy 
-      DEFAULT_EMAIL: your@email.com 
-    volumes: 
-      - /var/run/docker.sock:/var/run/docker.sock:ro 
-      - ./certs:/etc/nginx/certs 
-      - ./vhost.d:/etc/nginx/vhost.d 
-      - ./html:/usr/share/nginx/html 
-    depends_on: 
-      - nginx-proxy 
-    networks: 
-      - webproxy 
- 
   n8n:   n8n:
     image: n8nio/n8n:latest     image: n8nio/n8n:latest
Строка 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=/home/node/custom/nodes       - N8N_CUSTOM_EXTENSIONS=/home/node/custom/nodes
       - N8N_SMTP_HOST=mail.example.com       - N8N_SMTP_HOST=mail.example.com
Строка 152: Строка 115:
       - ./n8n_data:/home/node/.n8n       - ./n8n_data:/home/node/.n8n
       - ./n8n_nodes:/home/node/custom/nodes       - ./n8n_nodes:/home/node/custom/nodes
-    depends_on: 
-      - nginx-proxy 
     networks:     networks:
       - webproxy       - webproxy
Строка 162: Строка 123:
 </code> </code>
  
-===== Шаг 7: Запуск контейнеров =====+===== Шаг 7: Запуск контейнера =====
  
 <code bash> <code bash>
Строка 175: Строка 136:
 docker compose logs -f n8n docker compose logs -f n8n
 </code> </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 ====== ====== Обновление 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 .env docker-compose.yml
 docker compose pull docker compose pull
 docker compose up -d docker compose up -d
Строка 213: Строка 231:
 | ''docker compose ps'' | Статус контейнеров | | ''docker compose ps'' | Статус контейнеров |
 | ''docker compose logs -f n8n'' | Логи в реальном времени | | ''docker compose logs -f n8n'' | Логи в реальном времени |
-| ''docker compose logs --tail 100 n8n'' | Последние 100 строк логов |+| ''docker compose logs %%--%%tail 100 n8n'' | Последние 100 строк логов |
 | ''docker compose restart n8n'' | Перезапуск контейнера | | ''docker compose restart n8n'' | Перезапуск контейнера |
-| ''docker compose down'' | Остановка и удаление контейнеров |+| ''docker compose down'' | Остановка и удаление контейнера |
 | ''docker compose up -d'' | Запуск в фоновом режиме | | ''docker compose up -d'' | Запуск в фоновом режиме |
 | ''docker compose exec n8n sh'' | Вход в контейнер | | ''docker compose exec n8n sh'' | Вход в контейнер |
Строка 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> </code>
  
-===== Перезапуск всех сервисов =====+===== Перезапуск сервиса =====
  
 <code bash> <code bash>
Строка 253: Строка 269:
 docker compose down docker compose down
 docker compose up -d docker compose up -d
-</code> 
- 
-===== Проверка сертификатов ===== 
- 
-<code bash> 
-ls -la /opt/n8n/certs/ 
 </code> </code>
  
Строка 267: Строка 277:
 </code> </code>
  
-====== Настройка без nginx-proxy ======+====== Переменные окружения ======
  
-Если у вас уже есть внешний reverse proxy (например, Nginx Proxy Manager), используйте упрощенный **docker-compose.yml**: +^ Переменная ^ Описание 
- +| ''N8N_ENCRYPTION_KEY'' | Ключ шифрования credentials (обязательно сохранить!) | 
-<code yaml> +| ''N8N_HOST'' | Доменное имя n8n | 
-services: +| ''WEBHOOK_URL'' | URL для вебхуков | 
-  n8n+| ''N8N_PROXY_HOPS'' | Количество прокси перед n8n | 
-    image: n8nio/n8n:latest +| ''N8N_SECURE_COOKIE'' | Использовать secure cookies | 
-    env_file: +| ''N8N_ALLOW_CODE_ENV_VARS'' | Доступ к ENV из Code node | 
-      - .env +| ''N8N_ALLOW_DANGEROUS_NODES'' | Разрешить ExecuteCommand и LocalFileTrigger | 
-    container_name: n8n +| ''N8N_ENABLE_COMMUNITY_NODES'' | Разрешить community nodes | 
-    restart: always +| ''N8N_CUSTOM_EXTENSIONS'' | Путь к кастомным нодам |
-    environment: +
-      - TZ=Europe/Moscow +
-      - N8N_HOST=n8n.example.com +
-      - WEBHOOK_URL=https://n8n.example.com +
-      N8N_PROXY_HOPS=1 +
-      N8N_SECURE_COOKIE=false +
-      - N8N_EXPERIMENTAL_CHAT=true +
-      - N8N_ENABLE_COMMUNITY_NODES=true +
-      - N8N_ALLOW_SUPERDANGEROUS_EXECUTION=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>+
  
 ====== Ссылки ====== ====== Ссылки ======
  • vm/n8n/01-install_vps.1765315961.txt.gz
  • Последнее изменение: 2025/12/09 21:32
  • admin