---
title: 'Как развернуть n8n в Docker на сервере с Hestia CP | Zomro'
description: ''
image: 'https://zomro.com/static/site/images/logo/logo-white.png?v=1790950739'
---

![opened image]()

  * [Zomro](https://zomro.com/rus/)
  * [FAQ](https://zomro.com/rus/blog/faq/)
  * Как развернуть n8n в Docker на сервере с Hestia CP 



# Как развернуть n8n в Docker на сервере с Hestia CP

04-07-2025

Размещение n8n в контейнерах Docker обеспечивает изоляцию зависимостей, простое масштабирование и беспроблемные обновления, а панель управления **Hestia CP** берёт на себя заботу о веб‑хостинге, SSL‑сертификатах и резервном копировании. В этой инструкции мы последовательно развернём Docker‑окружение, установим n8n через Docker Compose и подключим его к фронтенду Nginx, управляемому Hestia CP.

#### Зачем сочетать n8n + Docker + Hestia CP

  * **n8n** — мощный инструмент автоматизации (iPaaS), который удобно работать в контейнере.

  * **Docker Compose** изолирует сервисы (PostgreSQL, Redis, n8n-web, n8n-worker) и упрощает обновление.

  * **Hestia CP** закрывает администрирование доменов, почты и SSL, а мы используем её Nginx-фронт вместо того, чтобы публиковать контейнер напрямую.




#### Предварительные требования

Компонент | Минимальная версия | Комментарий  
---|---|---  
Ubuntu 22.04 LTS | – | Проверенные пакеты Docker + systemd  
Hestia CP | 1.8.x | Включён Nginx + Apache (proxy)  
Docker Engine | ≥ 24 | `sudo apt-get install docker-ce docker-ce-cli containerd.io`  
Compose plugin | ≥ 2.x | `sudo apt-get install docker-compose-plugin`  
Домен | `n8n.example.com` | A-/AAAA-запись на IP вашего VPS  
  
## Часть 1. Установка Docker и Docker Compose

> **Целевая ОС:** Ubuntu 22.04 LTS (рекомендована Hestia CP ≥ 1.8)

**Подготовьте репозиторий Docker CE.**
    
    
    sudo apt update && sudo apt install -y \
      ca-certificates curl gnupg lsb-release
    
    # Каталог для ключей APT
    sudo install -m 0755 -d /etc/apt/keyrings
    
    # Добавляем официальный GPG‑ключ
    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
    
    # Файл источника пакетов
    echo "deb [arch=$(dpkg --print-architecture) \
      signed-by=/etc/apt/keyrings/docker.gpg] \
      https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

**Установите движок Docker и дополнительные плагины.**
    
    
    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io \
      docker-buildx-plugin docker-compose-plugin

Docker Compose v2 теперь поставляется как плагин (`docker compose`). Если вам всё ещё нужен самостоятельный бинарник v1, скачайте его отдельно:
    
    
    sudo curl -L \
      https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 \
      -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose

**Добавьте пользователя в группу docker (необязательно, но удобно).**
    
    
    sudo usermod -aG docker $USER
    newgrp docker    # применить изменения сразу

**Проверьте установку.**
    
    
    docker --version        # Docker Engine
    docker compose version  # Compose v2 plugin

Вы должны увидеть актуальные версии без ошибок.

## Часть 2. Подготовка проекта n8n

Следующая структура папок позволит легко бэкапить данные и обновляться без простоев:
    
    
    /opt/n8n/
    ├── docker-compose.yml   # состав сервисов
    ├── .env                 # переменные окружения (защищённые)
    └── volumes/             # постоянные данные
        ├── pg_data/
        ├── redis_data/
        └── n8n_data/

### 

### 

### Создайте каталог и файл переменных
    
    
    mkdir -p /opt/n8n/volumes
    chown -R $USER:$USER /opt/n8n
    cd /opt/n8n
    vim .env       
    chmod 600 .env  

### Создаем` .env`
    
    
    # Версия n8n
    N8N_VERSION=1.101.0
    
    # Внешний URL (обязательно `/` в конце)
    WEBHOOK_URL=https://n8n.example.com/
    GENERIC_TIMEZONE=Europe/Kyiv
    
    # Базовая авторизация
    N8N_BASIC_AUTH_USER=admin
    N8N_BASIC_AUTH_PASSWORD=<СЛУЧАЙНЫЙ_ПАРОЛЬ>
    
    # Postgres
    POSTGRES_USER=n8n
    POSTGRES_PASSWORD=<СЛУЧАЙНЫЙ_ПАРОЛЬ>
    POSTGRES_DB=n8n
    
    # Очереди и шифрование
    N8N_RUNNERS_ENABLED=true
    OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true
    N8N_ENCRYPTION_KEY=$(openssl rand -base64 32)

### 

### 

### Подготовьте `docker-compose.yml`
    
    
    services:
      postgres:
        image: postgres:15-alpine
        restart: unless-stopped
        environment:
          POSTGRES_USER: ${POSTGRES_USER}
          POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
          POSTGRES_DB: ${POSTGRES_DB}
        volumes:
          - pg_data:/var/lib/postgresql/data
        networks: [n8nnet]
    
      redis:
        image: redis:7-alpine
        restart: unless-stopped
        volumes:
          - redis_data:/data
        networks: [n8nnet]
    
      n8n-main:
        image: docker.n8n.io/n8nio/n8n:${N8N_VERSION}
        depends_on: [postgres, redis]
        restart: unless-stopped
        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}
          QUEUE_BULL_REDIS_HOST: redis
          EXECUTIONS_MODE: queue
          N8N_BASIC_AUTH_ACTIVE: "true"
          N8N_BASIC_AUTH_USER: ${N8N_BASIC_AUTH_USER}
          N8N_BASIC_AUTH_PASSWORD: ${N8N_BASIC_AUTH_PASSWORD}
          WEBHOOK_URL: ${WEBHOOK_URL}
          GENERIC_TIMEZONE: ${GENERIC_TIMEZONE}
          N8N_SECURE_COOKIE: "true"
          N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
          N8N_HOST: n8n.example.com
          N8N_PORT: 5678
          N8N_RUNNERS_ENABLED: "true"
          OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS: "true"
          N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
        volumes:
          - n8n_data:/home/node/.n8n
        ports:
          - "127.0.0.1:5678:5678"   # доступ только с localhost
        networks: [n8nnet]
    
      n8n-worker:
        image: docker.n8n.io/n8nio/n8n:${N8N_VERSION}
        depends_on: [postgres, redis]
        restart: unless-stopped
        command: worker
        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}
          QUEUE_BULL_REDIS_HOST: redis
          EXECUTIONS_MODE: queue
          GENERIC_TIMEZONE: ${GENERIC_TIMEZONE}
          N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
          N8N_RUNNERS_ENABLED: "true"
          N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
        networks: [n8nnet]
    
    volumes:
      pg_data:
      redis_data:
      n8n_data:
    
    networks:
      n8nnet:

### 

### 

### Запуск сервисов
    
    
    cd /opt/n8n
    docker compose pull         # Скачать (или обновить) образы
    docker compose up -d        # Запустить в фоне
    docker compose logs -f n8n-main   # Следить за стартом

Проверка:
    
    
    docker compose ps        # все контейнеры должны быть в состоянии Up

## 

## Часть 3. Интеграция с Hestia CP / Nginx

  1. **Web → Add Web Domain** → укажите `n8n.example.com`, включите «Enable SSL» и «Force SSL».

  2. Сгенерируйте сертификат Let’s Encrypt.

  3. В панели Hestia перейдите **Web → Edit** → «SSL Certificates» и убедитесь, что ключи появились.

  4. **Откройте интерфейс** по адресу `https://n8n.example.com` — браузер запросит логин и пароль Basic Auth, затем загрузится UI n8n.




### **Шаблон Nginx для проксирования**

Создайте кастомный шаблон, чтобы при обновлениях Hestia не перезаписала конфиг:
    
    
    
     
    
    
    sudo mkdir -p /usr/local/hestia/data/templates/web/nginx/n8n
    sudo vim /usr/local/hestia/data/templates/web/nginx/n8n/n8n.tpl        # HTTP
    sudo vim /usr/local/hestia/data/templates/web/nginx/n8n/n8n.stpl       # HTTPS
    

**Содержимое`n8n.stpl` (SSL-вариант):**
    
    
    server {
        listen      %ip%:%proxy_ssl_port% ssl;
        server_name %domain_idn%;
    
        ssl_certificate     %ssl_pem%;
        ssl_certificate_key %ssl_key%;
        include             %home%/%user%/conf/web/%domain%/nginx.hsts.conf*;
    
        # WebSocket & HTTP
        location / {
            proxy_pass http://127.0.0.1:5678;
            proxy_http_version 1.1;
            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_read_timeout 86400;
        }
    
        # Скрываем служебные файлы
        location ~ /\.(?!well-known\/|file) { deny all; }
    
        location /error/ {
            alias %docroot%/document_errors/;
        }
    }

**Содержимое`n8n.tpl` (вариант без SSL):**
    
    
    server {
        listen      %ip%:%proxy_port%;
        server_name %domain_idn%;
    
        include             %home%/%user%/conf/web/%domain%/nginx.forcessl.conf*;
    
        # WebSocket & HTTP
        location / {
            proxy_pass http://127.0.0.1:5678;
            proxy_http_version 1.1;
            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_read_timeout 86400;
        }
    
        # Скрываем служебные файлы
        location ~ /\.(?!well-known\/|file) { deny all; }
    
        location /error/ {
            alias %docroot%/document_errors/;
        }
    }
    

> **Важно:** HTTP-шаблон (`n8n.tpl`) может просто принудительно переадресовать на HTTPS (`include nginx.forcessl.conf*;`).

Примените шаблон в панели Hestia (**Web → Edit Web Domain → Advanced Options → Backend Template**).

Перезапустите стек Hestia, чтобы подхватить новый шаблон:
    
    
    
     
    
    
    systemctl restart hestia
    

### **Заключение**

Связка **Hestia CP** \+ **Docker Compose** даёт чистое разделение ролей:

  * Hestia отвечает за **HTTP(S)** , SSL, почту и удобную панель для разработчика.

  * Docker — за «живучие» сервисы (Postgres, Redis, n8n-main, n8n-worker), которые можно масштабировать, обновлять и бэкапить без риска тронуть окружение системы.




Следуя шагам выше, вы получите **надёжную, масштабируемую и безопасную** установку n8n, готовую обслуживать как тестовые прототипы, так и продакшен-автоматики.

##### 

Похожие статьи

[Как развернуть сайт на cPanel](https://zomro.com/rus/blog/faq/192-kak-razvernut-sajt-na-cpanel) [Windows: Как переименовать пользователя Administrator](https://zomro.com/rus/blog/faq/91-windows-kak-pereimenovat-polzovatelja-administrator) [Как в cPanel изменять и добавлять DNS-записи](https://zomro.com/rus/blog/faq/179-dns-v-cpanel) [Как сменить язык в Windows Server 2012](https://zomro.com/rus/blog/faq/275-kak-smenit-jazyk-v-windows-2012) [Файлы .htaccess: универсальные настройки для популярных CMS](https://zomro.com/rus/blog/faq/587-htaccess-files-universal-settings-for-popular-cmss)

[ Выделенные серверы от €88.80/мес ](/rus/dedicated-servers)
