Установка 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 -ysudo apt install -y curl wget gitcurl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -sudo apt install -y nodejs- Проверьте установку:
node --versionиnpm --version. - Установите n8n глобально:
sudo npm install -g n8n - Запустите n8n:
n8n start - Установите PM2 глобально:
sudo npm install -g pm2 - Запустите n8n через PM2:
pm2 start n8n --name "n8n" -- start - Настройте автозагрузку PM2:
pm2 startup systemdи выполните предложенную команду. - Сохраните список процессов PM2:
pm2 save - Установите Docker:
sudo apt install -y docker.io docker-compose - Запустите и настройте Docker:
sudo systemctl enable --now docker - Добавьте вашего пользователя в группу docker:
sudo usermod -aG docker $USER(требуется перелогин). mkdir ~/n8n-docker && cd ~/n8n-dockernano docker-compose.yml
Откройте терминал и выполните следующие команды для подготовки системы:
Установка Node.js и npm
n8n написан на Node.js, поэтому необходима его установка. Рекомендуется использовать версию Node.js 18 или выше. Установим Node.js через менеджер версий nodesource.
Способ 1: Установка n8n с помощью npm (Рекомендуемый для тестирования)
Этот метод прост и идеален для быстрого развертывания в целях разработки или ознакомления.
После запуска n8n будет доступен по адресу http://localhost:5678. Однако этот запуск нестабилен и завершится при закрытии терминала.
Способ 2: Установка n8n как системного сервиса с помощью PM2
Для постоянной работы n8n в фоновом режиме используйте менеджер процессов PM2.
Теперь n8n будет автоматически запускаться при загрузке системы. Управлять процессом можно командами pm2 stop n8n, pm2 restart n8n.
Способ 3: Установка n8n с помощью Docker (Рекомендуемый для production)
Docker обеспечивает изоляцию, простоту обновления и переносимость. Установите Docker, если он отсутствует.
Создайте директорию для n8n и файл 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=postgresdbDB_POSTGRESDB_HOST=your_postgres_hostDB_POSTGRESDB_USER=n8nDB_POSTGRESDB_PASSWORD=your_passwordDB_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). Проверьте настройки брандмауэра и проброс портов в роутере, если сервер находится в локальной сети.
Добавить комментарий