N8n Port: Подробное руководство по портам, конфигурации и сетевой настройке
N8n (произносится как «n-eight-n») — это инструмент для автоматизации рабочих процессов с открытым исходным кодом, который использует архитектуру, основанную на Node.js. Термин «port» (порт) в контексте n8n имеет несколько ключевых значений: это сетевой порт, на котором работает веб-интерфейс и API, а также концепция портов на нодах (узлах) внутри самого рабочего процесса. Понимание работы с портами критически важно для развертывания, безопасности и эффективного использования платформы.
Сетевой порт n8n: Конфигурация и настройка
По умолчанию n8n запускает веб-сервер на порту 5678. Этот порт используется для доступа к веб-интерфейсу редактора рабочих процессов и REST API. Изменение порта по умолчанию требуется в случаях, когда порт 5678 уже занят другим приложением, или при развертывании n8n за обратным прокси (например, Nginx, Apache), или для соблюдения корпоративных политик безопасности.
Основные переменные окружения для управления сетевым портом:
- N8N_PORT: Основная переменная для изменения порта. Например, `N8N_PORT=8080` заставит n8n слушать порт 8080.
- N8N_PROTOCOL: Определяет протокол (http или https). По умолчанию используется http.
- N8N_HOST: Хост, на котором будет запущен сервер. По умолчанию `localhost`. Для доступа извне необходимо установить значение `0.0.0.0`.
Пример запуска n8n на порту 8080 и доступного для сети:
N8N_PORT=8080 N8N_HOST=0.0.0.0 n8n start
Развертывание за обратным прокси
В production-средах n8n почти всегда размещается за обратным прокси-сервером. Это позволяет использовать стандартные порты (80 для HTTP, 443 для HTTPS), организовывать SSL/TLS терминацию и настраивать базовую аутентификацию.
Пример конфигурации Nginx для проксирования запросов на n8n, работающий на порту 5678 локально:
server {
listen 80;
server_name automation.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;
}
}
При работе за прокси критически важно корректно настроить переменную окружения WEBHOOK_URL. N8n использует ее для генерации URL-адресов вебхуков. Если n8n находится за прокси, он должен знать свой публичный URL.
N8N_PROTOCOL=https N8N_HOST=automation.your-domain.com WEBHOOK_URL=https://automation.your-domain.com n8n start
Порты нод (узлов) в редакторе рабочих процессов
В визуальном редакторе n8n каждый узел имеет порты для ввода и вывода данных. Это не сетевые порты, а точки соединения для данных.
- Входные порты (Input Ports): У большинства нод один входной порт, принимающий данные от предыдущей ноды. Ноды-триггеры (например, «Webhook», «Schedule») не имеют входных портов, так как они инициируют выполнение workflow.
- Выходные порты (Output Ports): Количество выходных портов варьируется. Стандартные ноды имеют один главный выход. Ноды, подобные «IF» (Условие), имеют два выхода (для веток «true» и «false»). Ноды, которые могут обрабатывать несколько элементов отдельно, могут иметь динамическое количество выходов.
Соединение портов между нодами создает поток данных. Данные, выходящие из выходного порта одной ноды, становятся входными данными для следующей ноды.
Таблица: Ключевые переменные окружения, связанные с портами и сетью
| Переменная окружения | Назначение | Значение по умолчанию |
|---|---|---|
| N8N_PORT | Задает TCP-порт для веб-интерфейса и API. | 5678 |
| N8N_HOST | Задает хост (интерфейс) для привязки сервера. | localhost |
| N8N_PROTOCOL | Определяет протокол: http или https. | http |
| WEBHOOK_URL | Публичный URL, используемый для генерации адресов вебхуков. | http://localhost:5678/ |
| N8N_METRICS | Включает сбор метрик. При включении метрики доступны на порту N8N_PORT по пути /metrics. | false |
| EXTERNAL_FRONTEND_HOOKS_URL | Отдельный URL для вебхуков, если используется отдельный домен для входящих вызовов. | Значение WEBHOOK_URL |
Безопасность и управление портами
Открытие сетевого порта требует внимания к безопасности. Рекомендуемые практики:
- Никогда не экспортируйте n8n напрямую в интернет на порту 5678 без обратного прокси и аутентификации.
- Всегда используйте HTTPS в production-средах. SSL может быть настроен на уровне обратного прокси (рекомендуется) или непосредственно в n8n с помощью переменных `N8N_PROTOCOL`, `N8N_SSL_KEY`, `N8N_SSL_CERT`.
- Используйте брандмауэр для ограничения доступа к порту n8n только с доверенных IP-адресов (например, с внутренней сети или с IP-адресов балансировщика нагрузки).
- Настройте параметры аутентификации n8n (`N8N_BASIC_AUTH_ACTIVE`, `N8N_JWT_AUTH_ACTIVE`).
Диагностика проблем с портами
Распространенные проблемы и их решения:
- «Port already in use» (Порт уже используется): Используйте команды типа `netstat -tulpn | grep :5678` (Linux) или `lsof -i :5678` (macOS) для поиска процесса, занимающего порт. Остановите конкурирующий процесс или измените порт n8n.
- Невозможно подключиться к интерфейсу с другого компьютера: Убедитесь, что n8n запущен с `N8N_HOST=0.0.0.0`, а не `localhost`. Проверьте правила брандмауэра на хосте, где работает n8n.
- Вебхуки не работают после настройки за прокси: Проверьте и правильно установите переменные `WEBHOOK_URL` и `N8N_PROTOCOL`. Убедитесь, что обратный прокси корректно передает заголовки, особенно `X-Forwarded-Proto`.
Ответы на часто задаваемые вопросы (FAQ)
Как изменить порт n8n при запуске через Docker?
При запуске контейнера Docker используйте флаг `-p` для проброса портов. Например, чтобы сопоставить порт 8080 хоста с портом 5678 контейнера: `docker run -it —rm -p 8080:5678 n8nio/n8n`. Если вам нужно изменить порт внутри контейнера, используйте переменную окружения: `docker run -it —rm -e N8N_PORT=3456 -p 8080:3456 n8nio/n8n`.
Можно ли запустить n8n на стандартном порту 80 или 443?
Да, но не напрямую. Для использования портов ниже 1024 (таких как 80 и 443) в Linux требуются права root, что не рекомендуется для безопасности. Правильный подход — запустить n8n на высоком порту (например, 5678) и разместить его за обратным прокси-сервером (Nginx, Caddy, Traefik), который будет слушать порты 80/443 и проксировать запросы на n8n.
Что делать, если я забыл пароль и не могу попасть в интерфейс?
Если вы используете базовую аутентификацию, вы можете сбросить учетные данные, удалив файл `~/.n8n/config` (или переменную `N8N_CONFIG_FILES`), но это также удалит все остальные настройки. В production-среде рекомендуется хранить секреты в переменных окружения (`N8N_BASIC_AUTH_USER`, `N8N_BASIC_AUTH_PASSWORD`), управление которыми можно изменить вне n8n.
Как настроить несколько экземпляров n8n на одном сервере?
Для запуска нескольких независимых экземпляров n8n на одном хосте необходимо назначить каждому из них уникальный порт (через `N8N_PORT`) и уникальный путь для хранения данных (через `N8N_USER_FOLDER`, `N8N_DB_TYPE` и `N8N_DB_SQLITE_DATABASE` для SQLite или разные схемы/базы для PostgreSQL). Затем вы можете запустить их как отдельные службы или контейнеры Docker.
Почему мои вебхуки работают локально, но не работают при развертывании на сервере?
Наиболее вероятная причина — неправильная настройка переменной `WEBHOOK_URL`. При локальном запуске n8n правильно генерирует URL `http://localhost:5678/webhook-path`. На сервере с доменным именем необходимо явно указать `WEBHOOK_URL=https://your-public-domain.com`. Также убедитесь, что порт открыт в брандмауэре облачного провайдера и что обратный прокси корректно настроен.
Какой порт используется для внутренней коммуникации при масштабировании?
N8n для внутренней коммуникации между экземплярами в режиме масштабирования (например, для координации вебхуков) использует Redis в качестве брокера сообщений. Redis по умолчанию использует порт 6379. Сами экземпляры n8n не открывают дополнительные порты для прямого общения друг с другом, вся координация происходит через базу данных (PostgreSQL) и Redis.
Добавить комментарий