Що вам знадобиться
Перш ніж почати, переконайтесь, що у вас під рукою є все з цього списку:
- Банківська картка для оренди 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 — все буде працювати як раніше.