Как на локальный ubuntu server поставить n8n

Установка n8n на локальный сервер Ubuntu: Полное руководство

n8n — это инструмент для автоматизации рабочих процессов с открытым исходным кодом, который позволяет соединять различные приложения, API и сервисы без необходимости написания кода. Развертывание n8n на собственном сервере Ubuntu обеспечивает полный контроль над данными, безопасность и производительность. Данное руководство описывает процесс установки, настройки и обслуживания n8n на Ubuntu Server 20.04 LTS или 22.04 LTS.

Предварительные требования и подготовка сервера

Перед началом установки убедитесь, что у вас есть:

    • Сервер под управлением Ubuntu Server 20.04/22.04 с минимальными характеристиками: 2 ядра CPU, 2 ГБ оперативной памяти, 20 ГБ свободного места на диске.
    • Права пользователя с привилегиями sudo.
    • Доступ к терминалу сервера по SSH или напрямую.
    • Обновленная система. Выполните команды обновления пакетов.

    Откройте терминал и выполните следующие команды для подготовки системы:

    • sudo apt update && sudo apt upgrade -y
    • sudo apt install -y curl wget git

    Установка Node.js и npm

    n8n написан на Node.js, поэтому необходима его установка. Рекомендуется использовать версию Node.js 18 или выше. Установим Node.js через менеджер версий nodesource.

    • curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
    • sudo apt install -y nodejs
    • Проверьте установку: node --version и npm --version.

    Способ 1: Установка n8n с помощью npm (Рекомендуемый для тестирования)

    Этот метод прост и идеален для быстрого развертывания в целях разработки или ознакомления.

    • Установите n8n глобально: sudo npm install -g n8n
    • Запустите n8n: n8n start

    После запуска n8n будет доступен по адресу http://localhost:5678. Однако этот запуск нестабилен и завершится при закрытии терминала.

    Способ 2: Установка n8n как системного сервиса с помощью PM2

    Для постоянной работы n8n в фоновом режиме используйте менеджер процессов PM2.

    • Установите PM2 глобально: sudo npm install -g pm2
    • Запустите n8n через PM2: pm2 start n8n --name "n8n" -- start
    • Настройте автозагрузку PM2: pm2 startup systemd и выполните предложенную команду.
    • Сохраните список процессов PM2: pm2 save

    Теперь n8n будет автоматически запускаться при загрузке системы. Управлять процессом можно командами pm2 stop n8n, pm2 restart n8n.

    Способ 3: Установка n8n с помощью Docker (Рекомендуемый для production)

    Docker обеспечивает изоляцию, простоту обновления и переносимость. Установите Docker, если он отсутствует.

    • Установите Docker: sudo apt install -y docker.io docker-compose
    • Запустите и настройте Docker: sudo systemctl enable --now docker
    • Добавьте вашего пользователя в группу docker: sudo usermod -aG docker $USER (требуется перелогин).

    Создайте директорию для n8n и файл docker-compose.yml:

    • mkdir ~/n8n-docker && cd ~/n8n-docker
    • nano docker-compose.yml

    Вставьте следующую конфигурацию в файл docker-compose.yml:

    version: '3.8'
    services:
      n8n:
        image: n8nio/n8n
        restart: unless-stopped
        ports:
          - "5678:5678"
        environment:
          - N8N_PROTOCOL=http
          - N8N_HOST=localhost
          - N8N_PORT=5678
          - N8N_EDITOR_BASE_URL=http://ВАШ_IP_ИЛИ_ДОМЕН:5678/
          - GENERIC_TIMEZONE=Europe/Moscow
        volumes:
          - n8n_data:/home/node/.n8n
    volumes:
      n8n_data:
    

    Запустите n8n: docker-compose up -d. Проверьте статус: docker-compose ps.

    Базовая настройка и конфигурация n8n

    Для production-окружения критически важно настроить безопасность и параметры.

    Настройка переменных окружения

    Ключевые переменные окружения для файла docker-compose.yml или systemd-сервиса:

    Переменная Описание Пример значения
    N8N_ENCRYPTION_KEY Ключ для шифрования учетных данных. Обязателен для production. my-secret-key-32-chars-long!
    N8N_PROTOCOL Протокол (http/https). https
    WEBHOOK_URL Публичный URL для вызова вебхуков. https://n8n.example.com
    EXECUTIONS_DATA_PRUNE Включить автоматическую очистку данных выполненных workflows. true
    N8N_BASIC_AUTH_ACTIVE Включить базовую HTTP аутентификацию. true

    Настройка reverse proxy с Nginx и SSL

    Для безопасного доступа по домену с HTTPS настройте Nginx в качестве обратного прокси.

    • Установите Nginx: sudo apt install -y nginx
    • Создайте конфигурационный файл: sudo nano /etc/nginx/sites-available/n8n

    Добавьте следующую конфигурацию, заменив `your_domain.com` на ваш домен или IP:

    server {
        listen 80;
        server_name your_domain.com;
        return 301 https://$server_name$request_uri;
    }
    
    server {
        listen 443 ssl http2;
        server_name your_domain.com;
    
        ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
        

    Рекомендуемые настройки SSL (используйте certbot для получения сертификата)

    location / { proxy_pass http://localhost: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; } }
    • Активируйте конфигурацию: sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
    • Проверьте конфигурацию: sudo nginx -t
    • Перезагрузите Nginx: sudo systemctl reload nginx

    Обновление n8n

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

    Метод Команда обновления
    npm sudo npm update -g n8n
    PM2 Обновите через npm, затем перезапустите процесс: pm2 restart n8n
    Docker В директории с docker-compose.yml: docker-compose pull && docker-compose up -d

    Резервное копирование и восстановление данных

    Данные n8n (workflows, учетные данные, настройки) хранятся в директории ~/.n8n (при установке npm/PM2) или в Docker volume. Для резервного копирования:

    • При использовании Docker: docker run --rm -v n8n-docker_n8n_data:/data -v $(pwd):/backup alpine tar czf /backup/n8n_backup_$(date +%Y%m%d).tar.gz -C /data .
    • При установке через npm: архивируйте папку ~/.n8n.
    • Также используйте встроенную функцию экспорта workflows через веб-интерфейс.

    Ответы на часто задаваемые вопросы (FAQ)

    Как изменить порт, на котором работает n8n?

    Используйте переменную окружения N8N_PORT. В Docker измените маппинг портов в docker-compose.yml с «8080:5678» на «НОВЫЙ_ПОРТ:5678». При запуске через PM2: pm2 start n8n --name "n8n" -- --port=8080.

    Как сбросить пароль владельца n8n?

    Остановите n8n. Удалите или переименуйте файл ~/.n8n/config (или owner внутри него). После перезапуска вы сможете установить новые учетные данные.

    n8n не запускается, пишет «Error: listen EADDRINUSE: address already in use». Что делать?

    Порт 5678 занят другим процессом. Найдите и завершите процесс: sudo lsof -ti:5678 | xargs kill -9 или настройте n8n на другой порт.

    Как организовать высокую доступность (High Availability) для n8n?

    Официально HA не поддерживается в Community Edition. Для отказоустойчивости можно развернуть несколько экземпляров n8n, использующих одну внешнюю базу данных (PostgreSQL) и общую очередь (Redis), указав соответствующие переменные окружения (DB_TYPE, DB_POSTGRESDB_HOST, QUEUE_BULL_REDIS_HOST).

    Как подключить внешнюю базу данных PostgreSQL вместо SQLite?

    Добавьте в переменные окружения Docker или systemd-сервиса:

    • DB_TYPE=postgresdb
    • DB_POSTGRESDB_HOST=your_postgres_host
    • DB_POSTGRESDB_USER=n8n
    • DB_POSTGRESDB_PASSWORD=your_password
    • DB_POSTGRESDB_DATABASE=n8n

Как увеличить лимит памяти для выполнения workflow?

При использовании Node.js напрямую установите переменную окружения NODE_OPTIONS=--max-old-space-size=2048 (для 2 ГБ). В Docker добавьте эту переменную в секцию environment или укажите ограничения через mem_limit в docker-compose.yml.

Где хранятся логи n8n?

При запуске через PM2: pm2 logs n8n. В Docker: docker-compose logs -f n8n. При прямом запуске логи выводятся в консоль. Файлы логов также можно найти в директории ~/.pm2/logs (для PM2) или в volume Docker контейнера.

Как обезопасить доступ к n8n в интернете?

1. Обязательно используйте HTTPS через Nginx/Apache с SSL-сертификатами (например, от Let’s Encrypt).
2. Включите базовую аутентификацию (N8N_BASIC_AUTH_ACTIVE=true).
3. Настройте брандмауэр (UFW) для открытия только портов 80, 443 и SSH.
4. Рассмотрите использование VPN или аутентификации на уровне reverse proxy (например, Authelia).

Почему вебхуки n8n не работают извне?

Убедитесь, что переменная WEBHOOK_URL (или N8N_EDITOR_BASE_URL) установлена в публичный адрес вашего сервера (например, https://your_domain.com). Проверьте настройки брандмауэра и проброс портов в роутере, если сервер находится в локальной сети.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *