Установка n8n на собственный сервер: Полное руководство
n8n — это мощный инструмент для автоматизации рабочих процессов с открытым исходным кодом. Его установка на собственный сервер обеспечивает полный контроль над данными, производительностью и конфигурацией. Данное руководство детально описывает процесс установки, настройки и обслуживания n8n на сервере под управлением Linux.
Предварительные требования и подготовка сервера
Перед началом установки убедитесь, что ваш сервер соответствует следующим требованиям:
- Операционная система: Ubuntu 20.04/22.04 LTS, Debian 11/12, или другой дистрибутив Linux. Команды в статье приведены для Ubuntu/Debian.
- Пользователь с привилегиями sudo: У вас должен быть доступ к учетной записи с правами администратора.
- Минимальные аппаратные ресурсы: 2 ядра CPU, 2 ГБ оперативной памяти, 10 ГБ свободного дискового пространства. Для производственных нагрузок ресурсы должны быть увеличены.
- Сетевые настройки: Открытые порты (по умолчанию 5678 для n8n и 80/443 для веб-доступа). Убедитесь, что брандмауэр (например, UFW) настроен корректно.
- Установленный Node.js: n8n требует среду выполнения Node.js версии 18 или выше.
- Обновление списка пакетов:
sudo apt update && sudo apt upgrade -y - Установка curl:
sudo apt install -y curl - Добавление репозитория NodeSource для Node.js 20 (LTS):
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - - Установка Node.js и npm:
sudo apt install -y nodejs - Проверка установки:
node --versionиnpm --version - Установите n8n глобально:
sudo npm install -g n8n - Запустите n8n вручную для проверки:
n8n start - Создайте пользователя для n8n (опционально, но рекомендуется для безопасности):
sudo useradd -m -s /bin/bash n8n-user - Перейдите в домашнюю директорию пользователя и установите n8n локально:
sudo -u n8n-user -H sh -c "cd /home/n8n-user && npm install n8n" - Создайте файл службы systemd:
sudo nano /etc/systemd/system/n8n.service
Установка Node.js и npm
Первым шагом является установка Node.js. Рекомендуется использовать менеджер версий NodeSource для получения актуальной стабильной версии.
Выполните следующие команды в терминале:
Способ 1: Установка n8n с помощью npm (Прямая установка)
Это самый простой способ для быстрого развертывания, идеально подходящий для тестирования и небольших проектов.
После выполнения этих команд n8n будет доступен по адресу http://ваш_ip_сервера:5678. Однако такой запуск не является постоянным и завершится при закрытии сессии терминала.
Способ 2: Установка n8n как службы systemd (Рекомендуемый для production)
Для обеспечения постоянной работы и автоматического запуска после перезагрузки сервера необходимо настроить n8n как системную службу.
Вставьте следующую конфигурацию в файл, заменив `/home/n8n-user` на актуальный путь при необходимости:
[Unit]
Description=n8n - Workflow Automation Tool
After=network.target
[Service]
Type=simple
User=n8n-user
ExecStart=/usr/bin/node /home/n8n-user/node_modules/n8n/bin/n8n start
Restart=on-failure
RestartSec=10
Environment="NODE_ENV=production"
Environment="WEBHOOK_URL=http://localhost:5678/"
Environment="N8N_BASIC_AUTH_ACTIVE=true"
Environment="N8N_BASIC_AUTH_USER=admin"
Environment="N8N_BASIC_AUTH_PASSWORD=your_secure_password_here"
[Install]
WantedBy=multi-user.target
Ключевые параметры среды (Environment):
N8N_BASIC_AUTH_ACTIVE, N8N_BASIC_AUTH_USER, N8N_BASIC_AUTH_PASSWORD— включают базовую HTTP аутентификацию. Это критически важно при выносе сервиса в интернет.WEBHOOK_URL— базовый URL для вебхуков.N8N_PROTOCOL, N8N_HOST, N8N_PORT— для тонкой настройки сетевых параметров.
- Перезагрузите демон systemd, включите и запустите службу:
sudo systemctl daemon-reloadsudo systemctl enable n8n.servicesudo systemctl start n8n.service
- Проверьте статус службы:
sudo systemctl status n8n.service - Просмотр логов в реальном времени:
sudo journalctl -u n8n.service -f
Способ 3: Установка n8n с помощью Docker (Изолированная установка)
Docker обеспечивает изоляцию и простоту управления зависимостями. Убедитесь, что Docker и Docker Compose установлены на вашем сервере.
- Создайте директорию для проекта и файл
docker-compose.yml:mkdir ~/n8n-docker && cd ~/n8n-docker && nano docker-compose.yml
Добавьте следующую конфигурацию:
version: '3.8'
services:
n8n:
image: n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=your_secure_password_here
- NODE_ENV=production
- WEBHOOK_URL=http://localhost:5678/
- N8N_PROTOCOL=http
- N8N_HOST=localhost
- N8N_PORT=5678
- N8N_METRICS=true
- GENERIC_TIMEZONE=Europe/Moscow
volumes:
- n8n_data:/home/node/.n8n
networks:
- n8n_network
volumes:
n8n_data:
networks:
n8n_network:
driver: bridge
- Запустите контейнер в фоновом режиме:
docker-compose up -d - Проверьте статус контейнера:
docker-compose ps - Остановка контейнера:
docker-compose down(данные сохранятся в томеn8n_data)
Настройка обратного прокси с помощью Nginx и SSL
Для безопасного доступа к n8n по стандартным портам (HTTP/80 и HTTPS/443) и настройки SSL-шифрования необходимо установить обратный прокси.
- Установите Nginx и Certbot:
sudo apt install -y nginx certbot python3-certbot-nginx - Создайте конфигурационный файл для вашего домена:
sudo nano /etc/nginx/sites-available/n8n.yourdomain.com
Добавьте следующую конфигурацию, заменив `n8n.yourdomain.com` на ваш домен:
server {
listen 80;
server_name n8n.yourdomain.com;
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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
- Активируйте конфигурацию и перезапустите Nginx:
sudo ln -s /etc/nginx/sites-available/n8n.yourdomain.com /etc/nginx/sites-enabled/sudo nginx -t(проверка синтаксиса)sudo systemctl reload nginx
- Получите SSL-сертификат от Let’s Encrypt:
sudo certbot --nginx -d n8n.yourdomain.com
После успешного выполнения Certbot автоматически обновит конфигурацию Nginx для использования HTTPS.
Настройка базы данных (PostgreSQL)
По умолчанию n8n использует SQLite для хранения данных. Для повышения производительности и надежности в production-среде рекомендуется перейти на PostgreSQL.
- Установите PostgreSQL:
sudo apt install -y postgresql postgresql-contrib - Перейдите в консоль PostgreSQL:
sudo -u postgres psql - Выполните следующие SQL-команды для создания базы данных и пользователя:
CREATE USER n8n_user WITH PASSWORD 'your_strong_db_password';CREATE DATABASE n8n_db OWNER n8n_user;GRANT ALL PRIVILEGES ON DATABASE n8n_db TO n8n_user;
- Выйдите из консоли:
q
Для применения PostgreSQL в n8n, установленном через systemd, добавьте в секцию [Service] файла /etc/systemd/system/n8n.service следующие переменные среды:
Environment="DB_TYPE=postgresdb"
Environment="DB_POSTGRESDB_HOST=localhost"
Environment="DB_POSTGRESDB_PORT=5432"
Environment="DB_POSTGRESDB_DATABASE=n8n_db"
Environment="DB_POSTGRESDB_USER=n8n_user"
Environment="DB_POSTGRESDB_PASSWORD=your_strong_db_password"
Environment="DB_POSTGRESDB_SSL=false"
После добавления переменных перезапустите службу: sudo systemctl restart n8n.service.
Базовое администрирование и обслуживание
После установки важно правильно управлять сервисом.
Управление службой systemd:
- Остановка:
sudo systemctl stop n8n - Запуск:
sudo systemctl start n8n - Перезагрузка (после изменения конфигурации):
sudo systemctl restart n8n - Просмотр логов:
sudo journalctl -u n8n -f
Резервное копирование:
Критически важные данные n8n (workflows, credentials) хранятся в базе данных. Регулярно создавайте дампы.
- Для PostgreSQL:
sudo -u postgres pg_dump n8n_db > /path/to/backup/n8n_backup_$(date +%Y%m%d).sql - Для SQLite (при использовании Docker volume):
docker cp n8n:/home/node/.n8n/database.sqlite ./backup.sqlite
Обновление n8n:
- Для установки через npm:
sudo npm update -g n8nс последующим перезапуском службы. - Для Docker: обновите образ в файле
docker-compose.ymlдо последней версии и выполнитеdocker-compose pull && docker-compose up -d.
Ответы на часто задаваемые вопросы (FAQ)
Как сбросить пароль администратора в n8n?
Пароль хранится в базе данных. Для сброса необходимо обновить хэш пароля в таблице user. Можно использовать команду n8n для смены пароля, если есть доступ к серверу: n8n user:reset --email=your@email.com. Альтернативно, отключите базовую аутентификацию (N8N_BASIC_AUTH_ACTIVE=false), перезапустите n8n, зайдите в интерфейс и установите новый пароль в настройках пользователя, после чего снова включите аутентификацию.
Почему вебхуки n8n не работают из интернета?
Вероятные причины и решения:
- Неправильная настройка
WEBHOOK_URL. Эта переменная должна содержать публичный URL, по которому доступен ваш n8n (например,https://n8n.yourdomain.com). - Проблемы с настройкой обратного прокси. Убедитесь, что Nginx корректно проксирует запросы на порт 5678.
- Брандмауэр блокирует порт 80/443 или 5678. Проверьте правила UFW или iptables.
- Для Docker: убедитесь, что порты проброшены корректно, и в контейнере установлена правильная переменная
N8N_HOST(часто требуется0.0.0.0).
Как увеличить лимит памяти для Node.js в n8n?
При сложных workflow может потребоваться увеличить лимит памяти. В файле службы systemd (/etc/systemd/system/n8n.service) в строке ExecStart укажите флаг --max-old-space-size.
ExecStart=/usr/bin/node --max-old-space-size=4096 /home/n8n-user/node_modules/n8n/bin/n8n start
Значение указано в мегабайтах (например, 4096 = 4 ГБ). После изменения перезагрузите службу.
Где хранятся файлы конфигурации и данные workflows?
Локация зависит от способа установки:
- Установка npm (глобальная): Данные пользователя по умолчанию хранятся в
~/.n8n(директория домашней папки пользователя, от которого запущен процесс). - Установка systemd (отдельный пользователь): В домашней директории этого пользователя, например,
/home/n8n-user/.n8n. - Установка Docker: Внутри Docker volume (по умолчанию с именем
n8n_data), который монтируется в путь/home/node/.n8nвнутри контейнера.
Как организовать кластеризацию или горизонтальное масштабирование n8n?
Для работы в режиме кластера (несколько экземпляров n8n) необходимо:
- Использовать общую базу данных (PostgreSQL) для всех экземпляров.
- Настроить внешний брокер сообщений (например, Redis) для координации выполнения workflow. Укажите переменные среды:
EXECUTIONS_PROCESS=queueQUEUE_BULL_REDIS_HOST=your_redis_hostQUEUE_BULL_REDIS_PORT=6379
- Использовать общее хранилище для файлов (если workflow работают с файлами) через S3-совместимое хранилище или общую сетевую файловую систему (NFS).
Как настроить отправку email-уведомлений от n8n?
n8n имеет встроенный узел Email (SMTP). Для его работы необходимо настроить переменные среды SMTP на сервере:
Environment="N8N_EMAIL_SMTP_HOST=smtp.yourprovider.com"
Environment="N8N_EMAIL_SMTP_PORT=587"
Environment="N8N_EMAIL_SMTP_USER=your_email@domain.com"
Environment="N8N_EMAIL_SMTP_PASSWORD=your_app_password"
Environment="N8N_EMAIL_SENDER_ADDRESS=your_email@domain.com"
После перезапуска службы узел Email (SMTP) будет автоматически использовать эти учетные данные.
Заключение
Установка n8n на собственный сервер — процесс, требующий внимания к деталям конфигурации, безопасности и производительности. Рекомендуемый путь для production-среды — использование Docker или systemd-службы в связке с PostgreSQL, Nginx в качестве обратного прокси и обязательным включением аутентификации. Регулярное резервное копирование базы данных и своевременное обновление версии n8n обеспечат стабильную и безопасную работу вашей платформы автоматизации. Данное руководство покрывает ключевые аспекты развертывания и администрирования, позволяя создать надежную основу для построения сложных рабочих процессов.
Добавить комментарий