Перейти к основному содержимому
Вернуться в категорию

Установка n8n: Самостоятельно размещаемая автоматизация рабочих процессов

Установка n8n через Docker, интеграции webhook, создание рабочих процессов, подключение 400+ приложений, запланированные задачи, управление учётными данными и развёртывание в production.

Время чтения: 15 мин Самостоятельный хостинг
n8nавтоматизацияworkflowself-hostingdockerwebhookинтеграция

Содержание

Установка n8n: Самостоятельно размещаемая автоматизация рабочих процессов

n8n — это платформа автоматизации рабочих процессов с открытым исходным кодом и визуальным интерфейсом, которая может подключать 400+ приложений и сервисов. Вы можете запустить её на собственном сервере как самостоятельно размещаемую альтернативу таким сервисам, как Zapier и Make (Integromat). Вы можете создавать сложные автоматизации без написания кода или добавлять пользовательскую логику с помощью JavaScript/Python.

Что такое n8n?

n8n (сокращение от «nodemation») позволяет создавать рабочие процессы с помощью узловой визуальной программирования. Ключевые особенности:

  • 400+ интеграций: Slack, GitHub, Google Sheets, Notion, Airtable и другие
  • Поддержка Webhook: Использование HTTP-запросов в качестве триггеров
  • Запланированные задачи: Планирование на основе Cron
  • Поддержка кода: Узлы JavaScript и Python
  • Обработка ошибок: Механизм повтора и потоки ошибок
  • Зашифрованные учётные данные: API-ключи хранятся безопасно

Системные требования

  • Сервер с установленными Docker и Docker Compose
  • Минимум 1 ГБ ОЗУ (рекомендуется 2 ГБ)
  • PostgreSQL (рекомендуется для production) или SQLite

Базовая установка Docker

Быстрый старт с SQLite

hljs yaml
version: '3.8'

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    environment:
      - N8N_HOST=n8n.example.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.example.com/
      - GENERIC_TIMEZONE=Europe/Moscow
      - N8N_ENCRYPTION_KEY=надёжный-ключ-шифрования
    volumes:
      - ./n8n-data:/home/node/.n8n
    ports:
      - "127.0.0.1:5678:5678"
hljs bash
# Запустить контейнер
docker compose up -d

# Проверить логи
docker logs n8n -f

N8N_ENCRYPTION_KEY используется для шифрования учётных данных. Если вы потеряете это значение, все ваши учётные данные станут недоступными. Храните его в безопасном месте.

Production-установка с PostgreSQL

hljs yaml
version: '3.8'

services:
  postgres:
    image: postgres:15
    container_name: n8n-postgres
    restart: unless-stopped
    environment:
      POSTGRES_DB: n8n
      POSTGRES_USER: n8n
      POSTGRES_PASSWORD: надёжный-пароль
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U n8n"]
      interval: 5s
      timeout: 5s
      retries: 10

  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=надёжный-пароль
      - N8N_HOST=n8n.example.com
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.example.com/
      - GENERIC_TIMEZONE=Europe/Moscow
      - N8N_ENCRYPTION_KEY=надёжный-ключ-шифрования
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=пароль-администратора
    volumes:
      - ./n8n-data:/home/node/.n8n
    ports:
      - "127.0.0.1:5678:5678"

volumes:
  postgres-data:

Nginx Reverse Proxy

hljs nginx
server {
    listen 80;
    server_name n8n.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name n8n.example.com;

    ssl_certificate /etc/letsencrypt/live/n8n.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 3600;
    }
}

Создание базовых рабочих процессов

Первый рабочий процесс: Webhook → Уведомление в Slack

  1. Нажмите New Workflow
  2. Добавьте узел с + → выберите Webhook
    • HTTP Method: POST
    • Path: /slack-notify
  3. Добавьте новый узел с + → выберите Slack
    • Operation: Send Message
    • Channel: #general
    • Message: {{ $json.message }}
  4. Сохраните и Активируйте
hljs bash
# Тест webhook
curl -X POST https://n8n.example.com/webhook/slack-notify \
  -H "Content-Type: application/json" \
  -d '{"message": "Привет, n8n!"}'

Типы триггеров

Cron (Расписание) Триггер

# Cron-выражения
0 9 * * 1-5    # Будни в 09:00
*/15 * * * *   # Каждые 15 минут
0 0 * * *      # Каждую полночь
0 8 * * 1      # Каждый понедельник в 08:00

Управление учётными данными

Настройки → Учётные данные → Добавить учётные данные

Пример: GitHub API
- Тип учётных данных: GitHub API
- Access Token: ghp_xxxxxxxxxxxx
- Проверить соединение

Популярные примеры рабочих процессов

GitHub → Уведомление в Slack

GitHub Trigger (событие push)
  → IF (branch == 'main')
    → Slack ("Новый деплой: {{ $json.commits[0].message }}")
    → Email (уведомить команду)

Ежедневный отчёт

Cron Trigger (каждое утро в 09:00)
  → PostgreSQL (получить вчерашние продажи)
  → Code (форматировать данные)
  → Google Sheets (добавить в отчёт)
  → Slack (отправить сводку)

Режим очереди (Высокая нагрузка)

hljs yaml
environment:
  - EXECUTIONS_MODE=queue
  - QUEUE_BULL_REDIS_HOST=redis
  - QUEUE_BULL_REDIS_PORT=6379

redis:
  image: redis:7-alpine
  container_name: n8n-redis
  restart: unless-stopped

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

hljs bash
# Резервное копирование данных n8n
tar -czf n8n-backup-$(date +%Y%m%d).tar.gz ./n8n-data/

# Резервное копирование PostgreSQL
docker exec n8n-postgres pg_dump -U n8n n8n > n8n-db-$(date +%Y%m%d).sql

С n8n на серверах REXE VPS вы можете автоматизировать все свои бизнес-процессы. С 2 ГБ ОЗУ можно запускать сотни рабочих процессов.