Self-hosted vs n8n.cloud
n8n.cloud — управляемый хостинг, не нужно следить за апдейтами, но платный и данные идут через чужую инфраструктуру. Self-hosted (Docker) — бесплатно, полный контроль над данными (важно для PII в письмах и CRM), но вы сами обновляете и бэкапите.
Минимальный self-hosted запуск:
docker volume create n8n_data
docker run -d --name n8n -p 5678:5678 \
-v n8n_data:/home/node/.n8n \
-e GENERIC_TIMEZONE="Europe/Kyiv" \
-e N8N_HOST="n8n.example.com" \
docker.n8n.io/n8nio/n8n
UI откроется на http://localhost:5678. Данные workflow и credentials лежат в volume n8n_data — бэкапьте его.
Подключение AI-провайдеров
Credentials → New. n8n хранит ключи зашифрованными (ключ шифрования в N8N_ENCRYPTION_KEY), они не видны в экспорте workflow.
- OpenAi credential —
API Key из platform.openai.com.
- Anthropic credential —
API Key из console.anthropic.com.
- Google Gemini (PaLM) API credential — ключ из Google AI Studio.
Ключ задаётся один раз в credential и переиспользуется во всех нодах. Никогда не вставляйте ключ в URL или тело запроса напрямую — только через credential.
Первый workflow: HTTP Request → OpenAI → Slack
Node: Manual Trigger
└─> Node: HTTP Request
Method: POST
URL: https://api.openai.com/v1/chat/completions
Authentication: Predefined Credential Type
Credential Type: OpenAi
Body: JSON
JSON Body:
{
"model": "gpt-4o-mini",
"messages": [{ "role": "user", "content": "Дай факт про осьминогов" }]
}
└─> Node: Slack
Resource: Message
Operation: Send
Channel: #general
Text: ={{ $json.choices[0].message.content }}
Модель данных n8n: items и JSON
n8n передаёт между нодами массив items. Каждый item — объект { json: {...}, binary: {...} }. Нода выполняется по разу на каждый item (если не настроено иначе).
{{ $json.field }} — поле текущего item.
{{ $node["HTTP Request"].json.choices[0].message.content }} — обращение к выходу конкретной ноды.
{{ $items() }} — все items на входе.
Понимание items критично: если на входе 10 писем, AI-нода вызовется 10 раз — это влияет на стоимость и rate limits. Чтобы агрегировать в один вызов, используйте ноду Aggregate или Code перед AI-нодой.
Самая частая ошибка новичка — ожидать, что нода обработает «всё сразу», тогда как n8n итерирует по items. Всегда смотрите на количество items в превью ноды.