bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Развёртывание n8n на VPS: установка через Docker, настройка

calendar_month May 09, 2026 schedule 9 хв. читання visibility 734 переглядів
Развёртывание n8n на VPS: установка через Docker, настройка PostgreSQL и SSL для автоматизации процессов
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Розгортання n8n на VPS: встановлення через Docker, налаштування PostgreSQL та SSL для автоматизації процесів

TL;DR

У цьому посібнику ми розберемо процес створення власної незалежної платформи для автоматизації бізнес-процесів на базі n8n. Ми відмовимося від використання вбудованої бази даних SQLite на користь продуктивної PostgreSQL, налаштуємо автоматичне отримання SSL-сертифікатів через зворотний проксі-сервер Caddy та запакуємо все це в Docker-контейнери для зручності управління та оновлень. У результаті ви отримаєте потужний інструмент, здатний замінити дорогі підписки на Zapier або Make, зберігаючи повний контроль над вашими даними.

  • Стек технологій: Docker, Docker Compose, PostgreSQL 17, Caddy 2.7+, n8n.
  • Безпека: Автоматичний HTTPS (Let's Encrypt), ізоляція контейнерів, налаштування Firewall.
  • Продуктивність: Оптимізація PostgreSQL під задачі черг n8n.
  • Надійність: Налаштування автоматичних бекапів бази даних та конфігураційних файлів.
  • Термін реалізації: 30-40 хвилин за наявності готового сервера.
rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

1. Що ми налаштовуємо і навіщо: n8n як центр управління автоматизацією

Схема: 1. Що ми налаштовуємо і навіщо: n8n як центр управління автоматизацією
Схема: 1. Що ми налаштовуємо і навіщо: n8n як центр управління автоматизацією

Автоматизація процесів у 2026 році стала стандартом не тільки для великого бізнесу, але й для індивідуальних розробників. n8n — це розширюваний інструмент автоматизації робочих процесів, що використовує підхід "fair-code". На відміну від закритих хмарних платформ, n8n дозволяє візуально проектувати складні ланцюжки дій (workflows), об'єднуючи сотні сервісів через API.

Чому self-hosted рішення на власному VPS виграє у хмарних аналогів (Zapier, Make, Pipedream):

  • Відсутність лімітів на кількість кроків: Ви платите лише за ресурси сервера, а не за кожен запуск сценарію.
  • Приватність даних: Ваші API-ключі, персональні дані клієнтів та корпоративні секрети не покидають ваш сервер.
  • Гнучкість: Можливість писати власні вузли (nodes) на JavaScript та інтегруватися з внутрішніми базами даних, що знаходяться в тій самій локальній мережі.
  • Стабільність: Ви не залежите від змін тарифної політики або раптового відключення сервісів у вашому регіоні.

В рамках цього туторіалу ми створимо промислову конфігурацію. Ми не будемо використовувати стандартну установку через npm, оскільки вона складна в оновленні та управлінні залежностями. Замість цього ми застосуємо Docker — це забезпечить ізоляцію компонентів та дозволить перенести всю систему на інший сервер за лічені хвилини.

2. Який VPS-конфіг потрібен під цю задачу

Схема: 2. Який VPS-конфіг потрібен під цю задачу
Схема: 2. Який VPS-конфіг потрібен під цю задачу

n8n — це додаток на Node.js, який може бути досить вимогливим до оперативної пам'яті, особливо при обробці великих об'ємів даних (JSON з тисячами рядків або робота з бінарними файлами). PostgreSQL також вимагає виділених ресурсів для кешування запитів.

Характеристика Мінімальні вимоги Рекомендовані (Production)
CPU 1 Core (Shared) 2 Cores (Dedicated)
RAM 2 GB 4 GB - 8 GB
Диск 20 GB SSD 50 GB+ NVMe
ОС Ubuntu 24.04 LTS Ubuntu 24.04 / 26.04 LTS

Для стабільної роботи системи, особливо якщо ви плануєте запускати більше 10 активних воркфлоу одночасно, краще всього взяти відповідний VPS з 4 ГБ оперативної пам'яті. Це забезпечить запас міцності при пікових навантаженнях, коли декілька важких сценаріїв запускаються одночасно.

Локація сервера: Обирайте регіон, максимально близький до сервісів, з якими ви найчастіше інтегруєтесь. Якщо більшість ваших запитів йде до європейських API, обирайте дата-центри в Амстердамі, Франкфурті або Варшаві для мінімізації затримок (latency).

3. Підготовка сервера: базова безпека та системні утиліти

Схема: 3. Підготовка сервера: базова безпека та системні утиліти
Схема: 3. Підготовка сервера: базова безпека та системні утиліти

Перш ніж встановлювати n8n, необхідно підготувати середовище. Ми будемо використовувати Ubuntu 24.04 або 26.04. Насамперед оновимо пакети та налаштуємо базовий захист.


# Оновлюємо список пакетів та встановлюємо оновлення
sudo apt update && sudo apt upgrade -y

# Встановлюємо необхідні системні утиліти
sudo apt install -y curl wget git software-properties-common ufw fail2ban
    

Налаштування брандмауера (UFW) критично важливе. Нам потрібно відкрити порти для SSH (за замовчуванням 22), HTTP (80) та HTTPS (443). Всі інші порти повинні бути закриті для зовнішньої мережі.


# Дозволяємо стандартні порти
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Вмикаємо брандмауер
sudo ufw enable
    

Рекомендується також створити окремого користувача з правами sudo, щоб не працювати під root. Це знижує ризики при випадковому виконанні деструктивних команд.


# Створюємо користувача (замініть 'deploy' на ваше ім'я)
adduser deploy
# Додаємо до групи sudo
usermod -aG sudo deploy
    
rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

4. Встановлення Docker та Docker Compose (актуальні версії 2026)

Схема: 4. Встановлення Docker та Docker Compose (актуальні версії 2026)
Схема: 4. Встановлення Docker та Docker Compose (актуальні версії 2026)

У 2026 році Docker Compose є вбудованим плагіном Docker (команда docker compose без дефіса). Ми будемо використовувати офіційний репозиторій Docker для отримання найсвіжіших версій ПЗ.


# Додаємо офіційний GPG-ключ Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Додаємо репозиторій до списку джерел apt
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Встановлюємо Docker Engine та плагін Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Перевіряємо встановлення
docker --version
docker compose version
    

Додамо нашого користувача до групи docker, щоб запускати контейнери без постійного використання sudo:


sudo usermod -aG docker $USER
# Щоб зміни набрали чинності, перелогіньтесь або виконайте:
newgrp docker
    

5. Проєктування архітектури: Docker Compose та змінні оточення

Схема: 5. Проєктування архітектури: Docker Compose та змінні оточення
Схема: 5. Проєктування архітектури: Docker Compose та змінні оточення

Ми створимо структуру каталогів, яка дозволить легко керувати проєктом та робити бекапи. Основна ідея — розділити конфігурацію (змінні оточення) та опис інфраструктури (YAML файл).


# Створюємо робочу директорію
mkdir -p ~/n8n-stack && cd ~/n8n-stack

# Створюємо папки для даних томів
mkdir -p n8n_data postgres_data caddy_data caddy_config
    

Тепер створимо файл .env. Це "мозок" нашого налаштування. Тут зберігаються паролі, доменні імена та налаштування пошти. Ніколи не передавайте цей файл третім особам.


# Файл ~/.env
DOMAIN_NAME=n8n.your-domain.com
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Europe/Moscow

# Налаштування PostgreSQL
POSTGRES_USER=n8n_user
POSTGRES_PASSWORD=your_strong_password_here
POSTGRES_DB=n8n_db

# Налаштування n8n
N8N_ENCRYPTION_KEY=make_a_random_string_here
WEBHOOK_URL=https://n8n.your-domain.com/
    

Порада: Для генерації N8N_ENCRYPTION_KEY використовуйте команду openssl rand -hex 24. Цей ключ використовується для шифрування ваших облікових даних у базі даних n8n. Якщо ви його втратите, ви не зможете відновити доступ до збережених API-ключів.

6. Налаштування n8n та PostgreSQL: глибоке занурення в конфіги

Схема: 6. Налаштування n8n та PostgreSQL: глибоке занурення в конфіги
Схема: 6. Налаштування n8n та PostgreSQL: глибоке занурення в конфіги

Тепер створимо файл docker-compose.yaml. Ми будемо використовувати офіційний образ n8n та PostgreSQL 17. Ми також додамо автоматичний перезапуск контейнерів у разі збою або перезавантаження сервера.


services:
  postgres:
    image: postgres:17-alpine
    restart: always
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 5

  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - WEBHOOK_URL=${WEBHOOK_URL}
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    volumes:
      - ./n8n_data:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy

  caddy:
    image: caddy:2-alpine
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./caddy_data:/data
      - ./caddy_config:/config
    depends_on:
      - n8n
    

В цій конфігурації ми прокинули порт n8n тільки на 127.0.0.1. Це означає, що напряму з інтернету до n8n звернутися не можна — це підвищує безпеку. Весь трафік буде йти через Caddy.

rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

7. Налаштування SSL та зворотного проксі через Caddy

Схема: 7. Налаштування SSL та зворотного проксі через Caddy
Схема: 7. Налаштування SSL та зворотного проксі через Caddy

Caddy — це сучасний веб-сервер, який автоматично отримує та оновлює SSL-сертифікати від Let's Encrypt або ZeroSSL. Його конфігурація (Caddyfile) в рази простіша, ніж у Nginx.

Створіть файл Caddyfile в тій самій директорії:


{
    email [email protected]
}

n8n.your-domain.com {
    reverse_proxy n8n:5678 {
        flush_interval -1
    }
}
    

Параметр flush_interval -1 важливий для n8n, оскільки він використовує Server-Sent Events (SSE) для передачі даних про стан воркфлоу в реальному часі. Без цього налаштування інтерфейс може "підторможувати" або показувати дисконнекти.

Запуск стеку:


# Запускаємо всі сервіси у фоновому режимі
docker compose up -d

# Перевіряємо логи, якщо щось пішло не так
docker compose logs -f n8n
    

Тепер ви можете перейти за адресою https://n8n.your-domain.com та побачити вікно початкового налаштування n8n. Створіть першого користувача (адміністратора) та обов'язково збережіть пароль.

8. Бекапи та обслуговування: стратегія виживання даних

Схема: 8. Бекапи та обслуговування: стратегія виживання даних
Схема: 8. Бекапи та обслуговування: стратегія виживання даних

Self-hosting накладає відповідальність за збереження даних. В n8n потрібно бекапити три речі:

  1. База даних PostgreSQL (всі ваші воркфлоу, історія виконань, облікові дані).
  2. Файли в .n8n (ключі шифрування, якщо вони не задані через env, та бінарні дані).
  3. Файли конфігурації (.env, docker-compose.yaml, Caddyfile).

Приклад простого скрипта для бекапу бази даних (backup.sh):


#!/bin/bash
# Налаштування
BACKUP_DIR="/home/deploy/backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
source /home/deploy/n8n-stack/.env

mkdir -p $BACKUP_DIR

# Дамп бази даних
docker compose -f /home/deploy/n8n-stack/docker-compose.yaml exec -t postgres pg_dump -U $POSTGRES_USER $POSTGRES_DB > $BACKUP_DIR/n8n_db_$TIMESTAMP.sql

# Видалення старих бекапів (старше 7 днів)
find $BACKUP_DIR -type f -name ".sql" -mtime +7 -delete
    

Додайте цей скрипт в cron, щоб він запускався щоночі:


# Відкриваємо редактор cron
crontab -e
# Додаємо рядок (запуск о 3 годині ночі)
0 3    /bin/bash /home/deploy/n8n-stack/backup.sh
    

Оновлення n8n: Завдяки Docker, оновлення зводиться до трьох команд:


docker compose pull
docker compose up -d
docker image prune -f
    

9. Troubleshooting + FAQ: вирішення типових проблем

Чому n8n споживає занадто багато оперативної пам'яті?

Node.js за замовчуванням може намагатися зайняти всю доступну пам'ять. Якщо у вас VPS з 2 ГБ RAM, додайте в environment змінну NODE_OPTIONS: --max-old-space-size=1536. Це обмежить використання пам'яті процесом Node.js до 1.5 ГБ, залишаючи місце для PostgreSQL та системи.

Помилка "Database is not migration-ready"

Зазвичай виникає при спробі оновлення n8n на декілька мажорних версій одразу. Рекомендується оновлюватися послідовно або перед оновленням робити повний дамп бази даних. Також перевірте логи PostgreSQL — можливо, базі не вистачило місця на диску для виконання міграцій.

Як підключити n8n до локальної бази даних на тому ж сервері?

Якщо у вас є інша БД поза Docker, використовуйте IP-адресу шлюзу Docker (зазвичай 172.17.0.1) для підключення. Не забудьте налаштувати pg_hba.conf в PostgreSQL, щоб дозволити підключення з підмережі Docker.

Який VPS-конфіг мінімально підійде?

Мінімально можна запустити n8n на 1 vCPU та 2 ГБ RAM. Однак в такій конфігурації варто відключити збереження історії виконань (Execution History) для успішних запусків, щоб не роздувати базу даних та не навантажувати диск. Для комфортної роботи та складних сценаріїв 4 ГБ RAM — це стандарт 2026 року.

Що вибрати — VPS чи dedicated для цієї задачі?

Для 95% задач автоматизації достатньо VPS. Виділений сервер (Dedicated) має сенс тільки якщо ви плануєте використовувати n8n як ETL-інструмент для перекачки терабайтів даних щодня, де критична швидкість дискових операцій та відсутність "шумних сусідів" по процесору.

Проблеми з Webhook: n8n повертає 404 або таймаут

Переконайтеся, що змінна WEBHOOK_URL в .env точно відповідає вашому домену та включає https://. Якщо ви використовуєте тестові вебхуки, пам'ятайте, що вони працюють тільки коли у вас відкрита вкладка з цим воркфлоу в браузері.

rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

10. Висновки та наступні кроки з розвитку системи

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

Куди рухатися далі:

  • Інтеграція з моніторингом: Налаштуйте Prometheus та Grafana для відстеження завантаження CPU та пам'яті вашим n8n-стеком.
  • Черги задач: При дуже високих навантаженнях розгляньте можливість переведення n8n в режим Queue Mode з використанням Redis та окремих Worker-контейнерів.
  • Безпека: Налаштуйте двофакторну аутентифікацію (2FA) в панелі n8n та обмежте доступ до адмін-панелі через IP-фільтри в Caddyfile.

Практична рекомендація: почніть з автоматизації простих рутинних задач, таких як збір повідомлень з різних сервісів в один Telegram-канал, і поступово переходьте до складних бізнес-ланцюжків з обробкою даних.

Поділитися цим записом:

развёртывание n8n на vps: установка через docker, настройка postgresql и ssl для автоматизации процессов
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.