Що вам знадобиться

Перш ніж почати, переконайтесь, що у вас під рукою є все з цього списку:

  • Банківська картка для оренди VPS (Visa/Mastercard, в тому числі українські)
  • Домен — опціонально, але рекомендовано для HTTPS. Можна купити на Namecheap від $6/рік
  • SSH-клієнт: Terminal (macOS/Linux) або PuTTY (Windows). У Windows 10+ можна використовувати вбудований OpenSSH
  • 30 хвилин вільного часу
Не маєте досвіду з терміналом?

Це нормально. Весь гайд побудований за принципом «копіюй-встав». Кожна команда пояснена. Якщо щось піде не так — в кінці статті є розділ FAQ з типовими помилками.

Обираємо та орендуємо VPS

VPS (Virtual Private Server) — це ваш власний сервер в хмарі, який працює 24/7. Саме на ньому буде жити n8n. Ось найкращі варіанти для українських користувачів:

Провайдер Мін. ціна Локації Плюси
Hetzner €3.79/міс Німеччина, Фінляндія Найкраще співвідношення ціна/якість, вбудований Firewall
DigitalOcean $4/міс Амстердам, Франкфурт Простий інтерфейс, багато гайдів
Contabo €4.50/міс Німеччина Більше ресурсів за ту саму ціну

Рекомендація HAIQ: Hetzner Cloud, тариф CX22 — 2 vCPU, 4 GB RAM, 40 GB NVMe за €5.18/міс. Цього вистачить для десятків активних workflow.

Як створити сервер на Hetzner

Зареєструйтесь на hetzner.cloud, створіть новий проект, натисніть «Add Server». Оберіть: регіон — Falkenstein або Helsinki (найближчі до України), ОС — Ubuntu 24.04, тариф — CX22 або мінімум CX11 (2 GB RAM). У розділі SSH Keys додайте свій публічний ключ (або пароль прийде на email).

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

1 vCPU і 1 GB RAM — це мінімум для легких workflow (до 10 активних). Для продакшену з AI-нодами та PostgreSQL краще брати 2 vCPU і 4 GB RAM. n8n з AI-агентами споживає більше пам'яті.

Підключаємось до сервера через SSH

Після створення сервера ви отримаєте IP-адресу (наприклад, 65.108.xx.xx). Відкрийте термінал та підключіться:

ssh root@65.108.xx.xx

При першому підключенні система запитає «Are you sure you want to continue connecting?» — введіть yes. Далі введіть пароль (або підключення відбудеться автоматично, якщо ви додали SSH-ключ).

Першим ділом оновлюємо систему та встановлюємо базові утиліти:

# Оновлюємо пакети apt update && apt upgrade -y # Встановлюємо базові утиліти apt install -y curl wget git nano ufw ca-certificates gnupg

Налаштовуємо файрвол — дозволяємо тільки SSH, HTTP та HTTPS:

ufw allow 22/tcp # SSH ufw allow 80/tcp # HTTP ufw allow 443/tcp # HTTPS ufw enable

Встановлюємо Docker

Docker — це інструмент, який дозволяє запускати програми в ізольованих контейнерах. Думайте про це як про «коробку», в якій n8n живе зі всіма своїми залежностями. Встановити його можна однією командою:

# Встановлюємо Docker одним скриптом curl -fsSL https://get.docker.com | sh # Перевіряємо, що Docker працює docker --version # Має вивести щось на кшталт: Docker version 27.x.x # Перевіряємо Docker Compose (вже включений) docker compose version # Docker Compose version v2.x.x
Готово!

Docker Compose вже входить у сучасні версії Docker — його не потрібно встановлювати окремо. Якщо команда docker compose version працює — все ок.

Розгортаємо n8n з PostgreSQL

Тепер створимо конфігурацію для n8n. Ми використаємо PostgreSQL замість SQLite (за замовчуванням), бо PostgreSQL краще справляється з навантаженням і надійніший для продакшену.

Створюємо робочу директорію та папки для даних:

# Створюємо папку для n8n mkdir -p ~/n8n && cd ~/n8n # Створюємо папки для даних mkdir -p n8n_data postgres_data # Встановлюємо правильні дозволи для n8n chown -R 1000:1000 n8n_data

Створюємо файл змінних середовища ~/n8n/.env:

# === n8n Configuration === N8N_HOST=n8n.yourdomain.com N8N_PORT=5678 N8N_PROTOCOL=https WEBHOOK_URL=https://n8n.yourdomain.com/ GENERIC_TIMEZONE=Europe/Kyiv # Encryption key (ЗБЕРЕЖІТЬ! Без нього не відновити credentials) # Згенеруйте: openssl rand -hex 16 N8N_ENCRYPTION_KEY=ваш_32_символьний_ключ_тут # === PostgreSQL === DB_TYPE=postgresdb DB_POSTGRESDB_HOST=postgres DB_POSTGRESDB_PORT=5432 DB_POSTGRESDB_DATABASE=n8n DB_POSTGRESDB_USER=n8n DB_POSTGRESDB_PASSWORD=ваш_надійний_пароль_бд # Disable telemetry (optional) N8N_DIAGNOSTICS_ENABLED=false
Критично важливо

Збережіть N8N_ENCRYPTION_KEY у надійному місці (менеджер паролів, нотатка в телефоні). Якщо ви втратите цей ключ — всі збережені credentials (API-ключі, паролі) стануть нечитабельними, і їх доведеться вводити заново.

Генеруємо encryption key:

openssl rand -hex 16 # Скопіюйте результат у .env файл

Тепер створюємо головний файл ~/n8n/docker-compose.yml:

services: postgres: image: postgres:16 container_name: n8n_postgres restart: unless-stopped environment: POSTGRES_USER: n8n POSTGRES_PASSWORD: ${DB_POSTGRESDB_PASSWORD} POSTGRES_DB: n8n volumes: - ./postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U n8n"] interval: 10s timeout: 5s retries: 5 n8n: image: docker.n8n.io/n8nio/n8n container_name: n8n restart: unless-stopped ports: - "5678:5678" env_file: - .env depends_on: postgres: condition: service_healthy volumes: - ./n8n_data:/home/node/.n8n

Запускаємо контейнери:

# Запускаємо контейнери у фоновому режимі docker compose up -d # Перевіряємо статус docker compose ps # Дивимось логи n8n docker compose logs -f n8n # Шукаємо рядок: "n8n ready on 0.0.0.0, port 5678"

Якщо бачите «n8n ready on 0.0.0.0, port 5678» — вітаю, n8n працює. Поки що він доступний на http://ваш-ip:5678, але для продакшену потрібен HTTPS.

Підключаємо власний домен

Щоб n8n був доступний за красивою адресою (наприклад, n8n.yourdomain.com), потрібно створити DNS-запис.

Зайдіть у панель управління доменом (Namecheap, Cloudflare, GoDaddy — будь-який реєстратор) та створіть A-запис:

Тип Ім'я Значення TTL
A n8n 65.108.xx.xx (IP вашого VPS) 300

Зачекайте 5–10 хвилин на поширення DNS. Перевірити можна командою:

dig n8n.yourdomain.com # Має повернути IP вашого сервера

HTTPS через Let's Encrypt

HTTPS обов'язковий для n8n — без нього не працюватимуть OAuth2-інтеграції (Google Sheets, Gmail, Slack), webhook-и та безпечні cookie. Ми використаємо Nginx як reverse proxy плюс Let's Encrypt для безкоштовного SSL-сертифіката.

Встановлюємо Nginx та Certbot:

apt install -y nginx certbot python3-certbot-nginx

Створюємо конфігурацію Nginx у файлі /etc/nginx/sites-available/n8n:

server { server_name n8n.yourdomain.com; location / { proxy_pass http://localhost:5678; proxy_http_version 1.1; # WebSocket support (для редактора n8n) proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Збільшуємо ліміт для великих payload client_max_body_size 50m; } }

Активуємо конфігурацію та отримуємо сертифікат:

# Активуємо конфігурацію ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/ nginx -t # Перевіряємо синтаксис systemctl reload nginx # Отримуємо SSL-сертифікат (замініть email та домен) certbot --nginx -d n8n.yourdomain.com \ --email your@email.com \ --agree-tos \ --non-interactive

Certbot автоматично отримає сертифікат від Let's Encrypt, оновить конфігурацію Nginx для HTTPS та налаштує автоматичне оновлення сертифіката кожні 90 днів. Тепер n8n доступний за адресою https://n8n.yourdomain.com.

Автоматичні бекапи

Бекапи — це страховка. Якщо щось піде не так, ви зможете відновити всі workflow та credentials за хвилину.

Створюємо скрипт бекапу в файлі ~/n8n/backup.sh:

#!/bin/bash # Бекап PostgreSQL бази n8n BACKUP_DIR="/root/n8n/backups" DATE=$(date +%Y%m%d_%H%M) mkdir -p $BACKUP_DIR # Дамп бази docker exec n8n_postgres pg_dump -U n8n n8n \ | gzip > $BACKUP_DIR/n8n_db_$DATE.sql.gz # Бекап n8n data (encryption key, custom nodes) tar -czf $BACKUP_DIR/n8n_data_$DATE.tar.gz \ -C /root/n8n n8n_data .env # Видаляємо бекапи старші 30 днів find $BACKUP_DIR -name "*.gz" -mtime +30 -delete echo "Backup completed: $DATE"

Робимо скрипт виконуваним та додаємо в cron — щодня о 3:00 ночі:

# Робимо скрипт виконуваним chmod +x ~/n8n/backup.sh # Додаємо в cron (щодня о 3:00 ночі) (crontab -l 2>/dev/null; echo "0 3 * * * /root/n8n/backup.sh") | crontab - # Перевіряємо, що cron-задача додана crontab -l

Перевіряємо, що все працює

Відкрийте https://n8n.yourdomain.com у браузері. Ви побачите екран реєстрації — створіть акаунт (це буде ваш локальний акаунт на вашому сервері, не пов'язаний з n8n cloud).

Після входу перевірте, що все на місці:

  • Створіть тестовий workflow: додайте Manual Trigger → Set Node → змініть дані → натисніть Execute
  • Перевірте webhook: створіть Webhook Trigger, скопіюйте URL, відкрийте в новій вкладці — має повернути відповідь
  • Перевірте таймзону: додайте Schedule Trigger, переконайтесь, що час відповідає Europe/Kyiv
  • Активуйте безкоштовну ліцензію: Settings → Community — натисніть Activate (відкриє додаткові фічі)
Вітаю!

Ваш n8n готовий до роботи. Тепер ви можете будувати workflow, підключати Telegram-ботів, налаштовувати автоматичну обробку замовлень — та все інше, що описано в нашій попередній статті.

Як оновлювати n8n

n8n оновлюється регулярно — нові ноди, AI-фічі, виправлення. Оновити елементарно:

cd ~/n8n # Завантажуємо нову версію та перезапускаємо docker compose pull docker compose up -d # Перевіряємо версію docker compose logs n8n | head -5
Перед оновленням

Завжди робіть бекап: bash ~/n8n/backup.sh. У рідкісних випадках нова версія може мати breaking changes.

Часті питання

Скільки коштує VPS для n8n?

Від $3–5/міс для легких workflow (Hetzner CX11, DigitalOcean Basic). Для продакшену з AI та PostgreSQL рекомендуємо $5–12/міс (2 vCPU, 4 GB RAM). Self-hosted n8n Community Edition — повністю безкоштовний, ви платите тільки за сервер.

Чи потрібно вміти програмувати?

Ні. Вся установка — це копіювання команд з цього гайду. А сам n8n — візуальний конструктор: ви з'єднуєте блоки мишкою, без коду.

Навіщо потрібен HTTPS?

Без HTTPS не працюють OAuth2-інтеграції (Google Sheets, Gmail, Slack), webhook-и від зовнішніх сервісів та безпечні cookie. Фактично n8n без HTTPS — це тільки для локальної розробки, не для продакшену.

Що робити, якщо n8n не запускається?

Перевірте логи: docker compose logs n8n. Найчастіші помилки: неправильний пароль PostgreSQL (порівняйте .env та docker-compose.yml), порт 5678 зайнятий іншим процесом, недостатньо прав на папку n8n_data (виправте: chown -R 1000:1000 n8n_data).

Як перенести n8n на інший сервер?

Скопіюйте на новий сервер три речі: файл .env з тим самим N8N_ENCRYPTION_KEY, папку postgres_data та n8n_data. Запустіть docker compose up -d — все буде працювати як раніше.