Skip to content

Глобальные константы в n8n

Иногда в n8n возникает необходимость использовать одни и те же значения в разных сценариях.

Например, это может быть ваша личная почта для тестов. Или более интересный случай. Чтобы скачать из сообщения в Телеграме файл, надо сначала отправить запрос на адрес https://api.telegram.org/bot<API-токен-бота>/getFile. И вот этот токен ни в коем случае нельзя прописывать напрямую. В явном виде он станет доступен любому, кто сможет взглянуть на ваш workflow. Его нужно прятать, как и любой credentials.

Как это сделать? На энтерпрайз-тарифе можно использовать вкладку Variables, но мы хотим общее решение. И здесь мы можем воспользоваться глобальными константами в самом docker, в моем случае — в docker compose.

  1. Объявите сначала эту константу в файле .env, например:
    my_bot_token=abc123
  2. Создайте константу в docker-compose.yml в разделе environment таким образом (соблюдайте отступы):
    environment:
    ...
    - my_bot_token=${my_bot_token}

    Она будет принимать значение из файла .env и сделает доступным его в n8n.
  3. Подключитесь к серверу и перезапустите контейнеры:
    docker compose down
    docker compose up -d

Теперь вы можете обращаться к этой константе через выражение {{ $env.my_bot_token}}.

Обратите внимание, что это выражение всегда будет показывать ошибку. Так и задумано — оно не может показывать в графическом интерфейсе своё содержимое. При этом выражение будет работать.

Вышел мой новый курс по ChatGPT и созданию GPT-приложений!