
Если задумали попробовать n8n локально в докере, то наверняка столкнетесь с необходимостью настроить WEBHOOK для работы с Telegram или чем-то другим.
Или придется искать решение ошибки: Telegram Trigger: Bad Request: bad webhook: An HTTPS URL must be provided for webhook
Удивительно, но ближе всех в правильному ответу была Алиса. Да да!
Она сказала:
- Получить публичный URL (с HTTPS), который направляет трафик на локальный сервис n8n. Например, можно использовать сервис туннелирования (например, ngrok) или домен.
- Настроить n8n на использование этого URL в качестве базы вебхука. Для этого можно установить переменную окружения WEBHOOK_URL. Это можно сделать:
- В командной строке — экспортировать переменную перед запуском n8n. Например, для Linux/Mac:
export WEBHOOK_URL="https://mytunnel.tre.com/"- В конфигурации n8n — указать URL в параметре WEBHOOK_URL.
Получить публичный https нам поможет ngrok — с ним разобраться легко — инструкция понятна:
1. Регистрируемся на ngok.com
2. Получаем https редирект
3. Устанавливаем ngrok
4. Конфигурируем и атентифицируем ngrok
Вот на поиск места в конфигурации n8n, чтобы указать WEBHOOK_URL ушло много, но оказалось просто: В docker_compose указываем переменные окружения.
Пример:
n8n:
<<: *service-n8n
hostname: n8n
container_name: n8n
restart: unless-stopped
ports:
— 5678:5678
volumes:
— n8n_storage:/home/node/.n8n
— ./n8n/demo-data:/demo-data
— ./shared:/data/shared
depends_on:
postgres:
condition: service_healthy
n8n-import:
condition: service_completed_successfully
environment:
— N8N_EDITOR_BASE_URL=полученный в ngrok адрес
— WEBHOOK_URL=полученный в ngrok адрес
— N8N_DEFAULT_BINARY_DATA_MODE=filesystem
С после перезапуска контейнера — ваша Telegram нода начинает работать.