Установка n8n на свой сервер: Полное руководство
n8n — это мощный инструмент для автоматизации рабочих процессов с открытым исходным кодом. Развертывание n8n на собственном сервере обеспечивает полный контроль над данными, повышает безопасность и позволяет интегрировать внутренние системы, недоступные из публичного интернета. Данное руководство детально описывает процесс установки, настройки и администрирования n8n в собственной инфраструктуре.
Выбор метода установки и системные требования
Существует несколько основных методов установки n8n на сервер. Выбор зависит от вашей инфраструктуры, опыта и требований к масштабированию.
| Метод установки | Сложность | Гибкость | Рекомендуется для |
|---|---|---|---|
| Docker (Docker Compose) | Низкая | Средняя | Быстрого развертывания, изолированного окружения, большинства пользователей. |
| Собственный процесс (PM2) | Средняя | Высокая | Продвинутых пользователей, тонкой настройки Node.js окружения. |
| Kubernetes (Helm) | Высокая | Очень высокая | Кластерных сред, высокодоступных и масштабируемых развертываний. |
| Прямая установка (npm) | Средняя | Низкая | Тестирования и разработки, не рекомендуется для production. |
Минимальные системные требования:
- Операционная система: Ubuntu 20.04/22.04 LTS, Debian 10/11, CentOS 7/8 или аналогичная.
- Процессор: 2+ ядра.
- Оперативная память (RAM): 4 ГБ (рекомендуется 8 ГБ для production).
- Свободное место на диске: 10 ГБ (зависит от объема обрабатываемых данных).
- Node.js версии 18 или выше (для методов, отличных от Docker).
- Docker и Docker Compose (для Docker-метода).
sudo apt update && sudo apt upgrade -ysudo apt install -y apt-transport-https ca-certificates curl software-properties-commoncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt updatesudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Установка n8n с использованием Docker и Docker Compose
Этот метод является предпочтительным, так как он изолирует n8n и все его зависимости в контейнере, упрощая обновления и управление.
Шаг 1: Подготовка сервера и установка Docker
Обновите индекс пакетов и установите необходимые зависимости:
Добавьте официальный GPG-ключ Docker и репозиторий:
Установите Docker Engine и Docker Compose:
Проверьте установку: sudo docker --version и sudo docker compose version.
Шаг 2: Создание конфигурационного файла docker-compose.yml
Создайте отдельный каталог для n8n и перейдите в него: mkdir ~/n8n && cd ~/n8n. Создайте файл docker-compose.yml:
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_PROTOCOL=https
- N8N_HOST=your_domain.com
- N8N_PORT=5678
- N8N_WEBHOOK_URL=https://your_domain.com
- N8N_EDITOR_BASE_URL=https://your_domain.com
- NODE_ENV=production
- WEBHOOK_URL=https://your_domain.com
- GENERIC_TIMEZONE=Europe/Moscow
- N8N_ENCRYPTION_KEY=your_super_secure_encryption_key_32_chars
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n_user
- DB_POSTGRESDB_PASSWORD=your_secure_db_password
- N8N_METRICS=true
- N8N_METRICS_INCLUDE_DEFAULT_METRICS=true
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
networks:
- n8n_network
postgres:
image: postgres:15-alpine
container_name: n8n_postgres
restart: unless-stopped
environment:
- POSTGRES_USER=n8n_user
- POSTGRES_PASSWORD=your_secure_db_password
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- n8n_network
volumes:
n8n_data:
postgres_data:
networks:
n8n_network:
driver: bridge
Шаг 3: Настройка переменных окружения и запуск
В файле docker-compose.yml критически важно заменить следующие значения:
your_domain.comна ваш реальный домен или IP-адрес.your_super_secure_encryption_key_32_charsна случайную строку длиной ровно 32 символа. Сгенерировать можно командой:openssl rand -base64 24.your_secure_db_passwordна надежный пароль для базы данных.- Настройте
GENERIC_TIMEZONEв соответствии с вашим часовым поясом.
Запустите n8n в фоновом режиме: sudo docker compose up -d. Проверьте логи для отслеживания запуска: sudo docker compose logs -f n8n.
Настройка обратного прокси (Nginx) и SSL
Для безопасного доступа к n8n из интернета необходимо настроить веб-сервер в качестве обратного прокси и установить SSL-сертификат.
Шаг 1: Установка и настройка Nginx
Установите Nginx: sudo apt install -y nginx. Создайте новый конфигурационный файл виртуального хоста: sudo nano /etc/nginx/sites-available/n8n.
server {
listen 80;
server_name your_domain.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";
}
}
Активируйте конфигурацию и проверьте синтаксис:
sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginx
Шаг 2: Получение SSL-сертификата с помощью Certbot
Установите Certbot и плагин для Nginx:
sudo apt install -y certbot python3-certbot-nginx
Получите и установите SSL-сертификат автоматически:
sudo certbot --nginx -d your_domain.com
Certbot автоматически обновит конфигурацию Nginx для использования HTTPS и настроит автоматическое обновление сертификатов.
Базовая конфигурация и первичный вход в n8n
После успешного запуска откройте в браузере https://your_domain.com. Вам будет предложено создать учетную запись первого пользователя, который станет владельцем (owner) инстанса. Используйте надежный email и пароль. После входа рекомендуется настроить следующие параметры в разделе Settings:
- Features: Активация/деактивация функций, таких как внешние хранилища, логирование исполнения.
- Personal settings: Смена пароля, настройка двухфакторной аутентификации (2FA).
- Instance settings: Настройка времени жизни webhook-ов, лимитов данных, политик очистки.
Резервное копирование и обновление
Резервное копирование данных
Данные n8n хранятся в двух местах: рабочие процессы и настройки — в базе данных PostgreSQL, а файлы (например, для узла «Read/Write Files from Disk») — в смонтированном томе n8n_data.
Резервная копия базы данных:
sudo docker compose exec postgres pg_dump -U n8n_user n8n > n8n_backup_$(date +%Y%m%d).sql
Резервная копия файлов:
sudo tar -czvf n8n_files_backup_$(date +%Y%m%d).tar.gz /var/lib/docker/volumes/n8n_n8n_data/_data(путь может отличаться).
Обновление n8n
Для обновления версии n8n при использовании Docker Compose:
- Остановите контейнеры:
sudo docker compose down. - Сделайте резервные копии (как описано выше).
- Потяните новую версию образа:
sudo docker compose pull. - Запустите контейнеры заново:
sudo docker compose up -d. - Проверьте логи на наличие ошибок:
sudo docker compose logs -f n8n.
Мониторинг и логирование
Для мониторинга производительности n8n используйте встроенные метрики (Prometheus) и логи Docker.
Настройка экспорта метрик: Убедитесь, что в docker-compose.yml установлены переменные N8N_METRICS=true. Метрики доступны по эндпоинту https://your_domain.com/metrics. Их можно собирать с помощью Prometheus и визуализировать в Grafana.
Просмотр логов: Используйте команду sudo docker compose logs --tail=100 -f n8n для просмотра логов в реальном времени. Для долгосрочного хранения логов настройте драйвер логирования Docker, например, на отправку в централизованную систему (Loki, ELK Stack).
Ответы на часто задаваемые вопросы (FAQ)
Как сменить порт, на котором работает n8n?
Измените маппинг портов в секции ports файла docker-compose.yml. Например, "8080:5678" сделает n8n доступным на порту 8080 хоста. Не забудьте также обновить переменную окружения N8N_PORT, если это необходимо, и конфигурацию обратного прокси.
Как настроить отправку email-уведомлений от n8n?
Используйте узел «Email (SMTP)». Для настройки SMTP-транспорта в самом n8n добавьте переменные окружения в docker-compose.yml:
N8N_EMAIL_MODE=smtpN8N_SMTP_HOST=smtp.yourprovider.comN8N_SMTP_PORT=587N8N_SMTP_USER=your_email@domain.comN8N_SMTP_PASSWORD=your_app_specific_passwordN8N_SMTP_SENDER=your_email@domain.com
Как увеличить лимит на размер загружаемых файлов или payload?
По умолчанию n8n имеет лимит на размер payload. Чтобы увеличить его, добавьте переменную окружения N8N_PAYLOAD_SIZE_MAX=16 (значение в мегабайтах). В Nginx также нужно увеличить соответствующий лимит, добавив в блок location директиву client_max_body_size 16M;.
Как организовать аутентификацию дополнительных пользователей?
В настройках экземпляра (Instance Settings) в веб-интерфейсе n8n вы можете переключить аутентификацию с «Just me» на «Everyone» или «Team». Для «Team» требуется настроить метод аутентификации: встроенная база данных, LDAP, SAML или OAuth2 (например, через Google, GitHub). Настройка производится через соответствующие переменные окружения (например, N8N_AUTHENTICATION_PROVIDERS).
Почему мои webhook-и не работают после настройки Nginx?
Наиболее вероятная причина — неправильная конфигурация прокси. Убедитесь, что в конфиге Nginx присутствуют строки proxy_set_header Host $host; и proxy_set_header X-Forwarded-Proto $scheme;. Также проверьте, что переменные окружения N8N_WEBHOOK_URL и WEBHOOK_URL установлены правильно и указывают на ваш публичный домен с https://.
Как перенести данные n8n на другой сервер?
- На старом сервере создайте полную резервную копию БД и тома с файлами.
- Установите n8n на новом сервере, используя ту же версию.
- Остановите n8n на новом сервере:
sudo docker compose down. - Восстановите дамп базы данных:
sudo docker compose exec -T postgres psql -U n8n_user n8n < n8n_backup.sql. - Замените содержимое тома
n8n_dataна новом сервере скопированными файлами. - Важно: Скопируйте и используйте тот же
N8N_ENCRYPTION_KEY, что и на старом сервере, иначе зашифрованные данные (например, credentials) не будут расшифрованы. - Запустите n8n на новом сервере:
sudo docker compose up -d.
Комментарии