N8N Cloud коштує $20+/місяць вже при базовому використанні. Self-hosted на VPS за $6-12 — і ви маєте необмежену кількість executions, повний контроль над даними та жодних сюрпризів у рахунку. У цьому гайді пройдемо шлях від чистого VPS до production-ready N8N з HTTPS, PostgreSQL, автоматичними бекапами та моніторингом.
Що ви отримаєте після цього гайду:
- Production N8N з PostgreSQL, Traefik та автоматичним HTTPS
- Автоматичні щоденні бекапи з ротацією та off-site storage
- Моніторинг та алерти на Telegram/Slack
- Чек-лист production readiness з 15 пунктів
Кому НЕ підходить: якщо у вас менше 50 workflows і немає технічної людини в команді — N8N Cloud простіше. Self-hosted виправданий при 500+ executions/день, вимогах GDPR або бажанні повного контролю.
Self-hosted N8N vs N8N Cloud — що вибрати
Перш ніж занурюватися в технічні деталі — вирішіть, чи взагалі потрібен self-hosted.

| Параметр | N8N Cloud | Self-hosted |
|---|---|---|
| Ціна (базова) | $20/міс (2 500 executions) | $6-12/міс (необмежено) |
| Час на setup | ✅ 5 хвилин | ❌ 2-4 години |
| Контроль даних | ❌ Дані на серверах N8N | ✅ Повний контроль |
| GDPR/Compliance | ❌ Обмежений | ✅ Повний |
| Оновлення | ✅ Автоматично | ❌ Вручну |
| Масштабування | ❌ Дорого | ✅ Горизонтально |
| Backup | ✅ Вбудований | ❌ Самостійно |
| Кастомізація | ❌ Обмежена | ✅ Повна |
Self-hosted виправданий якщо: ви обробляєте 500+ executions/день; є вимоги GDPR або корпоративної безпеки; потрібні кастомні ноди або модифікації; вам важливо уникнути vendor lock-in; або просто хочете платити менше при великому обсязі.
Якщо ще не визначилися з платформою взагалі — почніть з нашого порівняння Make vs Zapier vs N8N.
Що знадобиться
Залізо (VPS):
- Мінімум: 1 vCPU, 1 GB RAM, 10 GB SSD — для тесту
- Production: 2 vCPU, 4 GB RAM, 40 GB SSD — обов’язково
- Рекомендовані провайдери: Hetzner CX21 ($6/міс), DigitalOcean ($12/міс), Vultr
Програмне забезпечення:
- Ubuntu 22.04 LTS або Debian 12
- Docker 24+ та Docker Compose v2
- Домен з DNS A-записом на IP вашого VPS
Необхідні навики:
- Базовий Linux CLI (cd, ls, nano/vim)
- SSH-доступ до сервера
- Базове розуміння Docker volumes
Крок 1 — Підготовка VPS
Підключаємося до сервера та виконуємо базове налаштування безпеки. Цей скрипт встановить Docker і налаштує файрвол:
# Оновлення системи
apt update && apt upgrade -y
# Встановлення залежностей
apt install -y curl git ufw fail2ban
# Налаштування UFW firewall
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp # SSH
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw --force enable
# Встановлення Docker
curl -fsSL https://get.docker.com | sh
# Додавання юзера до групи docker
usermod -aG docker $USER
# Перевірка
docker --version && docker compose version
💡 Порада: обов’язково вимкніть password-login для SSH. В
/etc/ssh/sshd_configвстановітьPasswordAuthentication noта перезапустіть:systemctl restart sshd
Крок 2 — Розгортання N8N через Docker Compose

Створюємо структуру директорій та основний docker-compose.yml файл з PostgreSQL та Traefik:
# Структура директорій
mkdir -p /opt/n8n/{data,postgres,traefik/certs}
cd /opt/n8n
Створюємо файл .env з усіма змінними (замініть значення на свої):
# /opt/n8n/.env
N8N_HOST=n8n.yourdomain.com
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.yourdomain.com/
# Database
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=postgres
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=CHANGE_THIS_STRONG_PASSWORD
POSTGRES_DB=n8n
POSTGRES_USER=n8n
POSTGRES_PASSWORD=CHANGE_THIS_STRONG_PASSWORD
# Security — генеруємо: openssl rand -hex 32
N8N_ENCRYPTION_KEY=GENERATE_WITH_OPENSSL
# Basic Auth
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=STRONG_PASSWORD_HERE
# Email для Let's Encrypt
ACME_EMAIL=your@email.com
Тепер docker-compose.yml — серце вашого деплою:
# /opt/n8n/docker-compose.yml
version: '3.8'
services:
traefik:
image: traefik:v3.0
restart: unless-stopped
ports:
- '80:80'
- '443:443'
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik/certs:/certs
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.web.http.redirections.entrypoint.to=websecure
- --entrypoints.websecure.address=:443
- --certificatesresolvers.letsencrypt.acme.email=${ACME_EMAIL}
- --certificatesresolvers.letsencrypt.acme.storage=/certs/acme.json
- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- ./postgres:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U ${POSTGRES_USER}']
interval: 10s
timeout: 5s
retries: 5
n8n:
image: n8nio/n8n:latest
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
env_file: .env
volumes:
- ./data:/home/node/.n8n
labels:
- traefik.enable=true
- traefik.http.routers.n8n.rule=Host(`${N8N_HOST}`)
- traefik.http.routers.n8n.entrypoints=websecure
- traefik.http.routers.n8n.tls.certresolver=letsencrypt
# Запуск
docker compose up -d
# Перевірка логів
docker compose logs -f n8n
# Перевірка статусу
docker compose ps
⚠️ КРИТИЧНО: збережіть
N8N_ENCRYPTION_KEYв надійному місці (1Password, Bitwarden). Якщо ключ загублено — всі credentials у workflows стануть недійсними і відновленню не підлягають.
Крок 3 — HTTPS і безпека
HTTPS налаштовується автоматично через Traefik і Let’s Encrypt — сертифікат видається при першому запуску. Переконайтеся, що DNS A-запис вже вказує на ваш IP до запуску.
Додаткові заходи безпеки:
- Basic Auth вже включений у
.env— змініть default credentials - Регулярні оновлення:
docker compose pull && docker compose up -d fail2banзахищає від brute-force атак (встановлено на Кроці 1)- Для enterprise: розгляньте Authelia або Authentik як OAuth2 proxy
Загальні принципи безпеки для no-code/low-code інфраструктури — у нашому гайді best practices безпеки для no-code автоматизації.
💡 Потрібна допомога з налаштуванням безпеки для вашого N8N? Забронюйте безкоштовну консультацію.
Крок 4 — Стратегія бекапу
⚠️ КРИТИЧНО: бекап без перевірки відновлення — не бекап. Протестуйте restore процедуру хоча б раз перед тим, як покластися на цю систему.
Що потрібно бекапити: PostgreSQL дамп, .n8n директорія з workflows, та .env файл (особливо encryption key).
#!/bin/bash
# /opt/n8n/backup.sh
BACKUP_DIR=/backups/n8n
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# PostgreSQL dump
docker exec n8n-postgres-1 pg_dump -U n8n n8n \
> $BACKUP_DIR/postgres_$DATE.sql
# N8N data folder
tar -czf $BACKUP_DIR/n8n_data_$DATE.tar.gz /opt/n8n/data
# Видалення бекапів старше 7 днів
find $BACKUP_DIR -name '*.sql' -mtime +7 -delete
find $BACKUP_DIR -name '*.tar.gz' -mtime +7 -delete
# Off-site upload (rclone має бути налаштований)
rclone copy $BACKUP_DIR remote:n8n-backups/
echo "Backup completed: $DATE"
# Зробіть скрипт виконуваним та додайте в cron
chmod +x /opt/n8n/backup.sh
# Щоденний бекап о 3:00 ночі
echo '0 3 * * * /opt/n8n/backup.sh >> /var/log/n8n-backup.log 2>&1' | crontab -
Крок 5 — Моніторинг та observability
- Health check: відкрийте
https://n8n.yourdomain.com/healthz— повинен повернути{"status":"ok"} - Uptime Kuma (self-hosted): ідеальний для HTTP monitoring з Telegram алертами
- BetterStack або UptimeRobot: cloud альтернатива з безкоштовним планом
- Portainer: web UI для управління Docker контейнерами
- Execution logs: зберігаються в PostgreSQL, налаштуйте retention:
EXECUTIONS_DATA_MAX_AGE=720
💡 Порада: налаштуйте N8N Error Workflow — окремий workflow, що надсилає Telegram повідомлення при будь-якому failure у продакшн workflows.
Крок 6 — Безпечне оновлення N8N
# Завжди робіть бекап перед оновленням
/opt/n8n/backup.sh
# Завантаження нового образу та перезапуск
cd /opt/n8n
docker compose pull
docker compose up -d
# Перевірка після оновлення
docker compose logs -f n8n
curl -s https://n8n.yourdomain.com/healthz
Перед кожним оновленням перевіряйте N8N release notes на GitHub — іноді є breaking changes, особливо при переході між мажорними версіями. Тримайте скрипт відкату з backup restore на випадок проблем.
Поширені помилки та вирішення
«Workflows не працюють після рестарту»
Причина: втрачено або змінено N8N_ENCRYPTION_KEY. Credentials зашифровані цим ключем — без нього вони нечитабельні.
Рішення: restore з бекапу, де ключ збережено.
«Webhook URL не працює»
Причина: WEBHOOK_URL не встановлено або встановлено неправильно. Має бути повний URL з https:// і трейлінг слешем: WEBHOOK_URL=https://n8n.yourdomain.com/
«Out of memory / OOM kill»
Рішення: обмежте кількість executions (EXECUTIONS_DATA_MAX_AGE=720), перейдіть на PostgreSQL якщо ще на SQLite, розгляньте upgrade VPS до 4 GB RAM.
«SSL-сертифікат не отримано»
Перевірте: DNS A-запис вказує на правильний IP, порти 80 і 443 відкриті у UFW, ACME_EMAIL встановлено коректно. Логи Traefik: docker compose logs traefik
Чек-лист production readiness
Перед тим як запускати продакшн workflows — перевірте кожен пункт:
- ☐ VPS з мінімум 2 GB RAM та 40 GB SSD
- ☐ Домен з правильною DNS A-записом
- ☐ Docker Compose деплой (не bare
docker run) - ☐ PostgreSQL замість SQLite
- ☐ Traefik з HTTPS (Let’s Encrypt) — сертифікат активний
- ☐ Basic Auth АБО OAuth2 proxy на UI
- ☐
N8N_ENCRYPTION_KEYзбережено в 1Password/Bitwarden - ☐ Автоматичний щоденний бекап PostgreSQL +
.n8nдиректорії - ☐ Off-site storage бекапів (S3/B2/GDrive через rclone)
- ☐ Restore процедура протестована хоча б один раз
- ☐ Uptime моніторинг налаштований (Uptime Kuma або аналог)
- ☐ Telegram/Slack алерти при downtime та workflow failures
- ☐ UFW firewall активний (відкриті лише 22, 80, 443)
- ☐ SSH key-only аутентифікація (
PasswordAuthentication no) - ☐ Стратегія оновлення задокументована
Коли потрібна допомога
Self-hosted N8N складніший, ніж здається, особливо при масштабуванні. Якщо ви плануєте 1 000+ executions/день, критичні business workflows або потрібна GDPR-сумісна конфігурація — розгляньте managed setup.
Перевірте окупність такого розгортання заздалегідь — наш гайд з розрахунку ROI для workflow автоматизації допоможе порахувати ваш конкретний кейс.
🚀 Ми розгорнемо production N8N під ключ: сервер, безпека, бекапи, моніторинг. Без головного болю. Забронюйте консультацію або подивіться case studies в нашому портфоліо.
Підсумок
Self-hosted N8N — це реальна економія та повний контроль, але потребує початкових інвестицій часу та правильного налаштування. Основні кроки: підготовка VPS → Docker Compose з PostgreSQL та Traefik → HTTPS → бекапи → моніторинг. Дотримайтеся чек-листу — і ваш N8N буде надійним серцем automation-інфраструктури.
