n8n - курс2.21.5

n8n 2.21

workflow automation з нуля до production
Курс для backend-розробника, який хоче будувати інтеграції без коду (де він зайвий) і продавати ці послуги на Fiverr. Теорія - зразу практика в Docker - зразу production-варіант.
/ - наступний / попередній слайд  |  / / Space - скрол всередині слайда
Home / End - перший / останній  |  T - зміст і закладки  |  B - закладка  |  Esc - закрити
~12 годин  ·  8 розділів  ·  теорія + практика
map

Карта курсу

Вісім розділів. Лінійна траєкторія від першого Docker-контейнера до Fiverr-готового сервісу. На вхід - досвід backend (PHP/Laravel/Symfony) і базове знання Docker. На вихід - вмієш будувати workflow під будь-яку задачу і знаєш, як його продати клієнту.

01
Що таке n8n і де він тебе врятує
Workflow, node, connection. Ліцензія. 4 типи нод. 5 use cases для гігу.
≈ 0.8 год
02
Sandbox: Docker-стек і перший workflow
Docker + Postgres. UI tour. Items, json, binary. Pin data. Перший Hello World.
≈ 1.5 год
03
Ядро: ноди, дані, виконання
Triggers, IF/Switch/Filter, Set/Code, expressions, variables, error handling, sticky notes, credentials.
≈ 2.2 год
04
Інтеграції: HTTP, webhooks, API
HTTP Request 7 auth × 5 body, pagination, Webhook node, response modes, public REST API.
≈ 1.5 год
05
AI workflows: agents, memory, RAG
LLM vs Agent. Cluster nodes. Chat Trigger + OpenAI. Memory. Tools. Vector DB. AI email triage.
≈ 1.5 год
06
Production: queue mode, моніторинг, безпека
Queue mode (main + worker + redis). Encryption. Retention. 2FA. Metrics. Source control.
≈ 2 год
07
Деплой клієнту: VPS + Traefik + SSL
VPS, Docker install, Traefik + Let's Encrypt, .env secrets, backups, передача клієнту.
≈ 1.5 год
08
Fiverr-готовність: послуги, ціна, доставка
Що дозволяє ліцензія. 5 типів gig-ів. Скоупінг. Ціни 2026. Доставка. 5 portfolio templates. Червоні прапори.
≈ 1 год
Версія матеріалу: 2.21.5 Перевірено: 2026-05-20 Джерело release: github.com/n8n-io/n8n/releases/latest
РОЗДІЛ 01 · ≈ 50 ХВ

Що таке n8n і де він тебе врятує

Без коду коли можна без коду, з кодом коли треба. Поняття workflow, node, connection. Ліцензія: що дозволено продавати, що ні. 5 use cases, які реально купують клієнти.

1.1

n8n - workflow automation з кодом коли треба

n8n - це платформа автоматизації workflow для технічних команд. Сильна сторона - гібрид: 80% будуєш drag-and-drop (як Zapier), 20% дописуєш JavaScript або Python (де no-code задихається).

n8n is a workflow automation platform that gives technical teams the flexibility of code with the speed of no-code. With 400+ integrations, native AI capabilities, and a fair-code license, n8n lets you build powerful automations while maintaining full control over your data and deployments.

Чим відрізняється від конкурентів

ІнструментHostingКодSelf-hostAI вбудовано
ZapierSaaS onlyJS у Code stepOpenAI step
Make (Integromat)SaaS onlyобмеженоOpenAI step
Apache AirflowSelf-hostPython DAG-и✗ (DIY)
n8nSaaS + self-hostJS, Python✓ безкоштовноAI Agent + LangChain
Для backend-розробника n8n замінює день роботи (контролер + queue worker + cron + retry logic) на годину drag-and-drop, без втрати контролю - усе на твоєму сервері, з твоїм Postgres.
Джерело: github.com/n8n-io/n8n Версія: 2.21.5 Перевірено: 2026-05-20
1.2

Fair-code і Sustainable Use License

n8n - fair-code, не open-source у строгому сенсі OSI. Source доступний, self-host безкоштовний, але є явні обмеження на комерційне використання. Це принципово важливо до того, як ти йдеш продавати n8n-послуги.

Що ДОЗВОЛЕНО

Що ЗАБОРОНЕНО

White-labeling n8n and offering it to your customers for money. Не можеш робити n8n-як-SaaS під своїм брендом.
Hosting n8n and charging people money to access it. Не можеш брати гроші за доступ до твого n8n інстансу.
User credential collection - збирати credentials end users (їх Stripe/Gmail/...) щоб діяти від їхнього імені у твоєму додатку.
Все три "ДОЗВОЛЕНО" - саме те, що буде твоїм Fiverr-гігом: building workflows, consulting, setting up and maintaining. Ти продаєш свою працю, а не доступ до n8n.
Джерело: docs.n8n.io/sustainable-use-license Версія: 2.21.5 Перевірено: 2026-05-20
1.3

Workflow, node, connection - словник

Три базові поняття, без яких далі не пройдеш. Вивчи зараз - усе інше будується поверх них.

An n8n workflow is a collection of nodes that automate a process. Workflows begin execution when a trigger condition occurs and execute sequentially to achieve complex tasks.
In n8n, nodes are individual components that you compose to create workflows. Nodes define when the workflow should run, allow you to fetch, send, and process data, can define flow control logic, and connect with external services.
A trigger node is a special node responsible for executing the workflow in response to certain conditions. All production workflows need at least one trigger to determine when the workflow should run.

Як вони пов'язані

workflow = orchestrated sequence of nodes Trigger Node Webhook / Schedule starts the run connection Action Node HTTP Request does the work Core Node IF / Code / Set logic / transform Action Node Slack / Gmail deliver data items: { json: {...}, binary: {...} } flow left → right Canvas - "primary workspace where you add and connect nodes"
Джерело: docs.n8n.io/glossary Версія: 2.21.5 Перевірено: 2026-05-20
1.4

4 типи нод

Усі ноди n8n - чотири категорії. Розумієш категорії - орієнтуєшся у каталозі без читання назв по одній.

ТипПризначенняПриклади
Trigger Запускає workflow. Тільки 1 на workflow (Webhook + Schedule = 2 окремих trigger-flow). Manual Trigger, Webhook, Schedule Trigger, Gmail Trigger, RSS Read
Action Інтеграція з конкретним сервісом. 400+ штук - Slack, Gmail, Notion, HubSpot, etc. Slack, Google Sheets, HubSpot, Stripe, Telegram
Core Логіка і робота з даними. Універсальні, не прив'язані до сервісу. HTTP Request, Code, IF, Switch, Merge, Set, Wait
Cluster AI/LangChain: root node + sub-nodes (Memory, Tools, Embeddings, ...). AI Agent, Chat Trigger, Vector Store, OpenAI Chat Model
In n8n, cluster nodes are groups of nodes that work together to provide functionality in a workflow. They consist of a root node and one or more sub nodes that extend the node's functionality.
Cluster nodes (5.x курсу) - єдиний тип, де одна "нода" на canvas складається з кількох. Усі інші - один прямокутник = одна нода.
Джерело: docs.n8n.io/integrations/builtin/core-nodes Версія: 2.21.5 Перевірено: 2026-05-20
1.5

5 use cases, які реально продаються

З 400+ можливих сценаріїв клієнти Fiverr купують переважно одне з п'яти. Запам'ятай їх - на них будуєш портфоліо.

1. Lead enrichment + multi-channel notify

Form submit → Webhook → enrich через Clearbit/Apollo → save до HubSpot → Slack alert sales team → email confirmation клієнту. Класика, продається за $80-200.

2. Daily/weekly report

Schedule Trigger (09:00) → SQL запит до Postgres → format → email або Slack post. Замінює "Vasya пише script + cron". Продається за $50-150.

3. AI customer support

Webhook (chat widget) → AI Agent з memory + RAG → response. У 2026 - найгарячіший напрямок, ціни $300-800.

4. SaaS sync (Stripe → CRM → Sheets)

Stripe webhook → IF event.type → HubSpot update + Google Sheets row + Slack notify. Купують агенції, що ведуть багато клієнтів. $150-400.

5. Internal monitoring

Schedule → HTTP Request до API клієнта → IF status != 200 → Telegram alert + create Asana task. Заміна StatusCake/UptimeRobot з custom логікою. $60-150.

Усі п'ять реалізуємо у курсі практично. Розділ 8 - детальний breakdown за цінами і scope.
Джерело: синтез з https://n8n.io/workflows/ (templates marketplace) + practitioner Fiverr scan Перевірено: 2026-05-20
РОЗДІЛ 02 · ≈ 90 ХВ

Sandbox: Docker-стек і перший workflow

Один canonical docker-compose з Postgres - той самий, що піде у production. Запуск, секрети, UI tour, перший Hello-World workflow. Без зайвих кроків "спочатку поставимо неправильно, потім правильно".

2.1

Архітектура sandbox: n8n + Postgres + task runner

Принцип курсу: тренуйся на тому, що поїде на production. Тому з самого початку - три контейнери, а не один. Це той самий стек, що у розділі 7 піде на VPS клієнта.

docker network: sandbox_default n8n image: n8nio/n8n:2.21.5 UI + webhook receive task broker (port 5679) → host: 5678 /home/node/.n8n volume store workflows executions, credentials postgres image: postgres:16 DB: n8n healthcheck pg_isready db_storage volume register runner n8n-runner image: n8nio/runners:2.21.5 executes Code nodes (JS sandbox + Python) isolated from main

Чому така архітектура

Альтернатива "docker run з SQLite в одну команду" існує у документації, але це quick demo, не sandbox. Ми її свідомо пропускаємо - тренуватися треба на тому, що поїде у production.
Джерело: github.com/n8n-io/n8n-hosting · withPostgres Версія: 2.21.5 Перевірено: 2026-05-20
2.2

docker-compose.dev.yml - повний робочий стек

Canonical compose файл. Знаходиться у sandbox/docker-compose.dev.yml. Розглянь кожну секцію - це твоя база для будь-якого подальшого setup.

volumes:
  db_storage:
  n8n_storage:

services:
  postgres:
    image: postgres:16
    restart: always
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_NON_ROOT_USER: ${POSTGRES_NON_ROOT_USER}
      POSTGRES_NON_ROOT_PASSWORD: ${POSTGRES_NON_ROOT_PASSWORD}
    volumes:
      - db_storage:/var/lib/postgresql/data
      - ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 10

  n8n:
    image: docker.n8n.io/n8nio/n8n:${N8N_VERSION}
    restart: always
    environment:
      DB_TYPE: postgresdb
      DB_POSTGRESDB_HOST: postgres
      DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}
      DB_POSTGRESDB_USER: ${POSTGRES_NON_ROOT_USER}
      DB_POSTGRESDB_PASSWORD: ${POSTGRES_NON_ROOT_PASSWORD}
      N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
      N8N_RUNNERS_MODE: external
      N8N_RUNNERS_AUTH_TOKEN: ${RUNNERS_AUTH_TOKEN}
      N8N_RUNNERS_BROKER_LISTEN_ADDRESS: 0.0.0.0
      GENERIC_TIMEZONE: Europe/Kyiv
      TZ: Europe/Kyiv
    ports:
      - "5678:5678"
    volumes:
      - n8n_storage:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy

  n8n-runner:
    image: n8nio/runners:${N8N_VERSION}
    restart: always
    environment:
      N8N_RUNNERS_AUTH_TOKEN: ${RUNNERS_AUTH_TOKEN}
      N8N_RUNNERS_TASK_BROKER_URI: http://n8n:5679
    depends_on:
      - n8n

Що варто помітити

У версії 2.21 N8N_RUNNERS_ENABLED вже видалено: runtime каже "Remove this environment variable; it is no longer needed". У старих туторіалах ще зустрінеш - не копіюй сліпо.
Джерела: n8n-hosting · withPostgres · compose-file/version Версія: n8n 2.21.5 Перевірено: 2026-05-20
2.3

Запуск: .env, secrets, перший старт

Compose читає .env у тій самій директорії. Усі ${VAR} з compose - звідти. Ніколи не комітимо .env у Git.

Крок 1. Створи .env

cd sandbox/
cp .env.example .env

Крок 2. Згенеруй secrets

# N8N_ENCRYPTION_KEY (256-bit hex) - CRITICAL, з ним шифруються credentials
openssl rand -hex 32

# Postgres passwords (~140-bit base64)
openssl rand -base64 24
openssl rand -base64 24

# Runners auth token (128-bit hex) - shared secret n8n ↔ runner
openssl rand -hex 16

Підстав у .env. Файл має виглядати приблизно так:

N8N_VERSION=2.21.5

POSTGRES_USER=postgres
POSTGRES_PASSWORD=Kx7nT4mZ...
POSTGRES_DB=n8n
POSTGRES_NON_ROOT_USER=n8n
POSTGRES_NON_ROOT_PASSWORD=Hq2pY9...

N8N_ENCRYPTION_KEY=4f8a...64-hex-chars
RUNNERS_AUTH_TOKEN=9b2c...32-hex-chars

Крок 3. Захисти .env

chmod 600 .env
ls -la .env
# -rw------- 1 user user ... .env

Крок 4. Запуск

docker compose -f docker-compose.dev.yml up -d

# Очікувані статуси:
docker compose -f docker-compose.dev.yml ps
# postgres   ... Up (healthy)
# n8n        ... Up
# n8n-runner ... Up

Крок 5. Перевір логи + відкрий UI

docker compose -f docker-compose.dev.yml logs --tail=20 n8n
# n8n ready on ::, port 5678
# n8n Task Broker ready on 0.0.0.0, port 5679
# Registered runner "launcher-python" (...)
# Registered runner "launcher-javascript" (...)

# Відкрий браузер:
xdg-open http://localhost:5678

При першому вході - onboarding screen (email + пароль для owner account). Це не SaaS реєстрація, а локальний admin.

Втратиш N8N_ENCRYPTION_KEY з .env = втратиш доступ до credentials у БД назавжди. Backup .env разом з БД-дампом - не окремо.
Джерело: docs.n8n.io/hosting/configuration/configuration-methods Версія: 2.21.5 Перевірено: 2026-05-20
2.4

UI tour: sidebar, canvas, top tabs

Owner account створено - тепер головні зони UI 2.21. Важливо: немає постійного nodes-каталогу зліва. Nodes panel - це popup, що відкривається лише коли додаєш ноду.

GLOBAL NAV 🏠 Overview 💬 Chat 📦 Templates 📊 Insights ❓ Help ⚙ Settings Personal / Projects Personal / My workflow / + Add tag Publish ▾ · ⟳ history · ⋯ Editor Executions Evaluations CANVAS When clicking 'Execute workflow' default trigger (auto-placed) + Add node + + to free spot ⚡ Execute workflow

Що де лежить

Джерело: workflows/create · components/nodes Версія: 2.21.5 Перевірено: 2026-05-20
2.5

Hello world: trigger → Edit Fields

Найшвидший живий workflow. Не треба шукати "Manual Trigger" - він вже на canvas як "When clicking 'Execute workflow'". Просто додаємо одну ноду після нього.

Кроки

  1. Sidebar → "+" біля логотипу n8n зверху → Workflow. (Або з Overview сторінки - Create workflow.)
  2. На canvas вже trigger "When clicking 'Execute workflow'" з сірим + справа - це Add node connector.
  3. Клік по + connector → відкривається nodes panel popup.
  4. У пошуку: edit fields → обери Edit Fields (Set).
  5. У node panel справа: Add Field, Name = message, Value = Hello, n8n!.
  6. Внизу canvas - помаранчева кнопка ⚡ Execute workflow. Натиснути.
У 2.21 "Manual Trigger" в каталозі формально називається "When clicking 'Execute workflow'" - він autoplaced на новому workflow. Не плутай зі старими туторіалами, де додають його вручну.

Що побачиш у output Edit Fields

[
  {
    "message": "Hello, n8n!"
  }
]

JSON array з одним item - { json: { message: "Hello, n8n!" } }. Це базова форма даних n8n - детально на наступному слайді.

Workflow автоматично зберігається (auto-save через 1-5 сек). Кнопки "Save" немає - це новий UI 2.x. Перевір статус "All changes saved" зверху.
Джерела: workflows/create · workflows/components/nodes · workflows/publish Версія: 2.21.5 Перевірено: 2026-05-20
2.6

Data shape: items array, json, binary

Найважливіший слайд курсу. Без розуміння як n8n переміщує дані між нодами - не зможеш дебажити жоден workflow.

Модель даних

Між нодами рухається array of items. Кожен item - об'єкт з двома ключами:

[
  {
    "json": { "id": 1, "email": "a@b.com" },
    "binary": { "file": { "data": "base64...", "mimeType": "image/png" } }
  },
  {
    "json": { "id": 2, "email": "c@d.com" },
    "binary": {}
  }
]

Як ноди обробляють items

ОпціяПоведінка
defaultНода викликається один раз, отримує весь array. Сама вирішує що робити (більшість action-нод викликають API на кожен item).
Execute Once = ON"node executes once, with data from the first item" - решта items ігнорується.
Always Output Data = ON"node returns an empty item even if the node returns no data" - downstream не рветься.
Always Output Data ensures the node returns an empty item even if the node returns no data.
Code node з return [] зупиняє workflow downstream. Якщо хочеш повернути "нічого" але йти далі - return [{ json: {} }] або вмикай Always Output Data.
Джерело: docs.n8n.io/workflows/components/nodes Версія: 2.21.5 Перевірено: 2026-05-20
2.7

Pin data: dev-цикл без зайвих API calls

Будуєш workflow з HTTP Request, який платний (OpenAI, Stripe, Apollo). Кожен Execute Workflow для тестування downstream нод = +$. Pin data це рятує.

Data pinning allows you to temporarily freeze the output data of a node during workflow development. This allows you to develop workflows with predictable data without making repeated requests to external services. Production workflows ignore pinned data and request new data on each execution.

Як pin

  1. Виконав ноду 1 раз → побачив output JSON.
  2. На output panel - іконка кнопки Pin Data (📌).
  3. Тепер ця нода не виконується. Натомість використовується запам'ятований JSON.
  4. Тестуєш downstream необмежено - external API не б'ється.
  5. Готовий до production - Unpin усі ноди.

Коли точно pin

Pin data не діє у production. Тільки у Editor. Published workflow завжди виконує усі ноди з реальними викликами.
Pin data + Manual Trigger = безкоштовний dev-цикл. Workflow auto-зберігається; коли все відточено - натискаєш Publish.
Джерело: docs.n8n.io/glossary Версія: 2.21.5 Перевірено: 2026-05-20
2.8

Save, Publish, побачити executions

Workflow збудовано, тестування пройдено. У 2.x life cycle - auto-save → published. Старого "Active toggle" вже немає.

Auto-save

n8n auto saves your workflow while you're editing. ... Changes save automatically as you edit, typically within 1 to 5 seconds. No manual save button is required. All edits remain in draft until you publish.

Publish (заміняє Active toggle)

Publishing makes your workflow live and locks it to a specific version. Production executions will use this published version, not your latest edits.

Після publish активуються:

Кнопка Publish у верхньому правому куті workflow header. Hotkey Shift + P. У модалі - назва версії і опис. Кожен publish = окрема версія (роли назад через history).

Workflow тільки з Manual Trigger ("When clicking 'Execute workflow'") publish не вимагає - він і так працює тільки через ручний Execute workflow. Publish зарезервовано для trigger-based workflows.

Executions: дебаг-інструмент

An execution is a single run of a workflow.

На кожному запуску бачиш input + output JSON для кожної ноди. Debug surface n8n - structured JSON у браузері, а не logs у файлі.

Усе у executions зберігається у БД. На production - вмикай retention (розділ 6.6), інакше Postgres росте безкінечно.
Джерела: workflows/publish · workflows/executions Версія: 2.21.5 Перевірено: 2026-05-20
РОЗДІЛ 03 · ≈ 130 ХВ

Ядро: ноди, дані, виконання

Топ-20 нод, які зустрінеш у кожному workflow. Expressions без коду. Code node з JS/Python. Error handling. Sticky notes. Credentials.

3.1

Triggers: Manual, Schedule, Webhook

Trigger нода - єдина точка входу у workflow. Три типи, які покривають 90% сценаріїв.

TriggerКолиАктивація
ManualТільки dev/тест. Кнопка Execute у редакторі.Не активується (toggle сірий).
ScheduleCron - daily report, hourly check, weekly cleanup.Publish workflow.
WebhookHTTP endpoint - form submit, third-party webhook (Stripe, GitHub), chat.Test URL у dev, Production URL після Publish.

Schedule Trigger: cron-style + presets

Інтервал (every N minutes/hours/days), Cron expression (стандартний 5-field), або готові presets (every Monday 09:00).

# Cron приклади
0 9 * * 1-5     # 09:00 робочі дні (Mon-Fri)
*/15 * * * *    # кожні 15 хв
0 0 1 * *       # 00:00 першого числа місяця

Webhook Trigger: HTTP endpoint

DELETE, GET, HEAD, PATCH, POST, PUT ... a maximum payload capacity of 16MB.

Деталі - у розділі 4.3-4.5.

Один workflow = один Trigger. Якщо потрібно "по cron І по webhook" - дві окремі trigger-ноди, що зливаються через Merge або викликають shared sub-workflow.
Джерело: docs.n8n.io/integrations/builtin/core-nodes Версія: 2.21.5 Перевірено: 2026-05-20
3.2

Control flow: IF, Switch, Filter, Merge

Чотири ноди, що визначають форму будь-якого нетривіального workflow. Запам'ятай їхні різниці - не плутай.

НодаЩо робитьOutputs
IF"Splits workflow execution based on conditions"2 (true / false)
Switch"Routes data to different paths based on multiple conditions"N (one per rule)
Filter"Removes items that don't match specified criteria"1 (тільки matched)
Merge"Combines data from multiple branches"1 (об'єднано)

Коли який

data IF vip == true true false VIP email Generic email Merge Log to DB
Джерело: docs.n8n.io/integrations/builtin/core-nodes Версія: 2.21.5 Перевірено: 2026-05-20
3.3

Data manipulation: Set, Code, Aggregate, Split Out

Перетворення даних між нодами. У 80% випадків можна без Code - через декларативні ноди.

НодаПризначенняЯк обрати
Set / Edit Fields "Modifies or creates fields in your data" Перевикористовуй майже завжди. Підтримує rename, додавання, видалення fields.
Aggregate "Groups and combines data" 10 items → 1 item з array всередині. items.map(x => x.email) без коду.
Split Out "Separates array items into individual items" Зворотне Aggregate. 1 item з array → N items. Для batch processing.
Code JavaScript або Python для custom логіки Тільки коли declarative ноди не покривають. Розділ 3.6.
Rename Keys "Changes field names in objects" user_nameuserName. API-shape adaptation.
Remove Duplicates "Eliminates repeated entries" Дедуплікація по полю. SELECT DISTINCT без БД.
Sort "Orders items by specified fields" Order by field, ASC/DESC.
Limit "Restricts the number of items processed" Top-N. Дешевий захист від batch що пішов не туди.
Послідовність HTTP Request → Set → Aggregate → Set → HTTP Request - типовий патерн API-to-API трансформації. Code тут не потрібен.
Джерело: docs.n8n.io/integrations/builtin/core-nodes Версія: 2.21.5 Перевірено: 2026-05-20
3.4

Expressions: dynamic values без Code

Будь-яке поле параметрів ноди можна заповнити динамічно - значенням з попередніх нод, з $vars, з $now тощо. Без Code ноди.

In n8n, expressions allow you to populate node parameters dynamically by executing JavaScript code. Instead of providing a static value, you can use the n8n expression syntax to define the value using data from previous nodes, other workflows, or your n8n environment.

Синтаксис (сучасний)

// поточний item
{{ $json.email }}                          // поле з json поточного item
{{ $binary }}                              // binary даних поточного item

// доступ до даних іншої ноди - синтаксис $()
{{ $("HTTP Request").item.json.id }}       // linked item (data item linking)
{{ $("HTTP Request").first().json.id }}    // перший item на виході ноди
{{ $("HTTP Request").last().json.id }}     // останній item
{{ $("HTTP Request").all() }}              // усі items (array)

// helpers
{{ $now }}                                 // DateTime now (Luxon)
{{ $today }}                               // дата сьогодні
{{ $now.toFormat("yyyy-MM-dd") }}          // formatted
{{ $workflow.id }}, {{ $workflow.name }}
{{ $execution.id }}, {{ $execution.mode }} // "test" або "production"
{{ $itemIndex }}                           // індекс поточного item
{{ $vars.MY_VAR }}                         // custom variable

// conditional helpers
{{ $if($json.amount > 100, "VIP", "regular") }}
{{ $ifEmpty($json.email, "no-email@example.com") }}

// рядки
{{ "Hello, " + $json.firstName + "!" }}
{{ $json.email.toLowerCase() }}

Як перейти у expression mode

Застарілий синтаксис $node["NodeName"] ще працює як legacy, але офіційні docs і всі приклади використовують сучасний $("NodeName"). Пиши новий код через $().
Джерела: glossary · expression · expression-reference Версія: 2.21.5 Перевірено: 2026-05-20
3.5

Variables: $vars, $env, scopes

Замість захардкоджених значень (API URLs, ID-шок, threshold-ів) - variables. Зміниш одне місце - застосовується скрізь.

Синтаксис

You can access variables in the Code node and in expressions.

Доступ: $vars.<variable-name>.

Дві области (scopes)

ScopeДоступКоли
Global"available to everyone on your n8n instance, across all projects"Глобальні toggles, instance-wide endpoint URL.
Project-scoped"available only within the specific project they're created in"Per-customer config, dev/prod різні значення.
Project-scoped variables override global variables with the same key within their project.

Обмеження

Для динамічних значень (counter між запусками, last_processed_id) - використовуй Workflow static data, не variables.
Джерело: docs.n8n.io/code/variables Версія: 2.21.5 Перевірено: 2026-05-20
3.6

Code node: JavaScript vs Python, modes

Коли declarative ноди не покривають - Code. Дві мови. Два режими виконання. Завжди return array of items.

Мови

Режими виконання

ModeВикликКоли
Run Once for All Items1 виклик функції на весь arrayAggregation, group-by, реверс array
Run Once for Each ItemN викликів (по 1 на item)Per-item transformation, API auth headers

JS приклад: Run Once for All Items

// $input.all() - array of items {json, binary}
const items = $input.all();

const grouped = {};
for (const item of items) {
  const key = item.json.country;
  if (!grouped[key]) grouped[key] = 0;
  grouped[key]++;
}

// Return: array of items
return Object.entries(grouped).map(([country, count]) => ({
  json: { country, count }
}));

JS приклад: Run Once for Each Item

// $input.item.json - поточний item
return {
  json: {
    ...$input.item.json,
    email_lower: $input.item.json.email.toLowerCase(),
    processed_at: new Date().toISOString()
  }
};
Return обов'язково array of { json: {...} } (для All Items) або одне { json: {...} } (для Each Item). Інакше "expected an array of objects" і workflow падає.
Джерело: docs.n8n.io/code/code-node Версія: 2.21.5 Перевірено: 2026-05-20
3.7

Error handling: continue on fail, retry, error workflow

Три рівні error handling. Йде від локального (per-node) до глобального (per-workflow).

Рівень 1: per-node

На вкладці Settings кожної ноди:

Рівень 2: retry per-node

When an execution fails, the node reruns until it succeeds.

Параметри: Max Tries (3-5), Wait Between Tries (ms або з jitter).

Рівень 3: Error Workflow

For each workflow, you can set an error workflow in Workflow Settings. It runs if an execution fails.

Створи окремий workflow з Error Trigger нодою → Slack/Telegram alert з execution.id, error message, link до executions. Підв'яжи його у Settings основного workflow.

Stop And Error: штучний fail

"Add the Stop And Error node to your workflow to force executions to fail under your chosen circumstances, and trigger the error workflow". Корисно після IF на бізнес-валідацію.

Для production обов'язково: окремий error workflow з повідомленням у Slack. Без цього ти про падіння дізнаєшся з претензії клієнта.
Джерело: docs.n8n.io/flow-logic/error-handling Версія: 2.21.5 Перевірено: 2026-05-20
3.8

Executions: manual vs production

Кожне виконання workflow зберігається у БД як execution. Розрізняй два типи.

ТипЯк запускаєтьсяQuotaЗбереження
ManualКнопка Execute Workflow у редакторі"don't consume quota limits" (cloud)Тільки якщо налаштовано EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=true
ProductionTrigger (Webhook, Schedule, ...)"Only production executions count towards this quota"Default - усі збережено

Що бачиш у Executions tab

Опції збереження (env vars, розділ 6.6)

EXECUTIONS_DATA_SAVE_ON_ERROR=all     # all | none
EXECUTIONS_DATA_SAVE_ON_SUCCESS=all
EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=true
EXECUTIONS_DATA_PRUNE=true             # auto-cleanup
EXECUTIONS_DATA_MAX_AGE=336            # hours (14 днів)
Без EXECUTIONS_DATA_PRUNE=true Postgres росте швидко - 10K executions × 50KB кожне = 500MB за тиждень при moderate traffic.
Джерело: docs.n8n.io/workflows/executions Версія: 2.21.5 Перевірено: 2026-05-20
3.9

Sticky notes для самодокументації

Workflow без коментарів - як код без коментарів через рік. Sticky notes - єдиний механізм документації в canvas.

Sticky Notes allow you to annotate and comment on your workflows.

Як створити

Палітра

Embed media

## Workflow purpose
This handles Stripe webhooks and creates HubSpot contacts.

**Trigger:** `POST https://n8n.client.com/webhook/stripe`
**Auth:** Header `Stripe-Signature`
**SLA:** retry x3 then alert in #ops

![architecture](https://example.com/diagram.png#full-width)

@[youtube](dQw4w9WgXcQ)
"Recommends using sticky notes 'heavily' to document workflow logic for other users". Особливо для клієнтського workflow - він має повторити твою думку без тебе.

Що писати у sticky

Джерело: docs.n8n.io/workflows/components/sticky-notes Версія: 2.21.5 Перевірено: 2026-05-20
3.10

Credentials: шифрування і encryption key

API keys, OAuth tokens, паролі - зберігаються у БД n8n зашифрованими. Розуміння цього критично для production.

In n8n, credentials store authentication information to connect with specific apps and services. After creating credentials with your authentication information (username and password, API key, OAuth secrets, etc.), you can use the associated app node to interact with the service.

Як працює шифрування

Згенерувати ключ

openssl rand -hex 32
# приклад виводу:
# 9f2a8b7c4d3e1f5a6b9c8d7e4f3a2b1c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a

Encryption key rotation

Enable encryption key rotation to periodically replace the key that encrypts credentials and other sensitive data.

Best practice для prod: ротація раз на 6-12 місяців. n8n підтримує процес з old + new key одночасно.

Загубив N8N_ENCRYPTION_KEY = усі credentials у БД безповоротно втрачені. Backup .env файлу разом з БД-дампом, не окремо.

OAuth, API key, Basic auth, Header auth

Кожен тип ноди визначає, які типи credentials приймає. Один тип credentials можна reuse у багатьох нодах одного класу (наприклад, одна OpenAI credential на 10 OpenAI Chat Model нод).

Джерело: docs.n8n.io/hosting/securing Версія: 2.21.5 Перевірено: 2026-05-20
РОЗДІЛ 04 · ≈ 90 ХВ

Інтеграції: HTTP, webhooks, API

HTTP Request - вхід у будь-який API. Webhook - інші викликають твій workflow. n8n REST API - програмний контроль самого n8n.

4.1

HTTP Request: 7 видів auth, 5 типів body

Універсальна нода для будь-якого HTTP API. Коли немає dedicated action node - HTTP Request покриє все.

7 типів auth (generic credentials)

Predefined credentials: Credentials for integrations supported by n8n, including both built-in and community nodes.

Тобто крім generic - можеш re-use credentials з action-нод (напр. зберіг OpenAI auth - HTTP Request бачить її як option).

5 типів body

Body TypeContent-TypeКоли
Form URLencodedapplication/x-www-form-urlencodedСтарі форми, OAuth2 token endpoint
Form-Datamultipart/form-dataFile uploads
JSONapplication/jsonDefault для сучасних REST API
n8n Binary Fileзалежить від binary"sends the contents of a file stored in n8n as the body"
Rawcustom (user-specified)XML, plain text, custom MIME
JSON body + Header auth + OAuth2 = 95% твоїх API integrations. Інше залишай на edge cases.
Джерело: docs.n8n.io/integrations/builtin/core-nodes/httprequest Версія: 2.21.5 Перевірено: 2026-05-20
4.2

HTTP Request: pagination і batching

API повертає 5000 items по 50 за сторінку, з rate limit 10 req/sec. HTTP Request має дві опції, що це покривають - без Code.

Pagination - збирання усіх сторінок

ModeЯк працюєПриклад
Update a Parameter "Use this when you need to dynamically set parameters for each request" ?offset=0, ?offset=50, ?offset=100...
Response Contains Next URL "Use this when the API response includes the URL of the next page" GitHub Link: <...>; rel="next" header або data.next_page_url

Опції для Update a Parameter

Pagination Mode: Update a Parameter
  Type: Query
  Name: offset
  Value: ={{ $pageCount * 50 }}
Stop Condition: ={{ $response.body.items.length === 0 }}
Max Requests: 100

Batching - rate limit friendly

Якщо HTTP Request стоїть після ноди з 1000 items - він шле 1000 запитів. Без батчінгу - bombing API.

Приклад: 1000 items, Items per Batch = 5, Interval = 1000ms → 200 batches × 1s = ~3.3 хв.

Batching не з рандомним jitter - усі batch стартують точно через interval. Якщо API має burst-limit "10/sec sustained" - підбирай Interval так, щоб (items/batch ÷ interval_sec) ≤ liмit.
Джерело: docs.n8n.io/integrations/builtin/core-nodes/httprequest Версія: 2.21.5 Перевірено: 2026-05-20
4.3

Webhook як endpoint

HTTP Request - n8n кличе зовнішній світ. Webhook - зовнішній світ кличе n8n. Триггер з власним URL.

Два URL: test і production

HTTP methods

DELETE, GET, HEAD, PATCH, POST, PUT - standard request types, with a maximum payload capacity of 16MB.

Path і route params

"Manually specify a URL path, including adding route parameters" - формати /:variable або /:variable1/path/:variable2.

Приклади:

/webhook/stripe                    # фіксований path
/webhook/orders/:id                # /webhook/orders/42 → $json.params.id = 42
/webhook/users/:userId/posts/:postId

Authentication

Production URL після Publish буде типу https://n8n.example.com/webhook/<random-id>. Цей URL - secret. Не публікуй його (тільки клієнту через secure channel). Будь-хто з URL може call workflow.
Джерело: docs.n8n.io/integrations/builtin/core-nodes/webhook Версія: 2.21.5 Перевірено: 2026-05-20
4.4

Response modes

Що отримає викликаючий клієнт назад? Чотири опції.

ModeЩо повертаєтьсяКоли
Immediately "the response code and the message Workflow got started" Fire-and-forget - довгий workflow не блокує клієнта
When Last Node Finishes "the response code and the data output from the last node" Sync-style - клієнт чекає результат, як звичайний API
Using 'Respond to Webhook' Node "as defined in the Respond to Webhook node" Повний контроль - status code, headers, body окремо
Streaming response "real-time data streaming back to the user as the workflow processes" LLM streaming - токени letery letery як приходять

Respond to Webhook - "API endpoint" pattern

Найгнучкіша опція. Запам'ятай:

  1. Webhook trigger → Response Mode: Using 'Respond to Webhook' Node.
  2. У workflow робиш бізнес-логіку (validate, call API, save до DB).
  3. В кінці - нода Respond to Webhook з кастомним body + status + headers.
// Respond to Webhook node:
// Status: 200
// Headers: { "Content-Type": "application/json", "X-Request-ID": "{{ $execution.id }}" }
// Body: { "success": true, "user_id": "{{ $json.user_id }}" }
Immediately = webhook як fire-and-forget queue (Slack accepts 3-second SLA). When Last Node = API endpoint (REST-style). Respond to Webhook node = повний контроль (errors, custom status). Streaming = тільки для LLM.
Джерело: docs.n8n.io/integrations/builtin/core-nodes/webhook Версія: 2.21.5 Перевірено: 2026-05-20
4.5

Response data options + CORS, IP whitelist

Дрібніші, але важливі настройки Webhook node.

Response data: що саме повертати

CORS - для frontend integrations

Webhook node має inline опції для CORS - не потрібен окремий reverse proxy hack.

Options:
  Allow Origins: ["https://app.example.com", "https://admin.example.com"]
  Allowed Headers: ["Content-Type", "X-Custom"]

IP whitelisting

Опція IP(s) Whitelist. Якщо webhook кличе тільки відомий сервіс (Stripe, GitHub) - впиши їхні CIDR. Інші IP → 403.

IP Whitelist: 192.0.2.0/24, 198.51.100.0/24

Інші опції

CORS і IP whitelist у самій ноді - зручно, але не замінює reverse proxy на проді. Traefik або Caddy додатково ставлять глобальні security headers (розділ 7.3).
Джерело: docs.n8n.io/integrations/builtin/core-nodes/webhook Версія: 2.21.5 Перевірено: 2026-05-20
4.6

n8n public REST API

n8n сам - API. Можеш керувати workflows, executions, credentials програмно. Корисно для CI/CD, DevOps automation, embed-management.

Using n8n's public API, you can programmatically perform many of the same tasks as you can in the GUI.
The n8n API isn't available during the free trial. Please upgrade to access this feature.

Доступ

Endpoints (вибірка)

# Auth header: X-N8N-API-KEY: <your-api-key>

# Workflows
GET    /api/v1/workflows                    # list
GET    /api/v1/workflows/:id                # single
POST   /api/v1/workflows                    # create
PUT    /api/v1/workflows/:id                # update
POST   /api/v1/workflows/:id/activate
POST   /api/v1/workflows/:id/deactivate
DELETE /api/v1/workflows/:id

# Executions
GET    /api/v1/executions?workflowId=42
DELETE /api/v1/executions/:id

# Credentials (тільки create і delete)
POST   /api/v1/credentials
DELETE /api/v1/credentials/:id

# Users (Enterprise)
GET    /api/v1/users
POST   /api/v1/users

OpenAPI playground

На self-hosted instance: http://localhost:5678/api/v1/docs/ - інтерактивний Swagger UI. Try it out без curl.

CI/CD use case: build pipeline → POST /workflows для deploy workflow → activate → smoke test. Без UI.
Джерело: docs.n8n.io/api Версія: 2.21.5 Перевірено: 2026-05-20
4.7

Real case: Stripe webhook → Slack notify

Зібрали всі шматки разом. Це портфолієфайл, який реально продається на Fiverr за $80-150.

Workflow

Webhook POST /stripe Verify signature Code: HMAC SHA256 vs Stripe-Signature Switch event.type checkout.* Slack: 💰 sale refunded Slack: ⚠ refund failed Slack: 🚨 fail 200 OK

Ключові деталі

Джерело: синтез з 4.1-4.5 + Stripe webhook docs (stripe.com/docs/webhooks/signatures) Перевірено: 2026-05-20
РОЗДІЛ 05 · ≈ 90 ХВ

AI workflows: agents, memory, RAG

LLM vs AI Agent. Cluster nodes. Chat Trigger + OpenAI. Memory persistence. Tools як workflows. Vector DB і RAG. Реальний кейс - AI email triage.

5.1

LLM vs AI Agent: різниця

"AI" у n8n - це не один тип ноди. Розрізняй LLM call (один shot - prompt → completion) і AI Agent (loop з tools).

An AI agent builds on Large Language Models (LLMs). ... AI agents add goal-oriented functionality. They can use tools, act on their outputs, complete tasks and solve problems.

Порівняння

LLM (OpenAI Chat node)AI Agent (cluster)
Patternprompt → responseprompt → reasoning → tool call → result → reasoning → ... → response
Toolsнемаєтак - HTTP, workflows, custom
Memorystatelesspersistent через Memory sub-node
Use casesummarization, classification, generationchatbot з actions, autonomous research, RAG QA
Ціна за виклик1 LLM API call3-15 LLM API calls (loop)
By incorporating the AI agent as a node, n8n can combine AI-driven steps with traditional programming for efficient, real-world workflows.
Для класифікації пошти - досить OpenAI Chat node з prompt "categorize this as billing/support/spam". Для chatbot, який робить щось (creates Jira ticket, looks up order) - потрібен AI Agent.
Джерело: docs.n8n.io/advanced-ai/intro-tutorial Версія: 2.21.5 Перевірено: 2026-05-20
5.2

Cluster nodes: root + sub-nodes

AI Agent на canvas - не одна нода. Це cluster: одна root node (AI Agent) + кілька sub-nodes, які підключаються знизу.

Chat Trigger user message ROOT NODE AI Agent reason · tool call · loop until done → respond Chat Model OpenAI gpt-4 Memory Simple / PG Tools HTTP, workflow sub-nodes: connected from BELOW Respond to chat

Sub-node типи

Джерело: docs.n8n.io/integrations/builtin/cluster-nodes Версія: 2.21.5 Перевірено: 2026-05-20
5.3

Chat Trigger + AI Agent + OpenAI

Найшвидший AI workflow за 5 хвилин. Готовий chatbot, доступний на вбудованому n8n UI.

Кроки

  1. Add Chat Trigger (вбудоване chat UI - відкривається у tab окремо).
  2. Add AI Agent після Chat Trigger.
  3. Connect AI Agent's Chat Model port → Add OpenAI Chat Model sub-node. Вибери credential (OpenAI API key), model = gpt-4o-mini.
  4. У AI Agent параметрах: System Message - твоя instruction.
  5. Save → відкрий Chat tab → пиши.

System message приклад

You are a brilliant poet who always replies in rhyming couplets.

n8n показує цю цитату як приклад - бачиш, що system message це звичайний LLM prompt у "ти - роль" форматі.

Practical system message

Ти - помічник підтримки інтернет-магазину "Acme".
Завжди ввічливий, відповідаєш українською.
Якщо клієнт питає про статус замовлення - запитай номер.
Якщо проблема серйозна (повернення, скарга) - відповідай
"Передаю запит менеджеру" і не вигадуй деталей.
Не обіцяй того, що не підтверджено інформацією.

Models порівняння (2026)

Джерело: docs.n8n.io/advanced-ai/intro-tutorial Версія: 2.21.5 Перевірено: 2026-05-20
5.4

Memory: Simple Memory і Postgres

Без memory agent забуває все між повідомленнями. Перший слайд має це і запам'ятай.

In order to remember what has happened in the conversation, the AI Agent needs to preserve context. We can do this by adding memory to the AI Agent node.

Не додав Memory sub-node → кожен запит у Chat Trigger - tabula rasa для agent. "Як мене звати?" "Не знаю."

Simple Memory (default)

In an AI context, memory allows AI tools to persist message context across interactions. This allows you to have a continuing conversations with AI agents, for example, without submitting ongoing context with each message. In n8n, AI agent nodes can use memory, but AI chains can't.

Postgres Memory (для production)

Redis Memory

Context Window занадто великий = LLM token cost росте лінійно по довжині розмови. 20 повідомлень × 200 слів × 4 char = ~16K tokens на запит. Тримай розумним.
Memory не enforce row-level security. Якщо session key передбачуваний (1, 2, 3...) - користувач A може дістатись до сесії B. Використовуй UUID або hash(user_id).
Джерело: docs.n8n.io/advanced-ai/intro-tutorial Версія: 2.21.5 Перевірено: 2026-05-20
5.5

Tools: n8n workflows як AI tools

Tool - це функція, яку AI Agent може сам вирішити викликати, коли йому це потрібно для відповіді. В n8n tool може бути сам workflow.

Типи tools

$fromAI() - schema для parameters

The $fromAI() function uses AI to dynamically fill in parameters for tools connected to the Tools AI agent.

Спеціальний експрешн у параметрі tool-ноди, який каже LLM "цей параметр ти заповнюєш сам, ось схема":

// Сигнатура: $fromAI(key, description?, type?, defaultValue?)
// key (string, обов'язково, 1-64 chars, [A-Za-z0-9_-])
// type ∈ {string, number, boolean, json}

// мінімум - тільки key
{{ $fromAI("order_id") }}

// з описом і типом
$fromAI("name", "The commenter's name", "string", "Jane Doe")
$fromAI("numItemsInStock", "Number of items in stock", "number", 5)

// embedded у рядку
Generated by AI: {{ $fromAI("subject") }}

LLM при вирішенні викликати tool сам зрозуміє, що передати у order_id з контексту розмови. Опис допомагає LLM правильно екстрагувати значення.

Practical приклад

AI chatbot для e-commerce клієнта:

Користувач пише "де моя посилка #12345?" → agent сам вирішує викликати Tool 1 з order_id=12345 → бачить status → формує відповідь.

5 tools - sweet spot. 10+ tools = LLM плутається ("which tool now?") і дає погані відповіді. Розбивай на multiple specialized agents або фільтруй tools по контексту.
Джерело: docs.n8n.io/advanced-ai/examples Версія: 2.21.5 Перевірено: 2026-05-20
5.6

Vector DB + RAG: introduction

RAG (Retrieval-Augmented Generation) - patternw, де LLM відповідає на питання спираючись на твою документацію. Без RAG LLM знає тільки те, на чому тренувався.

Vector databases in AI, along with related concepts including embeddings and retrievers.

Як працює RAG (упрощено)

  1. Indexing (раз): doc → split на chunks → embed (vector) → save у vector DB.
  2. Retrieval (per query): user question → embed → similarity search у vector DB → top-K chunks.
  3. Generation: LLM отримує question + top-K chunks як context → пише відповідь.
INDEX (one-time) Documents Embeddings Vector DB QUERY (per request) Question Retriever similarity search top-K chunks LLM (gpt-4o) prompt: question + top-K chunks as context → grounded answer with citations

n8n cluster для RAG

Vector databases in AI ... examples ... populating vector databases from websites.
Для документації клієнта 100-500 сторінок - pgvector у тому ж Postgres, де n8n. Не потрібен окремий сервіс.
Джерело: docs.n8n.io/advanced-ai/examples Версія: 2.21.5 Перевірено: 2026-05-20
5.7

Real case: AI email triage

Premium-gig сценарій ($400-800 на Fiverr). Гібрид LLM + Agent з memory + tools.

Архітектура

Gmail Trigger new email AI Agent classify + extract OpenAI PG Memory Sheets Tool Switch category Label: support Label: billing Spam → Trash Asana: task cluster: Memory tied to threadId, Sheets Tool reads customer table

Деталі реалізації

Scope для Fiverr: 1 inbox + 4-5 категорій + 1 lookup table + 1 ticket system = ~12 годин роботи = $500-700 за свою працю. Premium gig.
Джерело: синтез з 5.1-5.6 + Gmail Trigger node docs Перевірено: 2026-05-20
РОЗДІЛ 06 · ≈ 120 ХВ

Production: queue mode, моніторинг, безпека

Single instance vs queue mode (main + worker). Encryption key. Retention. Metrics. 2FA. Source control. Все, що відрізняє "поставив локально" від "клієнт платить $500/міс".

6.1

Single instance vs queue mode

Дві архітектури - вибір залежить від навантаження.

Single instance

Queue mode

When running in queue mode, you have multiple n8n instances set up, with one main instance receiving workflow information (such as triggers) and the worker instances performing the executions.

Коли переходити на queue

СигналЧому single не вистачає
≥100 executions/minSingle instance throughput-обмежений
Workflow тривалістю > 30 секБлокує паралельні webhook-и
Webhook SLA < 2 сек (Stripe 3 sec)Heavy execution розриває SLA
Multiple instances для HASingle = SPOF
Не починай з queue mode. Single instance + Postgres покриває 80% Fiverr клієнтів. Переходь коли реальні метрики кажуть.
Джерело: docs.n8n.io/hosting/scaling/queue-mode Версія: 2.21.5 Перевірено: 2026-05-20
6.2

Queue mode setup: env vars

Конфігурація queue mode - набір env vars, спільних для main і workers. N8N_ENCRYPTION_KEY мусить бути identical у всіх інстансах.

Core env vars

# Включити queue mode
export EXECUTIONS_MODE=queue

# Encryption key (CRITICAL: однаковий на main + workers + runners)
export N8N_ENCRYPTION_KEY=<hex-32>

# Redis для job queue
export QUEUE_BULL_REDIS_HOST=redis
export QUEUE_BULL_REDIS_PORT=6379
export QUEUE_BULL_REDIS_USERNAME=
export QUEUE_BULL_REDIS_PASSWORD=
export QUEUE_BULL_REDIS_DB=0
export QUEUE_BULL_REDIS_TIMEOUT_THRESHOLD=10000

# Webhook URL (публічний, що бачить світ)
export WEBHOOK_URL=https://n8n.example.com/

Worker settings

# Lease duration (worker тримає job)
export QUEUE_WORKER_LOCK_DURATION=60000
export QUEUE_WORKER_LOCK_RENEW_TIME=10000

# Stalled job detection
export QUEUE_WORKER_STALLED_INTERVAL=30000
export QUEUE_WORKER_MAX_STALLED_COUNT=1

# Offload manual executions to workers
export OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true

Health checks

export QUEUE_HEALTH_CHECK_ACTIVE=true
export QUEUE_HEALTH_CHECK_PORT=5678
export N8N_ENDPOINT_HEALTH=/healthz

Multi-main (HA)

# Тільки з Enterprise license
export N8N_MULTI_MAIN_SETUP_ENABLED=true
export N8N_MULTI_MAIN_SETUP_KEY_TTL=10
export N8N_MULTI_MAIN_SETUP_CHECK_INTERVAL=3
Multi-main HA (за допомогою N8N_MULTI_MAIN_SETUP_ENABLED=true) - тільки на Enterprise license.
N8N_ENCRYPTION_KEY різний на main і worker → credentials decrypted only on one of них → workflows падають з cryptic errors. Перевір first thing при дебагу queue mode.
Джерело: docs.n8n.io/hosting/scaling/queue-mode Версія: 2.21.5 Перевірено: 2026-05-20
6.3

Worker і webhook processor

Окрема команда запускає n8n у worker mode. Один docker image - різні аргументи запуску.

Worker

# У docker:
docker run --name n8n-worker \
  -e EXECUTIONS_MODE=queue \
  -e N8N_ENCRYPTION_KEY=... \
  -e QUEUE_BULL_REDIS_HOST=redis \
  docker.n8n.io/n8nio/n8n worker

Або через npm:

./packages/cli/bin/n8n worker
n8n worker --concurrency=5

Concurrency tuning

Webhook processor (опційно)

Якщо webhook traffic дуже високий і ти не хочеш, щоб він боровся за CPU з main UI - окремий процес тільки для webhooks:

docker run --name n8n-webhooks \
  -p 5679:5678 \
  -e "EXECUTIONS_MODE=queue" \
  -e N8N_DISABLE_PRODUCTION_MAIN_PROCESS=true \
  docker.n8n.io/n8nio/n8n webhook

Цей процес тільки приймає webhooks → кладе у Redis. Workers потім беруть.

Більшість Fiverr setup-ів не потребують окремий webhook processor. Main + 2-3 workers + Redis - достатньо для 1K executions/hour.
Scaling рецепт: 1 main + N workers, де N = peak_executions_per_minute ÷ (60 ÷ avg_workflow_duration_seconds). Round up + 1 для headroom.
Джерело: docs.n8n.io/hosting/scaling/queue-mode Версія: 2.21.5 Перевірено: 2026-05-20
6.4

docker-compose queue mode (full setup)

Готовий compose з main + worker + runners + redis + postgres. Скопіюй з sandbox/, працює з коробки.

volumes:
  db_storage:
  n8n_storage:
  redis_storage:

x-shared: &shared
  image: docker.n8n.io/n8nio/n8n:2.21.5
  restart: always
  environment:
    DB_TYPE: postgresdb
    DB_POSTGRESDB_HOST: postgres
    EXECUTIONS_MODE: queue
    QUEUE_BULL_REDIS_HOST: redis
    QUEUE_HEALTH_CHECK_ACTIVE: "true"
    N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
    N8N_RUNNERS_MODE: external
    N8N_RUNNERS_AUTH_TOKEN: ${RUNNERS_AUTH_TOKEN}
    N8N_RUNNERS_BROKER_LISTEN_ADDRESS: 0.0.0.0
    WEBHOOK_URL: ${WEBHOOK_URL}
    EXECUTIONS_DATA_PRUNE: "true"
    EXECUTIONS_DATA_MAX_AGE: 336
    N8N_METRICS: "true"
  volumes:
    - n8n_storage:/home/node/.n8n
  depends_on:
    redis: { condition: service_healthy }
    postgres: { condition: service_healthy }

services:
  postgres:
    image: postgres:16
    # env + healthcheck див. sandbox/docker-compose.queue.yml
  redis:
    image: redis:7-alpine
    volumes: [redis_storage:/data]
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
  n8n:
    <<: *shared
    ports: ["5678:5678"]
  n8n-worker:
    <<: *shared
    command: worker --concurrency=5
  n8n-runner:
    image: n8nio/runners:2.21.5
    environment:
      N8N_RUNNERS_AUTH_TOKEN: ${RUNNERS_AUTH_TOKEN}
      N8N_RUNNERS_TASK_BROKER_URI: http://n8n:5679

Scale worker-ів

docker compose -f docker-compose.queue.yml up -d --scale n8n-worker=3
YAML anchor x-shared: &shared + <<: *shared - DRY-prince для env vars. Без нього доведеться повторювати 15+ env vars двічі. У sandbox/docker-compose.queue.yml повна робоча версія.
Джерело: github.com/n8n-io/n8n-hosting Версія: 2.21.5 Перевірено: 2026-05-20
6.5

Encryption key і backups

Втрата encryption key = втрата усіх credentials (API keys, OAuth tokens) у БД. Це найкритичніший backup item.

Що бекапити

  1. Postgres dump - workflows, executions, credentials (encrypted).
  2. n8n_storage volume - .n8n/config файл + custom nodes.
  3. .env файл - N8N_ENCRYPTION_KEY, паролі, OAuth secrets.

Backup script (daily cron)

#!/bin/bash
set -euo pipefail
BACKUP_DIR=/srv/backups/n8n
DATE=$(date +%F)
mkdir -p "$BACKUP_DIR"

# 1. Postgres dump
docker compose exec -T postgres pg_dump -U n8n -d n8n \
  | gzip > "$BACKUP_DIR/db-$DATE.sql.gz"

# 2. n8n volume tarball (config + custom nodes)
docker run --rm \
  -v sandbox_n8n_storage:/source:ro \
  -v "$BACKUP_DIR":/backup \
  alpine tar czf "/backup/n8n-vol-$DATE.tgz" -C /source .

# 3. .env (encryption key!)
cp /opt/n8n/.env "$BACKUP_DIR/env-$DATE.bak"

# 4. Off-site (rclone до S3/B2/...)
rclone copy "$BACKUP_DIR" remote:n8n-backups/

# 5. Видалити локально все старше 30 днів
find "$BACKUP_DIR" -type f -mtime +30 -delete

Encryption key rotation

Enable encryption key rotation to periodically replace the key that encrypts credentials and other sensitive data.

На production - раз на 6-12 місяців. n8n підтримує процес із N8N_ENCRYPTION_KEY_PREVIOUS - старий ключ ще валідний поки credentials не re-encrypted з новим.

Backup без encryption key безкорисний. Тестуй restore хоча б раз - заведи fresh container з backup + .env, перевір що workflows запускаються.
Джерело: docs.n8n.io/hosting/securing Версія: 2.21.5 Перевірено: 2026-05-20
6.6

Execution data retention

n8n зберігає повний JSON input/output на кожній ноді для кожного execution. Без retention - Postgres росте на гігабайти за тижні.

Env vars для prune

# Включити auto-cleanup
EXECUTIONS_DATA_PRUNE=true

# Скільки тримати (години)
EXECUTIONS_DATA_MAX_AGE=336      # 14 днів

# Або скільки штук max
EXECUTIONS_DATA_PRUNE_MAX_COUNT=10000

# Що зберігати взагалі
EXECUTIONS_DATA_SAVE_ON_ERROR=all       # all | none
EXECUTIONS_DATA_SAVE_ON_SUCCESS=all     # all | none
EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false  # dev runs не зберігаємо

Compromise: ОЩАДЛИВЕ vs ДЕТАЛЬНЕ

ПрофільSAVE_ON_SUCCESSMAX_AGEДисковий слід
Defaultall336h (14 д)Великий
Ощадливоnone168h10× менше - тільки errors зберігаємо
Audit-heavyall2160h (90 д)5× більше - для compliance
Для Fiverr клієнтів - "Ощадливо" профіль. Errors зберігаємо завжди (debug), success - 7 днів і автоматично прунимо. Постгрес залишається легким.

Manual cleanup (одноразовий)

-- Видалити executions старше 30 днів
DELETE FROM execution_entity
WHERE finished < NOW() - INTERVAL '30 days';

-- Перевірити розмір таблиці
SELECT pg_size_pretty(pg_total_relation_size('execution_entity'));
Не запускай DELETE на production без транзакції і LIMIT. Великий delete може блокувати n8n на хвилини.
Джерело: docs.n8n.io/hosting/configuration/environment-variables Версія: 2.21.5 Перевірено: 2026-05-20
6.7

Health checks + Prometheus metrics

Без моніторингу - не знаєш, що workflow впав, або n8n уже годину не відповідає на webhooks.

Health endpoints

# Включити
QUEUE_HEALTH_CHECK_ACTIVE=true
QUEUE_HEALTH_CHECK_PORT=5678
N8N_ENDPOINT_HEALTH=/healthz

Викликаєш GET /healthz → 200 якщо все ок, 503 якщо БД/Redis недоступні.

Prometheus metrics

N8N_METRICS=true                  # default false
N8N_METRICS_PREFIX=n8n_            # опціонально
N8N_METRICS_INCLUDE_DEFAULT_METRICS=true
N8N_METRICS_INCLUDE_WORKFLOW_ID_LABEL=false  # не вмикай - cardinality bомба
N8N_METRICS_INCLUDE_NODE_TYPE_LABEL=true

Endpoint: GET /metrics у Prometheus format.

Які метрики корисні

Простий external monitor

UptimeRobot, BetterStack, або self-hosted Uptime Kuma - HTTP check кожні 60 сек:

Для Fiverr клієнта без власної observability - запропонуй monthly maintenance, який включає Uptime Kuma на сусідньому VPS і monthly report. $30-50/міс passive income.
Джерело: docs.n8n.io/hosting/scaling/queue-mode Версія: 2.21.5 Перевірено: 2026-05-20
6.8

Безпека: 2FA, redact, block nodes

Шість шарів безпеки. Кожен закриває окремий клас атак.

1. 2FA для UI users

Use two-factor authentication (2FA) for your users.

Settings → Users → enforce 2FA для admin. Без цього компроментація пароля = повний доступ до workflows + credentials.

2. Redact execution data

Redact execution data to hide input and output data from workflow executions.

Для workflows з PII (паспортні дані, credit cards) - вмикай. Метадані (status, duration, node names) залишаються; payload приховано.

3. Block dangerous nodes

NODES_INCLUDE або NODES_EXCLUDE env vars. Найчастіше блокують:

# Не давати клієнту виконувати shell commands на хості:
NODES_EXCLUDE="[\"n8n-nodes-base.executeCommand\",\"n8n-nodes-base.readWriteFile\"]"

4. SSRF protection

N8N_BLOCKED_HOSTS або allowlist - заборонити HTTP Request на private IP (169.254.169.254 - AWS metadata, 127.0.0.1, 10.0.0.0/8).

5. Webhook URL secrecy

Production webhook URL містить random ID. Не вкладай у public docs. Постав Header auth якщо можливо.

6. TLS skip verification - NO

У HTTP Request є опція "Ignore SSL Issues". Включати тільки для localhost тестування - ніколи у production.

SSO + RBAC (Enterprise only)

"Single Sign-On for user account management" і role-based access control - тільки на Enterprise license. Для Community - один shared user.

Джерело: docs.n8n.io/hosting/securing Версія: 2.21.5 Перевірено: 2026-05-20
6.9

Source control: dev/prod через Git

"Зробив workflow → клацнув активувати на проді" - небезпечна практика. Через Git ти отримуєш review + rollback + audit.

n8n has built its environments feature on top of Git, a version control software. ... This combination of n8n and your instance's specific configuration and settings is the environment your workflows run in.

Setup (Enterprise)

Кредентіали і variable values не синхронізуються з Git. "n8n doesn't synchronize credential and variable values with Git - these must be configured manually on each new instance for security reasons". Тільки stubs (назва, тип).

Без Enterprise - ручний workflow

Для Community license такого UI немає, але механізм є:

  1. У workflow editor: ⋮ menu → Download → отримуєш JSON.
  2. Commit JSON у Git вручну.
  3. На prod: ⋮ menu → Upload → завантажуєш JSON.
  4. Credentials налаштовуєш окремо на кожному інстансі.

Через REST API (CI/CD)

# Дамп всіх workflows з dev:
curl -H "X-N8N-API-KEY: $KEY" \
  https://dev.n8n.example.com/api/v1/workflows \
  | jq '.data' > workflows.json

# Push до Git → CI pipeline на prod виконує POST у /api/v1/workflows
Простий setup без Enterprise: один Git repo з JSON workflows + ручний import/export. Працює, поки команда < 3 людей.
Джерело: docs.n8n.io/source-control-environments Версія: 2.21.5 Перевірено: 2026-05-20
РОЗДІЛ 07 · ≈ 90 ХВ

Деплой клієнту: VPS + Traefik + SSL

Від $5 VPS до робочого https://n8n.client.com за 20 хвилин. Backup стратегія, передача доступу, update protocol. Все, що треба для "ready for client".

7.1

VPS вибір: 2GB RAM, Ubuntu LTS

Виберемо мінімальний прод-сервер для типового Fiverr клієнта.

Мінімальні вимоги

SetupRAMvCPUDisk
Single (1-10 workflows, low traffic)2 GB120 GB
Single (AI workflows, moderate)4 GB240 GB
Queue mode (1 main + 2 workers)4 GB240 GB
Queue mode (3+ workers, AI heavy)8 GB480 GB

Провайдери (порівняння, 2026)

Чому Ubuntu 24.04 LTS

Не бери Shared CPU plans для AI workflows. LLM API requests + Pyodide Python виконання забивають CPU нерівномірно, що bad on shared. Dedicated vCPU варто доплати.
Hetzner потребує реєстрації з документом (passport scan). Перший раз - чекаєш ~24 год верифікації. Закладай у timeline.
Джерело: синтез з ціновими сторінками провайдерів (hetzner.com/cloud · digitalocean.com/pricing · vultr.com/products) Перевірено: 2026-05-20
7.2

Docker і compose install

Перший крок на свіжому Ubuntu. 3 команди.

# 1. Update + install Docker (офіційний скрипт)
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sudo sh

# 2. Додай свого user у docker group (без sudo для docker)
sudo usermod -aG docker $USER
newgrp docker  # або re-login

# 3. Перевір
docker version
docker compose version
Install Docker via Docker Desktop (Mac, Windows, Linux) - includes Engine and Compose, or Docker Engine + Compose separately (Linux) - for headless systems.

Firewall (UFW)

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

SSH (22), HTTP (80 - для Let's Encrypt challenge), HTTPS (443). Більше нічого не відкриваємо.

swap (для 2GB RAM серверів)

# 2GB swap файл
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h  # перевір
Без swap n8n на 2GB може OOM-kill при першому AI workflow. 2GB swap - cheap insurance, ніколи активно не використається в нормі.

Hardening (опційно але recommended)

Джерело: docs.docker.com/engine/install/ubuntu · docs.n8n.io/hosting/installation/docker Перевірено: 2026-05-20
7.3

Traefik + Let's Encrypt

Traefik - reverse proxy, що автоматично отримує SSL-сертифікати від Let's Encrypt і renew їх. Налаштовується через docker labels - без окремого конфігу.

Передумови

  1. DNS A-запис: n8n.example.com → IP сервера (через панель домену).
  2. Порти 80, 443 відкриті у UFW (див. 7.2).
  3. nslookup n8n.example.com повертає правильний IP.

Traefik service у compose

services:
  traefik:
    image: traefik:v3.1
    restart: always
    command:
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.web.http.redirections.entrypoint.to=websecure
      - --entrypoints.web.http.redirections.entrypoint.scheme=https
      - --entrypoints.websecure.address=:443
      - --certificatesresolvers.le.acme.tlschallenge=true
      - --certificatesresolvers.le.acme.email=${SSL_EMAIL}
      - --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json
    ports: ["80:80", "443:443"]
    volumes:
      - traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

n8n labels (так Traefik знає про неї)

  n8n:
    image: docker.n8n.io/n8nio/n8n:2.21.5
    # ... env, volumes ...
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.entrypoints=websecure
      - traefik.http.routers.n8n.tls.certresolver=le
      - traefik.http.services.n8n.loadbalancer.server.port=5678
      - traefik.http.middlewares.n8n-sec.headers.stsseconds=315360000
      - traefik.http.middlewares.n8n-sec.headers.browserxssfilter=true
      - traefik.http.middlewares.n8n-sec.headers.contenttypenosniff=true
      - traefik.http.routers.n8n.middlewares=n8n-sec

Перший запуск

docker compose -f docker-compose.prod.yml up -d

# Перевір логи Traefik (Let's Encrypt може зайняти 30-60 сек):
docker compose logs traefik | grep -i "certificate"

# Відкрий https://n8n.example.com у браузері - має бути валідний cert.
Traefik handles TLS/SSL certificates and routing with ACME Let's Encrypt support.
Let's Encrypt staging vs production - якщо тестуєш, спочатку додай --certificatesresolvers.le.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory. Production має rate limit 5 fail/hour - можна попасти у lockout.
Джерело: docs.n8n.io/hosting/installation/server-setups/docker-compose Версія: 2.21.5 Перевірено: 2026-05-20
7.4

.env і secrets

Секрети - у .env, не у docker-compose.yml. .env поза Git. На сервері - chmod 600.

Шаблон .env

# === n8n version ===
N8N_VERSION=2.21.5

# === Domain і SSL ===
DOMAIN_NAME=example.com
SUBDOMAIN=n8n
SSL_EMAIL=admin@example.com
GENERIC_TIMEZONE=Europe/Kyiv

# === PostgreSQL ===
POSTGRES_USER=postgres
POSTGRES_PASSWORD=<openssl rand -base64 24>
POSTGRES_DB=n8n
POSTGRES_NON_ROOT_USER=n8n
POSTGRES_NON_ROOT_PASSWORD=<openssl rand -base64 24>

# === n8n encryption (CRITICAL) ===
# openssl rand -hex 32
N8N_ENCRYPTION_KEY=...64-char-hex...

# === Runners auth ===
RUNNERS_AUTH_TOKEN=<openssl rand -hex 16>

Генерація secrets

# Encryption key (256-bit)
openssl rand -hex 32

# Паролі (24 base64 char ~= 144 bit entropy)
openssl rand -base64 24

# Auth token
openssl rand -hex 16

Хардеnинг файлу

# Власник + дозволи
sudo chown $USER:$USER .env
chmod 600 .env

# Перевір
ls -la .env
# -rw------- 1 user user ... .env

Що зробити у .gitignore

.env
.env.local
*.pem
*.key
acme.json
Випадково закомітив .env з encryption key у public Git? Не просто видали commit - згенеруй новий ключ, перешифруй credentials, rotate усі API keys, що зберігалися. Старі дані могли бути scrape-нуті.
Для production - HashiCorp Vault, AWS Secrets Manager, Doppler. Для Fiverr setup - .env з chmod 600 + регулярний backup. Не overkill для початку.
Джерело: docs.n8n.io/hosting/configuration/configuration-methods Перевірено: 2026-05-20
7.5

Backups: volume + DB dump

Без backup стратегії - один OOM-kill на Postgres знищує клієнтський проєкт. Простий setup - cron + rclone.

Daily backup script

#!/bin/bash
# /opt/n8n/backup.sh
set -euo pipefail

BACKUP_DIR=/srv/backups
DATE=$(date +%F-%H%M)
PROJECT=n8n  # ім'я docker-compose проєкту

mkdir -p "$BACKUP_DIR"

cd /opt/n8n

# 1. Postgres dump
docker compose exec -T postgres \
  pg_dump -U n8n -d n8n \
  | gzip > "$BACKUP_DIR/db-$DATE.sql.gz"

# 2. n8n volume tarball
docker run --rm \
  -v ${PROJECT}_n8n_storage:/source:ro \
  -v "$BACKUP_DIR":/backup \
  alpine tar czf "/backup/vol-$DATE.tgz" -C /source .

# 3. .env (encryption key!)
cp .env "$BACKUP_DIR/env-$DATE.bak"

# 4. Off-site sync
rclone copy "$BACKUP_DIR" b2:client-n8n-backups/ \
  --include "*-$DATE.*"

# 5. Локально - тримай 7 днів
find "$BACKUP_DIR" -type f -mtime +7 -delete

echo "Backup done: $DATE"

Cron

# crontab -e
0 3 * * * /opt/n8n/backup.sh >> /var/log/n8n-backup.log 2>&1

Off-site варіанти

Restore тест (раз на місяць)

# Створи fresh stack у /tmp
mkdir /tmp/n8n-restore && cd /tmp/n8n-restore
cp /opt/n8n/docker-compose.prod.yml .

# Restore .env (encryption key!)
cp /srv/backups/env-2026-05-15-0300.bak .env

# Restore Postgres
gunzip -c /srv/backups/db-2026-05-15-0300.sql.gz \
  | docker compose exec -T postgres psql -U n8n -d n8n

# Restore volume
docker run --rm \
  -v n8n-restore_n8n_storage:/target \
  -v /srv/backups:/backup:ro \
  alpine tar xzf "/backup/vol-2026-05-15-0300.tgz" -C /target

# Перевір - workflows працюють?
Backup без тест-restore = не backup. Раз на місяць - перевір що отримуєш working n8n з backup-ів. Інакше виявиш проблему в момент, коли restore критично потрібен.
Джерело: синтез з 6.5 + rclone docs (rclone.org/docs) Перевірено: 2026-05-20
7.6

Перший production workflow для клієнта

Сервер є, домен працює, n8n відкривається. Тепер - перший workflow з якістю, за яку платять.

Checklist якісного workflow

Dedicated user для клієнта

  1. Створи окремий user у Settings → Users.
  2. Передай login URL + temporary password через secure channel (1Password, ProtonMail, Signal).
  3. Перший вхід - клієнт міняє пароль і вмикає 2FA.
  4. Твій admin account - тримай як backup access.

Workflow naming convention

[Module] - Description (vN)

приклади:
[CRM] - HubSpot deal status sync (v2)
[Billing] - Stripe webhook to Slack (v1)
[Support] - Email triage AI agent (v3)

Префікс [Module] групує у списку workflows. Версія - щоб не плутати при оновленнях.

Перед Publish - запусти workflow з real data 5 разів вручну (Execute workflow). Перевір у Executions tab все green і output відповідає очікуваному. Тільки потім - Publish.
Джерело: синтез best practices з 3.7-3.10 + 6.7-6.8 Перевірено: 2026-05-20
7.7

Передача клієнту

Workflow працює, тести зелені. Тепер - правильна handover, щоб клієнт міг сам ним користуватися (і платити тобі за support, а не за фіксінг твого "хвоста").

Що передаєш

  1. README.md у клієнтовому Git або Notion:
    • URL n8n + login
    • Список workflows з описом
    • "Як активувати/деактивувати", "як подивитися execution log"
    • "Куди звертатися при поломці" (ти + emergency contact)
  2. Workflow JSON exports у Git (як backup):
    • ⋮ menu → Download → commit у repo
  3. Sticky notes вже у workflow (з розділу 3.9 і 7.6).
  4. Loom screencast 5-10 хв:
    • Як зайти у n8n
    • Як відкрити workflow і подивитися останні executions
    • Як знайти конкретний run за датою/error message
    • Як re-run failed execution
  5. External monitoring: UptimeRobot або Uptime Kuma на /healthz з notification у клієнтський email/Slack.

SLA - на що домовляєшся

Контракт-лист (надішли перед роботою)

Джерело: синтез з Fiverr seller best practices + handover patterns Перевірено: 2026-05-20
7.8

Update n8n

n8n релізить нові версії щотижня. Patch (2.21.5 → 2.21.6) - безпечно. Minor (2.21 → 2.22) - читай release notes.

Команди update

cd /opt/n8n

# 1. Backup перед update (на всякий)
./backup.sh

# 2. Оновити image tag у .env або docker-compose
# Або просто pull latest якщо tag не pinned
docker compose pull

# 3. Recreate з новим image
docker compose up -d

# 4. Перевір логи
docker compose logs -f n8n | tail -50

# 5. Smoke test: відкрий https://n8n.example.com, перевір 1-2 workflows
Pull the latest image: docker pull docker.n8n.io/n8nio/n8n. Specific version: docker pull docker.n8n.io/n8nio/n8n:1.81.0. Unstable next version: docker pull docker.n8n.io/n8nio/n8n:next.

Стратегія version pinning

СтильTagКоли
Strict2.21.5Production. Ти контролюєш upgrades.
Minor2.21 або stableAuto-patch updates безпечно.
LatestlatestТільки dev. Несподівані breaking changes.
UnstablenextBeta testing наступних релізів.
Для Fiverr клієнтів - pin до patch версії (2.21.5). Раз на 2-4 тижні читай release notes на github.com/n8n-io/n8n/releases. Upgrade як maintenance window з backup.

Rollback якщо щось зламалося

# У .env поверни попередню версію
sed -i 's/N8N_VERSION=2.22.0/N8N_VERSION=2.21.5/' .env

# Recreate
docker compose pull
docker compose up -d

# Якщо DB schema несумісна - restore з backup
gunzip -c /srv/backups/db-LAST_GOOD.sql.gz \
  | docker compose exec -T postgres psql -U n8n -d n8n
Major upgrades (1.x → 2.x) можуть мати breaking DB schema. Завжди backup перед, тестуй на staging копії спершу.
Джерело: docs.n8n.io/hosting/installation/docker · github.com/n8n-io/n8n/releases Перевірено: 2026-05-20
РОЗДІЛ 08 · ≈ 60 ХВ

Fiverr-готовність: послуги, ціна, доставка

Знаєш n8n. Тепер - як це продавати. Що дозволено, типи gig-ів, ціни, скоупінг, доставка, портфоліо-шаблони, червоні прапори.

8.1

Що можеш продавати по ліцензії

Повторимо ключове з 1.2 - тепер у площині Fiverr.

✓ ДОЗВОЛЕНО для Fiverr-послуг

✗ ЗАБОРОНЕНО для Fiverr-послуг

Hosting клієнтського n8n на твоєму сервері за гроші - "Hosting n8n and charging people money to access it" заборонено.
"Multi-tenant SaaS" з n8n всередині - white-labelling під твоїм брендом.
Workflow, що збирає credentials end-users твого клієнта щоб діяти від їхнього імені у твоєму додатку.

Як уникнути проблем

Найбезпечніша модель: VPS на ім'я клієнта (його billing), ти - тільки SSH access для setup. Ти продаєш роботу, він володіє інфраструктурою.
Джерело: docs.n8n.io/sustainable-use-license Версія: 2.21.5 Перевірено: 2026-05-20
8.2

5 типів gig-ів, які купують

Спрямованість важлива - "I will do automation" too generic. Профілюй на специфіку.

1. "I will build a workflow automation in n8n"

2. "I will set up n8n on your server with SSL"

3. "I will create AI chatbot with n8n + OpenAI"

4. "I will integrate your CRM with X using n8n"

5. "I will maintain your n8n instance monthly"

Стратегія: запускай 1-2 gig-и на специфічних нішах (краще "AI chatbot for e-commerce" ніж "n8n expert"). Виведи перші 5 reviews → expand.
Джерело: синтез з Fiverr search "n8n" + practitioner pricing scan Перевірено: 2026-05-20
8.3

Скоупінг чек-лист

До того, як кажеш ціну, ти маєш мати відповіді на 9 питань. Без цього оцінка - guesswork, і ти або переплачуєш timeом, або клієнт виявить undocumented assumptions.

Pre-quote questionnaire

  1. Trigger: scheduled (раз на день/годину), webhook (від кого), form submit, email arrival, manual?
  2. Input data shape: попроси JSON sample / screenshot форми / API doc link. Ніколи "ну, ти зрозумієш".
  3. Бажаний output: куди іде, у якому форматі (Slack message template, Google Sheet row, API endpoint).
  4. Error path: що робити, якщо щось fail? Retry скільки разів? Alert куди?
  5. Volume: скільки виконань на день/годину/місяць?
  6. Latency requirement: real-time (< 5 сек) чи batch (раз на годину ok)?
  7. Credentials: чи в клієнта вже є API keys / OAuth для усіх сервісів? Чи треба налаштовувати?
  8. Hosting: у клієнта вже є n8n чи треба нове? Якщо нове - VPS уже куплено?
  9. Подальша підтримка: хочеш monthly maintenance, чи one-off?

Червоний прапор: відповіді на 6+ "не знаю"

Якщо клієнт не може відповісти - він не готовий замовляти. Запропонуй discovery call за $50 → з цього вийде нормальний скоуп → потім вже основний проект.

Time estimation формула

base_hours = 2 (setup, sticky notes, testing)
+ N_nodes × 0.5 (для звичайних)
+ N_ai_nodes × 1.5 (AI workflows тривають довше у дебагу)
+ 2 (handover, screencast, docs)
+ buffer (×1.3 завжди)

= скільки годин = ціна за твою hourly rate
Закладай buffer 30%. Те, що "просто додати ще одну ноду" - часто означає custom Code, додаткові credentials, edge cases. Краще закладати запас і доставити швидше, ніж overrun.
Джерело: синтез з freelance scoping playbooks + n8n practitioner experience Перевірено: 2026-05-20
8.4

Ціни (Fiverr 2026)

Орієнтир станом на 2026-05. Конкретні цифри залежать від тиру seller (New / Level 1 / Level 2 / Top Rated) і твого реgion.

Workflow building (per-project)

TierScopeЦінаDelivery
Basic1 trigger + 3-5 nodes, no AI, no error workflow$30-802-3 дні
Standard2 triggers, 10+ nodes, error handling, sticky notes$100-2504-7 днів
PremiumAI Agent + memory + RAG, error workflow, docs, video walkthrough$300-8007-14 днів

Setup і infrastructure

Maintenance (monthly retainer)

Add-ons

Fiverr бере 20% fee. Якщо твоя справжня rate $50/hour - на Fiverr виставляй $62.50/hour, щоб після fee лишилось $50. Не забувай податок (у тебе є ФОП?).
Перші 5 gig-ів - роби трохи дешевше за market (-20%). Як отримаєш reviews → підіймай до market. Top Rated Seller може ціни 2× ринкові + клієнти все ж купують.
Джерело: Fiverr search "n8n" станом на 2026-05 + freelance rate surveys (Toptal, Stack Overflow Developer Survey) Перевірено: 2026-05-20
8.5

Доставка: що отримує клієнт

Хороша доставка = клієнт хвалить у відгуку = більше замовлень. Включай ці artifacts завжди.

Mandatory delivery package

  1. Workflow JSON export - кнопка Download у workflow editor. Клієнт може re-import у новий n8n.
  2. README.md у клієнтовому Notion або Git:
    • Що workflow робить (2-3 речення)
    • Який trigger, які зовнішні сервіси, де credentials
    • Як активувати / деактивувати
    • Як знайти execution log
    • Куди звертатися при поломці
  3. Sticky notes у самому workflow - inline документація (розділ 3.9).
  4. Loom screencast 5-10 хв:
    • Walkthrough від trigger до output
    • Як подивитися останні runs
    • Як re-run failed
  5. 30 days revisions - стандарт Fiverr. Лагідно нагадуй, що "feature requests" - окремий quote.

Premium add-ons (за extra fee)

Delivery message template

Привіт, [Client]!

Workflow готовий. Дивись:
1. JSON: attached - на випадок міграції
2. README у твоєму Notion: [link]
3. Video walkthrough: [Loom link, 7 хв]
4. Workflow у твоєму n8n: [link]

Перевір 1-2 виконання, дай знати, якщо щось
треба доопрацювати - у тебе 30 днів revisions.

Бонус: якщо хочеш monthly maintenance ($75/міс)
- я моніторю errors, оновлюю n8n, додаю до 2
небольших workflows. Дай знати.

[Your name]
Завжди надсилай Loom video. Клієнт у 80% випадків поставить 5⭐ просто за цей жест "він все пояснив". У Fiverr reviews "amazing communication" - частіша похвала, ніж "great code".
Джерело: Fiverr seller best practices community + practitioner experience Перевірено: 2026-05-20
8.6

5 portfolio templates для GitHub

Перед запуском gig - заходь у GitHub з готовим repo "n8n-templates". 5 робочих JSON-ів = доказ профі. Клієнти на Fiverr заходять перевірити "хто це взагалі".

Template 1: Form → CRM + Slack + Email confirmation

Template 2: RSS daily digest → Telegram

Template 3: Stripe webhook → Discord + Google Sheets log

Template 4: AI chatbot з Postgres memory + Google Sheets RAG

Template 5: Schedule API health check → multi-channel alert

Github repo structure

n8n-templates/
├── README.md                          # обзор кожного template
├── 01-form-to-crm/
│   ├── workflow.json                  # імпортуваний у n8n
│   ├── README.md                      # setup steps + screenshot
│   └── env.example                    # потрібні credentials
├── 02-rss-telegram-digest/
├── 03-stripe-discord/
├── 04-ai-chatbot-rag/
└── 05-api-health-monitor/
Кожен template - окремий README з кроками "1. Створи credentials X. 2. Імпортуй JSON. 3. Активуй". Це портфоліо і open-source contribution (linkable у Fiverr profile).
Джерело: синтез з 1.5, 4.7, 5.7 + n8n.io/workflows community patterns Перевірено: 2026-05-20
8.7

Червоні прапори клієнтів

Деякі запити - чітко "не починай". Економить тебе тижні нервів.

🚩 "Зроби as Zapier but our own SaaS"

Запит на white-label/multi-tenant з n8n. Заборонено Sustainable Use License. Або відмовляй, або refer клієнта до n8n.io sales для commercial agreement.

🚩 "Збирай credentials наших users"

"User credential collection: Using n8n to collect end users' own credentials to access their data and feed it into your application" - заборонено. Не починай.

🚩 "Бюджет $20, треба завтра, AI з 5 інтеграціями"

Underpriced unrealistic request. Або клієнт не розуміє вартості (виховуй), або шукає naive seller. Скажи real estimate і йди далі.

🚩 Немає admin access до VPS / API credentials

Без доступу не зможеш доставити. Якщо клієнт скаже "потім" - не починай, чекай поки буде усе.

🚩 "Просто скопіюй цей готовий workflow з YouTube"

OK скопіювати template, але якщо клієнт думає що це 30 хв роботи - дійсно скопіюй за $30 і не обіцяй support. Не вкладай години у "просту" річ.

🚩 Не хоче sticky notes "бо це непотрібно"

Не хоче документацію зараз = звинуватить тебе у "погано пояснив" пізніше. Включай sticky notes завжди, навіть якщо клієнт каже "пропусти".

🚩 Просить hardcoded credentials у Code node

Якщо клієнт наполягає "впиши API key прямо у код" - він не розуміє безпеку. Пояси про Credentials feature. Якщо все одно наполягає - зеленим маркером у offer "I am not responsible for security implications" або відмовляй.

🚩 "Хочемо як у Zapier, але дешевше"

n8n != Zapier-clone. Якщо клієнт хоче drag-and-drop без code, не розуміє differences - можливо йому реально Zapier краще підходить. Чесно скажи це і збережи репутацію.

Час, який не витрачено на bad client = час на 2 хороших client-ів. Filter рано і часто.
Джерело: docs.n8n.io/sustainable-use-license + freelance red-flag playbooks Перевірено: 2026-05-20
8.8

Куди далі

Курс пройдено. Подальші кроки - building practice і community.

Тиждень 1-2 після курсу

  1. Підняти власну n8n instance на твоєму VPS (Hetzner CX22).
  2. Реалізувати 5 portfolio templates з 8.6. Закомітити у public Github.
  3. Записати 1 Loom walkthrough на один з template-ів.

Тиждень 3-4

  1. Створити Fiverr gig: фокус 1 ніша - наприклад "AI chatbot with n8n + OpenAI".
  2. Gallery: скріншоти твоїх template workflows.
  3. Pricing: Basic / Standard / Premium (з 8.4).
  4. FAQ: про license, hosting, scope.

Тиждень 5-12

  1. Перші замовлення - ціни на 20% нижче market для review collection.
  2. 3-5 reviews → починай піднімати ціни.
  3. Кожен closed gig → запропонуй monthly maintenance ($50-150/міс) = passive income.

Постійні ресурси

Куди розширюватися

Чек-лист "ready for Fiverr"

Цей курс - твій reference. Повернись до конкретних розділів, коли робиш клієнтський workflow. Не намагайся пам'ятати все - пам'ятай де подивитися.
Джерело: синтез з усього курсу + n8n community resources Перевірено: 2026-05-20

Курс пройдено ✓

n8n 2.21.5 · ~12 годин · 8 розділів
Що пройшли:
  • Підняли n8n у Docker (dev, queue mode, production з Traefik)
  • Зрозуміли модель даних n8n: items, json/binary, pin data
  • Опанували 20 основних нод: Trigger/IF/Switch/Set/Code/HTTP Request/Webhook
  • Навчилися писати expressions {{ $json.x }} і Code (JS + Python)
  • Підключили AI Agent з memory і tools, побудували chatbot з RAG
  • Розгорнули production з queue mode, retention, metrics, 2FA
  • Зрозуміли Sustainable Use License: що дозволено для Fiverr, що ні
Свідомо не торкались:
  • Розробка кастомних n8n nodes (окремий TypeScript SDK курс)
  • Глибокий LangChain (за межами cluster nodes)
  • Embedded n8n у власному SaaS (заборонено ліцензією)
  • Kubernetes Helm chart (тема для DevOps на high-scale)
  • Enterprise features (RBAC, SSO, audit logs)
Куди далі:
  • Збирай портфоліо: 5 шаблонів з розділу 8 → твій GitHub
  • Створи Fiverr gig: фокус на 1 нішу (AI або CRM integration)
  • Підписуйся на release notes: github.com/n8n-io/n8n/releases
  • Community templates: n8n.io/workflows
  • Forum для проблем: community.n8n.io
Натисни Home щоб повернутись на cover, або T щоб відкрити зміст.