Пошаговые инструкции Для начинающих 14 мин

Как установить n8n локально через Docker и сохранить данные

Локальный n8n на Windows: Docker Compose, первый workflow, постоянный том, перезапуск, резервная копия и восстановление в отдельном экземпляре.

n8n Docker Пошаговые инструкции

Установим n8n на своем компьютере через Docker Compose. Получим локальный редактор, сделаем workflow из двух узлов и проверим, что он остается после пересоздания контейнера. Затем сохраним резервную копию и восстановим ее отдельно, не поверх исходных данных.

Что получится в конце

n8n будет открываться по адресу http://localhost:5679 только на вашем компьютере. Ручной workflow first-run вернет три поля: status, message и source. Данные n8n будут храниться в именованном томе, а резервная копия — в отдельной папке. Восстановленный экземпляр проверим на localhost:5680.

Это инструкция для учебного локального запуска на Windows с PowerShell. Она не открывает n8n в интернет и не настраивает сервер для круглосуточной работы. AI-модель пока не подключаем: сначала проверяем саму установку. Публичные webhooks, отправка сообщений и платные API не нужны.

Что понадобится

Нужны компьютер с поддерживаемой Docker Desktop версией Windows, включенной аппаратной виртуализацией, интернет для скачивания образов и свободное место на диске. Подготовьте обычный редактор текста, браузер и пароль для локального аккаунта n8n. Требования Docker и условия его лицензии проверьте перед установкой; установка программы и доступность платных функций n8n — разные вопросы.

Официальная установка Docker Desktop на Windows

Шаг 1. Установите и запустите Docker Desktop

Скачайте Docker Desktop с официального сайта и пройдите установку. Используйте Linux containers с поддерживаемым WSL 2 backend. Если установщик просит обновить WSL или перезагрузить компьютер, завершите эти действия перед продолжением. Не меняйте настройки BIOS наугад: при отключенной виртуализации следуйте инструкции производителя компьютера.

Откройте Docker Desktop и дождитесь работающего движка. Наличие ярлыка и команды docker еще не означает, что контейнеры могут запускаться. На Linux нужен Docker Engine и Compose plugin; дальнейшие команды управления контейнерами похожи, но команды PowerShell для папок и путей нужно заменить.

Шаг 2. Проверьте движок и Compose

powershell
docker version
docker compose version

В docker version должны быть разделы Client и Server. Ошибка про dockerDesktopLinuxEngine означает, что клиент установлен, но движок недоступен. Сначала запустите Docker Desktop и проверьте выбранный контекст. Не продолжайте установку n8n, пока команда не видит Server.

Нужна актуальная команда docker compose без дефиса. Не устанавливайте старый docker-compose только потому, что он встречается в давнем уроке. Если команда не найдена, обновите или исправьте установку Docker по официальной инструкции.

Шаг 3. Создайте отдельную папку проекта

powershell
New-Item -ItemType Directory -Path "$HOME/n8n-local"
Set-Location "$HOME/n8n-local"

Если папка уже существует, сначала проверьте ее содержимое и не перезаписывайте чужой Compose-файл. Все следующие команды выполняйте из этой папки. Имя проекта и тома ниже относятся только к учебной установке; не используйте их для существующего рабочего n8n.

Шаг 4. Создайте compose.yml

В редакторе создайте файл compose.yml с содержимым ниже. Убедитесь, что Windows не добавила расширение .txt. Отступы в YAML делайте пробелами, не табуляцией.

yaml
name: ezgpt-n8n-local
services:
  n8n:
    image: n8nio/n8n:2.42.4
    restart: unless-stopped
    ports:
      - "127.0.0.1:5679:5678"
    environment:
      TZ: Asia/Yekaterinburg
      GENERIC_TIMEZONE: Asia/Yekaterinburg
      N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
    volumes:
      - n8n_data:/home/node/.n8n
volumes:
  n8n_data:
    name: ezgpt_n8n_local_data

На дату подготовки, 8 октября 2026 года, официальный стабильный релиз — 2.42.4. В примере закреплена эта версия, а не плавающий latest. Если читаете позже, проверьте актуальный стабильный релиз и изменения перед установкой. Не подставляйте beta в учебную конфигурацию без необходимости.

Стабильные релизы n8n

Порт 5679 на компьютере направлен на 5678 внутри контейнера. Префикс 127.0.0.1 ограничивает доступ этим компьютером; не заменяйте его на 0.0.0.0 ради удобства. Для корректной изоляции используйте современный Docker Engine: документация предупреждает об особенностях localhost-портов у старых версий до 28.0.0.

Публикация портов и привязка к localhost

Том ezgpt_n8n_local_data смонтирован в /home/node/.n8n. Для простой установки с SQLite там находятся база и конфигурация, включая ключ шифрования. Не задаем общий ключ из статьи: n8n создаст свой и сохранит его в томе. Именованный том — не резервная копия: его потеря означает потерю этих данных.

Именованные тома в Compose

Папка данных и ключ шифрования n8n

Это минимальная конфигурация редактора, не полный стек n8n Assistant. Для Assistant, песочницы и выполнения пользовательского кода нужны отдельная настройка и проверка безопасности. Старый N8N_RUNNERS_ENABLED из примеров n8n 1.x здесь не добавляем; наше упражнение не использует Code node.

Официальные варианты установки и расширенный Compose-стек

Шаг 5. Проверьте файл до запуска

powershell
docker compose config --quiet
docker compose config

Первая команда должна завершиться без ошибки. Вторая показывает итоговую конфигурацию: проверьте образ, localhost-порт и том. Это проверка YAML и настроек, а не доказательство успешного запуска приложения.

Что проверяет docker compose config

Перед первым запуском проверьте, не существует ли уже том с нашим именем:

powershell
docker volume ls --filter "name=^ezgpt_n8n_local_data$" --format "{{.Name}}"

Если найден существующий том, остановитесь и выясните, чей он. Не удаляйте его. Для другого учебного проекта выберите другое имя тома в compose.yml и используйте это же имя во всех командах копирования. Если порт 5679 занят, выберите свободный порт и замените адрес в дальнейших проверках.

Шаг 6. Скачайте образ и запустите n8n

powershell
docker compose pull
docker compose up -d
docker compose ps

Дождитесь завершения pull без ошибки. Затем up создаст контейнер и том; ps покажет сервис n8n. Первый запуск может потребовать времени на инициализацию. Если скачивание закончилось EOF, TLS-ошибкой или timeout, образ еще не установлен: проверьте сеть, настройки прокси Docker и повторите после восстановления. Не отключайте проверку сертификатов.

Шаг 7. Проверьте готовность редактора

powershell
docker compose logs --tail 50 n8n
curl.exe --fail --max-time 10 http://localhost:5679/healthz
docker compose exec n8n n8n --version

Откройте http://localhost:5679 в браузере на том же компьютере. Проверка /healthz показывает, что процесс отвечает; окончательная проверка — открывшийся редактор и выполненный workflow. Версия должна соответствовать установленному образу. Пока служба запускается, запрос может не проходить; сначала прочитайте логи.

Для Windows используем curl.exe, чтобы не спутать его с псевдонимом PowerShell. На Linux и macOS обычно достаточно curl. Если появилась ошибка secure cookie, проверьте, что открыт именно localhost и нет неожиданного прокси. Не отключайте защиту cookie для будущей публичной установки.

Шаг 8. Создайте владельца локального экземпляра

При первом открытии заполните форму настройки владельца: email, имя и новый надежный пароль. Это локальный аккаунт вашего n8n, а не пароль от n8n Cloud. Введите сведения самостоятельно, не используйте демонстрационный пароль из интернета. Если форма просит согласие с условиями, прочитайте их до подтверждения.

Начальные вопросы о работе с сервисом могут отличаться по версии. На экране предложения n8n Assistant выберите Set up later in Settings: для двух учебных узлов Assistant, платный тариф и подключение модели не нужны. Проверка: после настройки открывается Overview со списком workflows или предложением Build a workflow.

Шаг 9. Создайте first-run с Manual Trigger

В Overview нажмите Build a workflow или создайте workflow через меню +. Нажмите на название My workflow сверху, замените его на first-run и подтвердите Enter. На полотне нажмите Add first step и выберите Trigger manually. Узел Manual Trigger появляется с подписью When clicking Execute workflow. Он начинает выполнение вручную, без расписания и входящего запроса.

Ручной запуск через Manual Trigger

Не выбирайте Webhook или Schedule Trigger для первого теста. Нам нужен запуск, который не отправляет данные наружу и не срабатывает самостоятельно. На полотне должен остаться один стартовый узел.

Шаг 10. Добавьте Edit Fields и получите результат

После Manual Trigger добавьте Edit Fields (Set): нажмите + на выходе первого узла или Open nodes panel, найдите Edit Fields и выберите его. Проверьте линию соединения между узлами. В настройке Mode выберите JSON; документация называет этот режим JSON Output. Вставьте следующий объект в поле JSON:

json
{
  "status": "ok",
  "message": "n8n runs locally",
  "source": "manual-test"
}

Оставьте значения фиксированными, без выражений и API-ключей. Вернитесь на полотно и выполните workflow через Execute Workflow. Откройте выход Edit Fields: должен появиться один item с этими тремя полями. Здесь нет AI: это намеренно простой тест установки.

Настройки JSON Output узла Edit Fields

Если кнопка выполнения называется иначе в вашей версии, используйте ручной запуск на полотне, а не публикацию. Красный узел означает ошибку: прочитайте сообщение и проверьте JSON на запятые, кавычки и лишний текст.

Шаг 11. Сохраните workflow и экспортируйте его

Сохраните first-run. В зависимости от версии редактор использует Save или автосохранение: убедитесь, что нет несохраненных изменений, вернитесь в список и откройте workflow повторно. Выполните его еще раз. Для Manual Trigger публикация не нужна.

Через меню с тремя точками рядом с названием workflow выберите Export JSON и скачайте файл в папку проекта как first-run.json. Откройте его в редакторе и найдите имя, оба узла и связь между ними. Это переносимый файл схемы, не полная резервная копия базы, аккаунта и ключа шифрования.

Экспорт и импорт workflow

Шаг 12. Проверьте сохранность после пересоздания

Из папки исходного проекта выполните команды ниже. down остановит и удалит контейнер проекта и его сеть; именованный том без флага удаления остается. Затем создадим контейнер заново из того же файла.

powershell
docker compose down
docker compose up -d
docker compose ps

Не добавляйте -v или --volumes, не запускайте docker volume prune. Для этой проверки данные должны остаться в прежнем томе. Откройте localhost:5679, войдите тем же аккаунтом, найдите first-run и снова получите status: ok. Запишите результат проверки, а не только факт запуска контейнера.

Что удаляет docker compose down

Шаг 13. Сделайте холодную резервную копию

Ниже копируем весь том простой SQLite-установки, а не только workflow. Сначала скачайте официальный вспомогательный образ Alpine. Потом создайте новую папку для копии, остановите запись в базу и упакуйте том в архив.

powershell
docker pull alpine:3
if ($LASTEXITCODE -ne 0) { throw "Alpine download failed" }
$backupDir = Join-Path (Get-Location) ("backup-" + (Get-Date -Format "yyyyMMdd-HHmmss"))
New-Item -ItemType Directory -Path $backupDir -ErrorAction Stop
docker compose stop n8n
if ($LASTEXITCODE -ne 0) { throw "n8n stop failed; do not copy a running database" }
docker run --rm --mount type=volume,source=ezgpt_n8n_local_data,target=/data,readonly --mount "type=bind,source=$backupDir,target=/backup" alpine:3 tar -czf /backup/n8n-data.tar.gz -C /data .
$backupExit = $LASTEXITCODE
docker compose start n8n
$startExit = $LASTEXITCODE
if ($backupExit -ne 0) { throw "Backup failed; check n8n startup" }
if ($startExit -ne 0) { throw "n8n startup failed; inspect logs" }
$archive = Get-Item (Join-Path $backupDir "n8n-data.tar.gz") -ErrorAction Stop
if ($archive.Length -eq 0) { throw "Empty backup archive" }
Copy-Item -LiteralPath ./compose.yml -Destination $backupDir -ErrorAction Stop

Переменная $backupDir нужна в том же окне PowerShell. При ошибке tar копия не подтверждена; n8n все равно нужно запустить обратно и проверить. Архив должен существовать и быть ненулевого размера. В нем ожидаются config и файл базы SQLite; не показывайте содержимое config публично.

Резервное копирование томов Docker

Архив содержит чувствительные настройки и ключ, поэтому храните его закрыто, с отдельной копией вне этого компьютера. Если используете PostgreSQL или внешнее хранилище, этот архив уже не является полной копией: нужны резервные копии этих систем. JSON одного workflow не заменяет архив базы.

Что входит в полную резервную копию n8n

Шаг 14. Восстановите копию отдельно и проверьте

Не проверяйте восстановление поверх исходного тома. Убедитесь, что имя ezgpt_n8n_restore_data еще не используется:

powershell
docker volume ls --filter "name=^ezgpt_n8n_restore_data$" --format "{{.Name}}"

Если команда нашла том, остановитесь: он может содержать данные предыдущего теста. Используйте новое имя и замените его во всех командах восстановления и в новом Compose-файле. Для пустого нового тома выполните:

powershell
docker volume create ezgpt_n8n_restore_data
if ($LASTEXITCODE -ne 0) { throw "Restore volume creation failed" }
docker run --rm --mount type=volume,source=ezgpt_n8n_restore_data,target=/restore --mount "type=bind,source=$backupDir,target=/backup,readonly" alpine:3 tar -xzf /backup/n8n-data.tar.gz -C /restore
if ($LASTEXITCODE -ne 0) { throw "Restore failed" }

В той же папке создайте compose.restore.yml. В нем другой проект, другой порт и другой том; исходный экземпляр не изменяется. external: true означает, что том уже создан командой выше, а Compose только подключает его.

yaml
name: ezgpt-n8n-restore
services:
  n8n:
    image: n8nio/n8n:2.42.4
    restart: unless-stopped
    ports:
      - "127.0.0.1:5680:5678"
    environment:
      TZ: Asia/Yekaterinburg
      GENERIC_TIMEZONE: Asia/Yekaterinburg
      N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
    volumes:
      - n8n_data:/home/node/.n8n
volumes:
  n8n_data:
    name: ezgpt_n8n_restore_data
    external: true
powershell
docker compose -f compose.restore.yml config --quiet
docker compose -f compose.restore.yml up -d

Откройте http://localhost:5680. Полная копия должна позволять войти прежним аккаунтом и открыть first-run. Запустите его и проверьте три поля. Повторная форма создания владельца вместо прежнего входа — повод проверить архив и том, а не создавать нового владельца поверх предполагаемого восстановления.

После успешной проверки остановите восстановленный тест. Его том оставьте до завершения проверки копии; никаких других контейнеров эти команды не касаются.

powershell
docker compose -f compose.restore.yml stop n8n

Минимальная проверка результата

  • localhost:5679 открывает ваш n8n, порт опубликован только на 127.0.0.1.
  • first-run возвращает один item: status=ok, message=n8n runs locally, source=manual-test.
  • После down и нового up аккаунт и workflow сохранились.
  • Архив сделан при остановленном n8n и не содержит ошибок создания.
  • На localhost:5680 из отдельного восстановленного тома открываются прежний аккаунт и first-run; workflow снова выполняется.

Как обновлять и чего не делать

Перед обновлением сделайте и проверьте резервную копию, прочитайте изменения между версиями, затем замените тег образа в compose.yml на выбранный стабильный. Выполните pull и up -d, проверьте логи, вход и тестовый workflow. Простое возвращение старого тега не гарантирует откат базы после миграций; для отката нужна совместимая копия.

Не открывайте редактор в интернет без HTTPS, управления доступом и отдельной настройки сервера. Не монтируйте Docker socket в n8n, не добавляйте privileged ради первого workflow. Не импортируйте незнакомые схемы с реальными credentials и не включайте автоматическую отправку сообщений до проверки.

Если что-то не получилось

Server не виден: запустите Docker Desktop и проверьте контекст. pull падает: проверьте сеть и прокси, не отключайте TLS. Порт занят: выберите свободный localhost-порт в файле и адресе браузера. Контейнер постоянно перезапускается: прочитайте docker compose logs --tail 100 n8n.

После пересоздания пустой редактор: сверяйте имя тома, mount /home/node/.n8n и выбранный Compose-проект. Не создавайте новый аккаунт сразу и не удаляйте старые тома. Восстановление не расшифровывает credentials: проверьте сохранность исходного ключа. На Windows отказ в доступе к backup-папке исправляйте через доступ Docker к этой конкретной папке, а не открытие всего диска.

Что проверено при подготовке

8 октября 2026 года на Docker Engine 29.7.2 и Compose 5.4.0 запущен n8n 2.42.4. Владелец настроен пользователем. Workflow создан в редакторе и вернул три поля; после пересоздания контейнера схема сохранилась и снова выполнилась. Холодная копия полного тома восстановлена отдельно; экспорт восстановленной схемы совпадает с исходным.

В восстановленной копии также проверены вход прежним аккаунтом и повторное выполнение workflow. Экспорт схемы дополнительно проверен через CLI; пункт Export JSON виден в редакторе, но завершенное скачивание через браузер в этом проходе не подтверждено.

Частые вопросы

Можно ли установить n8n бесплатно?

Для учебного запуска используются self-hosted n8n и локальный Docker. Условия лицензии Docker Desktop и доступность функций n8n проверьте для своей организации. Подписка n8n Cloud и платная AI-модель для двух тестовых узлов не нужны.

Где хранятся workflows и аккаунт?

В этой конфигурации данные простой SQLite-установки находятся в томе ezgpt_n8n_local_data, смонтированном в /home/node/.n8n. Папка проекта содержит конфигурацию, но не сам том. Для восстановления нужны данные и ключ, а не только compose.yml.

Можно ли выключать компьютер?

Да, локальные workflows не выполняются, пока компьютер и Docker выключены. После запуска Docker проверьте контейнер и редактор. Политика restart не заменяет постоянно работающий сервер и не гарантирует выполнение пропущенных заданий.

Почему Telegram или внешний сервис не видит localhost?

localhost означает компьютер, на котором выполняется запрос. Внешний сервис не может отправить webhook в ваш локальный редактор по этому адресу. Для такого сценария нужен отдельно настроенный доступный HTTPS-endpoint, а не замена 127.0.0.1 на публичный интерфейс без защиты.

Можно ли восстановиться из JSON workflow?

JSON возвращает схему, но не всю установку: аккаунты, история и ключ шифрования в него не входят. Для описанного восстановления нужна холодная копия полного тома и конфигурация. Для PostgreSQL и внешних файлов дополнительно нужны их отдельные копии.

Дальше по теме

Похожие материалы