Установка n8n в Docker и настройка docker-compose.yml
Разворачиваем n8n на своём сервере в Docker: от установки зависимостей до запуска, редактирования docker-compose.yml и настройки SSL и API
Каждый разработчик рано или поздно приходит к моменту, когда ему нужно связать между собой базу данных, отправку писем и условный ChatGPT. Сначала для этого пишется один скрипт на Python, потом второй, а через месяц вы стоите посреди самописных костылей, которые падают от любой проблемы с API. Сторонние SaaS-платформы автоматизации вроде Zapier или Make могут помочь, но это лишние траты на подписку, да и проверку от безопасников они банально не пройдут: «Никаких данных наших клиентов на зарубежных серверах».
В этот момент хочется, чтобы все сервисы просто общались друг с другом сами, без вашего ежедневного участия и без слива конфиденциальной информации наружу.
Именно это предлагает n8n — мощная open-source платформа, которая сочетает в себе гибкость написания кода и скорость no-code визуальных конструкторов. С ней можно объединить приложения, базы и нейросети в единые цепочки через более чем 400 готовых интеграций, сохраняя полный контроль над процессами.
Один из лучших способов использовать n8n — развернуть его локально на своем железе.
Такой подход гарантирует высокий уровень защиты по сравнению с зарубежными облаками, ведь вся конфиденциальная информация останется внутри вашего периметра. Кроме того, self-hosted решение позволяет полностью кастомизировать инструмент: добавлять любые интеграции и гибко подстраивать его под свои задачи.
В этой статье мы подробно разберем, как развернуть n8n с помощью Docker и Docker-compose и настроить безопасный доступ к сервису.
Перед установкой
Перед началом развертывания необходимо убедиться, что устройство соответствует минимальным системным требованиям:
- оперативная память — от 2 ГБ (но рекомендуем использовать 4–8 ГБ RAM);
- процессор — 2 vCPU;
- дисковое пространство — ≥ 20 ГБ
Дальнейшие шаги мы разберем для разных операционных систем. Вне зависимости от того, разворачиваете ли вы сервис в изолированном контуре на сервере с Linux или подготавливаете окружение на Windows/macOS, базовым инструментом будет Docker. Однако процесс его установки отличается.
Для развертывания n8n через Docker, нужно предварительно его установить.
На Linux Docker и плагин Docker Compose устанавливаются через официальный скрипт одной командой:
curl -fsSL https://docker.com -o get-docker.sh && sh get-docker.sh
На Windows и macOS для работы с контейнерами используется официальный инсталлятор Docker Desktop. Все необходимые компоненты, включая Docker Compose, уже входят в его состав.
Когда окружение готово, можно переходить к созданию конфигурационных файлов n8n.
Установка n8n в Docker
Linux
Самый быстрый способ запустить n8n и познакомиться с ним — поднять одиночный контейнер. Для начала создадим Docker-том (volume), чтобы данные ваших сценариев автоматизации сохранялись при перезапусках:
docker volume create n8n_data
Эта команда создает том для хранения постоянных данных. Вместо «n8n_data» можно использовать любое название.
Далее нужно выполнить команду, которая установит необходимый образ n8n и запустит контейнер.
docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
В результате выполнения команды по адресу http://localhost:5678 (или по публичному IP-адресу вашего сервера) откроется графический интерфейс n8n, где платформа предложит настроить учетную запись администратора.

Windows/MacOS
Для развертывания n8n на Windows или MacOS необходимо открыть Docker Desktop. Затем выполнить в командной строке или PowerShell для Windows следующую команду для создания тома для хранения постоянных данных. Название «n8n_data» можно заменить на любое другое.
docker volume create n8n_data
Далее выполняем команду для установки образа n8n и запуска контейнера.
docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
После завершения выполнения команды, переходим по адресу http://localhost:5678, где теперь отображается графический интерфейс n8n с регистрацией пользователя.
Настройки n8n в docker-compose.yml
Еще один способ развертывания n8n — с помощью docker-compose. Docker compose позволяет запускать приложения, состоящие из множества контейнеров, одной командой в терминале. Вся конфигурация для приложения хранится в файле docker-compose.yaml, что обеспечивает прозрачность работы инструмента.
Также docker compose автоматически создает общую изолированную сеть для всех контейнеров, позволяя им общаться друг с другом по именам сервисов.
Linux/Windows/MacOS
Для начала создадим базовый файл под названием docker-compose.yaml, в котором установим образ (image) n8n и запустим инструмент в локальной сети с портом 5678:
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_HOST=127.0.0.1
- N8N_PORT=5678
- N8N_PUBLIC_API_DISABLED=false
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
На данный момент в конфигурации создается один контейнер для n8n, в будущем в файл docker-compose.yaml можно будет добавить дополнительные сервисы.
Перед запуском docker compose на устройствах на базе Windows и MacOS необходимо запустить Docker Desktop. Для устройств на базе Linux никаких дополнительных действий не требуется.
Запускаем контейнер командой:
docker compose up -d
По адресу http://localhost:5678 (при локальном развертывании) или по внешнему IP-адресу вашего сервера графический интерфейс n8n станет доступен для настройки и авторизации.
Настройка доступа к API
Для получения API-ключа n8n перейдите в графический интерфейс n8n и зайдите по пути Settings → n8n API. В этом разделе нужно создать API ключ и настроить нужные параметры (срок действия ключа и разделы n8n, к которым дает доступ этот ключ).

Для проверки работоспособности введите следующую команду терминал, заменив https://n8n.example.com на свой адрес и впиcав полученный API-ключ. В случае, если вы разворачиваете n8n в локальной сети, впишите адрес http://localhost:5678.
curl https://n8n.example.com/api/v1/workflows \
-H "X-N8N-API-KEY: ваш_ключ"
В результате выполнения в терминале выведется информация о существующих workflow.
Также n8n предоставляет встроенную интерактивную документацию Swagger UI. С помощью которой можно отправлять запросы в браузере без использования команд в терминале. Для входа введите https://n8n.example.com/api/v1/docs в браузере, заменив n8n.example.com на свой адрес.
Настройка SSL и доступ к серверу по HTTPS
Для настройки безопасного доступа к n8n по протоколу HTTPS используется обратный прокси-сервер (например, Nginx, Traefik, Caddy). Он принимает защищенный трафик на порту 443, проверяет SSL-сертификаты и передает запросы внутрь изолированных контейнеров по протоколу HTTP.
Перед запуском n8n с протоколом HTTPS нужно убедиться, что на устройстве выполнены следующие условия:
- у вас есть собственный домен или поддомен (например, n8n.example.com);
- в DNS-панели вашего домена настроена A-запись, указывающая на публичный IP-адрес вашего сервер;
- на сервере открыты порты 80 (HTTP) и 443 (HTTPS) — они необходимы для выпуска SSL-сертификата.
В качестве обратного прокси-сервера мы выберем Traefik. Он отлично интегрируется с Docker и умеет автоматически получать и обновлять бесплатные SSL-сертификаты от Let’s Encrypt.
Создаем файл .env с важными переменными для конфигурации n8n. Для примера возьмем n8n.example.com, который нужно заменить на свой домен. В строчку SSL_EMAIL впишите свой email-адрес.
DOMAIN_NAME=example.com
SUBDOMAIN=n8n
SSL_EMAIL=ваша_почта@example.com
Далее создаем файл docker-compose.yaml
services:
traefik:
image: "traefik:latest"
restart: always
command:
- "--api=false"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
- "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
- "--certificatesresolvers.mytlschallenge.acme.storage=//6ef4e6a1-9d49-47ac-bfed-170f67a815cf.selcdn.net/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- traefik_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
labels:
- traefik.enable=true
- traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
- traefik.http.routers.n8n.tls=true
- traefik.http.routers.n8n.entrypoints=web,websecure
- traefik.http.routers.n8n.tls.certresolver=mytlschallenge
- traefik.http.middlewares.n8n.headers.SSLRedirect=true
- traefik.http.middlewares.n8n.headers.STSSeconds=315360000
- traefik.http.middlewares.n8n.headers.browserXSSFilter=true
- traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
- traefik.http.middlewares.n8n.headers.forceSTSHeader=true
- traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
- traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
- traefik.http.middlewares.n8n.headers.STSPreload=true
- traefik.http.routers.n8n.middlewares=n8n@docker
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- N8N_RUNNERS_ENABLED=true
- N8N_BLOCK_ENV_ACCESS_IN_NODE=true
- N8N_SECURE_COOKIE=true
- N8N_PUBLIC_API_DISABLED=false
volumes:
- n8n_data:/home/node/.n8n
volumes:
traefik_data:
n8n_data:
Запускаем контейнеры командой:
docker compose up -d
Переходим по указанному в файле .env адресу (в примере https://n8n.example.com), где уже запущен n8n.
Чтобы сразу протестировать возможности системы и ИИ-агентов, вы можете использовать готовые цепочки блоков (workflows). Посмотрите, как выглядят настроенные сценарии на практике.

Интеграция ИИ с базой данных. Сценарий связывает Ollama Chat Model с базой Postgres для ведения контекстного диалога на основе ваших данных.

Интеграция ИИ для парсинга сайтов. Сценарий принимает веб-ссылку, извлекает контент и отправляет его на анализ нейросети.
Чем может помочь Selectel
Зачастую мощности личного компьютера не хватает для плавной работы n8n. В этом случае пользователь может арендовать облачный сервер в панели управления Selectel и сконфигурировать его в соответствии с минимальными требованиями n8n.
В случае, когда не хочется погружаться в установку и настройку n8n, пользователь может воспользоваться продуктом AI-маркетплейс и арендовать сервер с уже установленным и запущенным n8n на отдельной виртуальной машине, которая полностью соответствует требованиям. Остается только перейти по ссылке в GUI и начинать работу с инструментом.
Заключение
В итоге мы получаем мощную платформу, которая берет на себя всю рутину по интеграции сервисов. В n8n удобно настраивать логику: вы просто связываете задачи на экране, и они выполняются последовательно или по заданным условиям. Запуская n8n на своих мощностях, вы полностью контролируете безопасность данных и настраиваете инструмент так, как нужно именно вашему проекту.