Установка n8n на VPS: Полное руководство
n8n — это инструмент для автоматизации рабочих процессов с открытым исходным кодом, который позволяет соединять различные приложения, API и сервисы между собой. Развертывание n8n на собственном VPS (Virtual Private Server) обеспечивает полный контроль над данными, повышенную производительность и отсутствие ограничений облачных тарифных планов. Данное руководство детально описывает процесс установки, настройки и обслуживания n8n на виртуальном приватном сервере.
Требования к системе и подготовка VPS
Перед началом установки необходимо убедиться, что ваш VPS соответствует минимальным требованиям и правильно настроен.
- Операционная система: Ubuntu 22.04 LTS или 20.04 LTS (рекомендуется), либо другой дистрибутив Linux на базе Debian.
- Ресурсы сервера: Минимум 1 ядро CPU, 2 ГБ оперативной памяти, 20 ГБ свободного места на SSD. Для сложных рабочих процессов рекомендуется 2+ ядра и 4+ ГБ RAM.
- Сетевые настройки: Открытый порт 80 (HTTP) и 443 (HTTPS) для доступа к веб-интерфейсу, а также порт 5678 (по умолчанию для n8n).
- Учетные записи: Доступ к серверу по SSH с правами пользователя root или с привилегиями sudo.
Шаг 1: Подключение к серверу и первичная настройка
Подключитесь к вашему VPS через SSH, используя терминал или SSH-клиент.
ssh root@ваш_ip_адрес
Первым делом обновите индекс пакетов и установите обновления для системы.
apt update && apt upgrade -y
Установите базовые утилиты, которые могут потребоваться в процессе.
apt install -y curl wget git nano
Шаг 2: Установка Node.js и npm
n8n написан на Node.js, поэтому необходима его установка. Рекомендуется использовать версию Node.js 18 или выше. Установим через NodeSource.
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
apt install -y nodejs
Проверьте корректность установки:
node --version
npm --version
Шаг 3: Установка n8n с помощью npm
Самый простой способ установки — глобальная установка через npm. Это установит n8n как системный пакет.
npm install n8n -g
Этот процесс может занять несколько минут. После завершения проверьте установку:
n8n --version
Шаг 4: Настройка n8n как системного сервиса (Systemd)
Для обеспечения постоянной работы n8n в фоновом режиме и автоматического запуска при перезагрузке сервера необходимо настроить службу systemd.
Создайте файл конфигурации службы:
nano /etc/systemd/system/n8n.service
Вставьте в файл следующую конфигурацию. Обратите внимание на ключевые параметры:
[Unit]
Description=n8n - workflow automation tool
After=network.target
[Service]
Type=simple
User=root
Environment="NODE_ENV=production"
Environment="WEBHOOK_URL=https://ваш_домен_or_ip/"
ExecStart=/usr/bin/n8n start
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Важно заменить WEBHOOK_URL на ваш будущий домен или IP-адрес. Это критично для корректной работы вебхуков. Сохраните файл (Ctrl+O, Enter) и закройте редактор (Ctrl+X).
Активируйте и запустите службу:
systemctl daemon-reload
systemctl enable n8n
systemctl start n8n
Проверьте статус службы:
systemctl status n8n
Вы должны увидеть статус «active (running)». Логи можно просмотреть командой journalctl -u n8n -f.
Шаг 5: Настройка обратного прокси (Nginx) и HTTPS
Для безопасного доступа к n8n из интернета необходимо настроить веб-сервер Nginx в качестве обратного прокси и получить SSL-сертификат от Let’s Encrypt.
Установите Nginx и Certbot:
apt install -y nginx certbot python3-certbot-nginx
Настройте виртуальный хост для n8n. Создайте файл конфигурации:
nano /etc/nginx/sites-available/n8n
Добавьте следующую конфигурацию, заменив your_domain.com на ваш домен или IP-адрес.
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
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_cache_bypass $http_upgrade;
}
}
Активируйте конфигурацию и проверьте синтаксис Nginx:
ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
Теперь получите SSL-сертификат. Если у вас есть домен, укажите его:
certbot --nginx -d your_domain.com
Следуйте инструкциям мастера. Certbot автоматически обновит конфигурацию Nginx для использования HTTPS.
Шаг 6: Базовая конфигурация n8n
Основные настройки n8n осуществляются через переменные окружения. Их можно задать в файле службы systemd или в отдельном файле .env. Отредактируем службу для добавления ключевых параметров безопасности.
Остановите службу и откройте ее конфигурацию:
systemctl stop n8n
nano /etc/systemd/system/n8n.service
В секцию [Service] добавьте следующие строки Environment:
Environment="N8N_PROTOCOL=https"
Environment="N8N_HOST=your_domain.com"
Environment="N8N_PORT=5678"
Environment="N8N_ENCRYPTION_KEY=your_secure_encryption_key_here"
Environment="GENERIC_TIMEZONE=Europe/Moscow"
N8N_ENCRYPTION_KEY — это критически важный ключ для шифрования учетных данных. Сгенерируйте надежную случайную строку (например, с помощью команды openssl rand -base64 32) и подставьте ее. Сохраните этот ключ в надежном месте. Без него восстановление данных будет невозможно.
Примените изменения и перезапустите n8n:
systemctl daemon-reload
systemctl start n8n
Шаг 7: Настройка базы данных (PostgreSQL)
По умолчанию n8n использует SQLite, что подходит для тестирования. Для production-среды настоятельно рекомендуется использовать PostgreSQL для повышения производительности и надежности.
Установите PostgreSQL:
apt install -y postgresql postgresql-contrib
Перейдите в консоль PostgreSQL:
sudo -u postgres psql
В интерактивной консоли выполните следующие команды для создания базы данных и пользователя:
CREATE USER n8n_user WITH PASSWORD 'ваш_надежный_пароль';
CREATE DATABASE n8n_db OWNER n8n_user;
GRANT ALL PRIVILEGES ON DATABASE n8n_db TO n8n_user;
q
Снова отредактируйте службу n8n, чтобы добавить переменные для подключения к PostgreSQL. Добавьте в секцию [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=ваш_надежный_пароль"
Перезагрузите службу. n8n автоматически создаст необходимые таблицы в новой базе данных при первом запуске.
Шаг 8: Первый вход и настройка администратора
Откройте в браузере ваш домен или IP-адрес (через HTTPS). Вы увидите страницу регистрации первого пользователя, который станет администратором системы.
Заполните поля: имя, email и пароль. Этот пароль должен быть уникальным и надежным. После регистрации вы попадете в интерфейс редактора рабочих процессов n8n.
Управление, обновление и резервное копирование
Обновление n8n: Для обновления до новой версии выполните команды:
systemctl stop n8n
npm update -g n8n
systemctl start n8n
Резервное копирование: Критически важно регулярно создавать резервные копии. Основные данные хранятся в базе данных. Используйте pg_dump для PostgreSQL:
sudo -u postgres pg_dump n8n_db > /path/to/backup/n8n_backup_$(date +%Y%m%d).sql
Также рекомендуется настроить автоматическое резервное копирование базы данных и файлов конфигурации (например, с помощью cron).
Мониторинг: Используйте встроенные команды systemctl для мониторинга состояния службы. Для анализа нагрузки на сервер можно установить утилиты типа htop или настроить мониторинг через Prometheus и Grafana.
Часто задаваемые вопросы (FAQ)
Как изменить порт, на котором работает n8n?
Измените переменную окружения N8N_PORT в файле службы systemd (например, на 8080) и соответствующую конфигурацию в Nginx (proxy_pass http://localhost:8080;). После этого перезагрузите обе службы.
Как сбросить пароль администратора, если он утерян?
Остановите n8n. Если используется SQLite, можно отредактировать базу данных напрямую. Для PostgreSQL выполните запрос для обновления хэша пароля. Более чистый способ — использовать переменную окружения N8N_BASIC_AUTH_ACTIVE=true и задать новые учетные данные через N8N_BASIC_AUTH_USER и N8N_BASIC_AUTH_PASSWORD для временного доступа, после чего сменить пароль в интерфейсе.
Почему вебхуки не работают после настройки Nginx?
Наиболее вероятная причина — неправильно заданная переменная WEBHOOK_URL в конфигурации n8n. Она должна точно соответствовать внешнему URL, по которому доступен ваш инстанс (например, https://yourdomain.com/). Убедитесь, что в Nginx корректно передаются заголовки, особенно X-Forwarded-Proto.
Как увеличить лимит памяти для n8n?
Node.js имеет ограничение на использование памяти. Чтобы его увеличить, отредактируйте службу systemd, добавив в строку ExecStart параметр --max-old-space-size. Например: ExecStart=/usr/bin/n8n start --max-old-space-size=4096 для лимита в 4 ГБ.
Как организовать несколько инстансов n8n для масштабирования?
Для горизонтального масштабирования необходимо запустить несколько экземпляров n8n на разных портах или серверах, использовать общую базу данных PostgreSQL, а также внешний брокер сообщений (например, Redis) для координации процессов. Настройка балансировщика нагрузки (например, в Nginx) будет распределять запросы между инстансами.
Какие есть альтернативные методы установки n8n?
Помимо установки через npm, n8n можно развернуть с помощью Docker (официальный образ n8nio/n8n), что упрощает управление зависимостями и обновлениями. Также доступны пакеты для Docker Compose и развертывания в Kubernetes.
Заключение
Установка n8n на собственный VPS — процесс, требующий последовательного выполнения шагов по настройке сервера, установке зависимостей, развертыванию самого приложения и обеспечению его безопасности через обратный прокси и шифрование. Использование PostgreSQL в качестве базы данных и настройка резервного копирования являются обязательными практиками для production-среды. Правильно настроенный собственный инстанс n8n предоставляет мощный, гибкий и конфиденциальный инструмент для автоматизации бизнес-процессов без ограничений облачных подписок.
Комментарии