EQVPS

Self-host n8n на VPS через Docker

Jun 15, 2026 · 2 min read · EQVPS Team

n8n — з тих інструментів, що починаєш використовувати злегка, а потім тихо пропускаєш через нього половину своїх операцій. І тут «воно крутиться на чужому хмарному місці, з оплатою за кожне виконання, а мої API-ключі живуть на їхніх серверах» починає подобатися менше. Self-host лагодить усі три пункти — фіксована ціна, немає ліміту запусків, ключі лишаються на вашому сервері. З Docker це робота на п'ятнадцять хвилин.

Скільки сервера реально потрібно

Спершу чесні цифри, щоб не взяти зайвого чи мало:

У спокої 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 або тунель

Закрийте сервер і тримайте аптайм

n8n зберігає ваші API-ключі та креди, тож машина має бути закрита: пройдіть чек-ліст безпеки (SSH-ключі, фаєрвол, без пароля) до того, як класти реальні креди. restart: always у compose уже означає, що Docker піднімає n8n після падіння чи перезавантаження — аптайм закрито.

Чи варто?

Будьте чесні із собою щодо обсягу. Ганяєте автоматизації постійно — self-host виграє за ціною (фікс vs за виконання) і знімає ліміти. Пара флоу на місяць — хмарне місце менше мороки. Але аргумент контролю стоїть у будь-якому разі: ваші сценарії, ваші дані, ваші ключі — на вашому сервері, не в оренді. Для більшості, хто всерйоз узявся за n8n, це і є вирішальний фактор.

Сервер на 2 ГБ, compose-файл, домен (або тунель) — і у вас свій хаб автоматизацій, оплачуваний криптою без KYC, живий за хвилини.

FAQ

Скільки RAM потрібно self-hosted n8n?

Близько 2 ГБ — комфортний sweet spot для n8n плюс його база Postgres плюс звичайні сценарії. Запуститься й у 1 ГБ за легких сценаріїв, але на великих прогонах це відчується. Важкі паралельні запуски чи великі дані — беріть 4 ГБ.

Чи потрібен Docker для self-host n8n?

Це найпростіший шлях — один compose-файл дає n8n, базу й постійне сховище, а апгрейд — це один pull. Можна поставити й через npm, але Docker позбавляє головного болю із залежностями й оновленнями.

Self-host n8n дешевший за n8n cloud?

Якщо ганяєте автоматизації постійно — так: фіксований VPS на місяць б'є оплату за виконання, і немає ліміту на сценарії/запуски. Для пари прогонів на місяць хмарне місце простіше. Друга причина self-host — контроль: дані та API-ключі не покидають ваш сервер.

Чи потрібен домен для n8n?

Для нод з OAuth (Google тощо) і чистого HTTPS — так: спрямуйте домен на сервер і поставте n8n за реверс-проксі з сертифікатом. Для суто внутрішнього використання можна ходити через SSH-тунель без домену.

n8n піде на NAT-VPS чи потрібен виділений IP?

Внутрішнє/через SSH-тунель працює на NAT. Якщо потрібен публічний URL зі своїм доменом і HTTPS (для деяких OAuth-колбеків і вебхуків) — тариф із виділеним IP підходить краще, бо у вас усі порти.

← Back to blogSee plans & pricing →