n8n — з тих інструментів, що починаєш використовувати злегка, а потім тихо пропускаєш через нього половину своїх операцій. І тут «воно крутиться на чужому хмарному місці, з оплатою за кожне виконання, а мої API-ключі живуть на їхніх серверах» починає подобатися менше. Self-host лагодить усі три пункти — фіксована ціна, немає ліміту запусків, ключі лишаються на вашому сервері. З Docker це робота на п'ятнадцять хвилин.
Скільки сервера реально потрібно
Спершу чесні цифри, щоб не взяти зайвого чи мало:
- ~2 ГБ RAM — sweet spot: n8n плюс його база Postgres плюс звичайні сценарії сидять комфортно.
- 1 ГБ працює за легких сценаріїв, але на великих прогонах помітите.
- 4 ГБ — якщо важкі паралельні запуски чи великі дані.
У спокої n8n не ненажерливий до CPU; сплески — під час прогонів. 2 ядра вистачає більшості. (Докладніше про підбір під навантаження — у гайді по sizing.)
Встановлення через Docker
На свіжому Ubuntu/Debian ставимо Docker:
curl -fsSL https://get.docker.com | sudo sh
Папка й docker-compose.yml — n8n із постійним томом і Postgres:
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=n8n.yourdomain.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.yourdomain.com/
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=db
- DB_POSTGRESDB_PASSWORD=change-me
volumes:
- ./n8n-data:/home/node/.n8n
depends_on: [db]
db:
image: postgres:16
restart: always
environment:
- POSTGRES_PASSWORD=change-me
- POSTGRES_DB=n8n
volumes:
- ./db-data:/var/lib/postgresql/data
sudo docker compose up -d
Два моменти варто підкреслити: томи (n8n-data, db-data) — те, що зберігає ваші сценарії при перезапусках і апгрейдах, не пропускайте їх. І n8n прив'язаний до 127.0.0.1, а не 0.0.0.0 — він не стирчить в інтернет напряму. Це навмисно; доступ безпечно вирішує наступний крок.
Доступ: HTTPS або тунель
- Публічний URL (потрібен для OAuth-нод і вебхуків): спрямуйте субдомен на сервер і поставте реверс-проксі (Caddy — найменші зусилля, авто-HTTPS) перед
127.0.0.1:5678. Тут підходить тариф із виділеним IP — у вас порти й DNS. - Лише для себе, без домену: пропустіть проксі й ходіть через SSH-тунель —
ssh -L 5678:127.0.0.1:5678 user@server, потім відкрийтеlocalhost:5678. Працює й на NAT-VPS.
Закрийте сервер і тримайте аптайм
n8n зберігає ваші API-ключі та креди, тож машина має бути закрита: пройдіть чек-ліст безпеки (SSH-ключі, фаєрвол, без пароля) до того, як класти реальні креди. restart: always у compose уже означає, що Docker піднімає n8n після падіння чи перезавантаження — аптайм закрито.
Чи варто?
Будьте чесні із собою щодо обсягу. Ганяєте автоматизації постійно — self-host виграє за ціною (фікс vs за виконання) і знімає ліміти. Пара флоу на місяць — хмарне місце менше мороки. Але аргумент контролю стоїть у будь-якому разі: ваші сценарії, ваші дані, ваші ключі — на вашому сервері, не в оренді. Для більшості, хто всерйоз узявся за n8n, це і є вирішальний фактор.
Сервер на 2 ГБ, compose-файл, домен (або тунель) — і у вас свій хаб автоматизацій, оплачуваний криптою без KYC, живий за хвилини.