vm:n8n:01-install_vps

Это старая версия документа!


Установка n8n через Docker

Инструкция по развертыванию n8n с автоматическим SSL сертификатом Let's Encrypt.

  • Ubuntu 20.04/22.04/24.04 LTS
  • Доменное имя, направленное на сервер
  • Минимум 1 ГБ RAM
  • Открытые порты 80 и 443
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable --now docker
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
sudo usermod -aG docker $USER
newgrp docker
sudo mkdir -p /opt/n8n/{certs,vhost.d,html,n8n_data,n8n_nodes}
sudo chown -R $USER:$USER /opt/n8n
cd /opt/n8n
docker network create webproxy
cd /opt/n8n
nano .env

Содержимое файла .env:

N8N_ENCRYPTION_KEY=сгенерируйте_случайный_ключ

Генерация ключа:

openssl rand -hex 32
nano docker-compose.yml

Содержимое файла docker-compose.yml:

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:
    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
      - VIRTUAL_HOST=n8n.example.com
      - VIRTUAL_PORT=5678
      - LETSENCRYPT_HOST=n8n.example.com
      - LETSENCRYPT_EMAIL=your@email.com
      - 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
    depends_on:
      - nginx-proxy
    networks:
      - webproxy

networks:
  webproxy:
    external: true
cd /opt/n8n
docker compose up -d
docker compose ps
docker compose logs -f n8n

Обновление n8n

cd /opt/n8n
docker compose pull
docker compose up -d
cd /opt/n8n
tar -czvf n8n_backup_$(date +%Y%m%d).tar.gz n8n_data
docker compose pull
docker compose up -d
docker image prune -f
docker inspect n8n --format '{{.Config.Image}}'
docker compose logs --tail 50 n8n

Полезные команды

Команда Описание
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 Вход в контейнер

Резервное копирование

cd /opt/n8n
tar -czvf n8n_backup_$(date +%Y%m%d_%H%M%S).tar.gz n8n_data .env docker-compose.yml
cd /opt/n8n
docker compose down
tar -xzvf n8n_backup_YYYYMMDD_HHMMSS.tar.gz
docker compose up -d

Устранение неполадок

docker compose logs nginx-proxy
docker compose logs nginx-letsencrypt
docker compose logs n8n
cd /opt/n8n
docker compose down
docker compose up -d
ls -la /opt/n8n/certs/
docker network inspect webproxy

Настройка без nginx-proxy

Если у вас уже есть внешний reverse proxy (например, Nginx Proxy Manager), используйте упрощенный docker-compose.yml:

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_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

Ссылки

  • vm/n8n/01-install_vps.1765316899.txt.gz
  • Последнее изменение: 2025/12/09 21:48
  • admin