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

Для локального n8n достаточно Docker Compose и постоянного тома с данными. Контейнер можно пересоздать, а workflows и credentials должны сохраниться. В этом руководстве настроим новое окружение на компьютере, сделаем резервную копию и разберём подключение HTTPS.
Если n8n уже установлен, не заменяйте его конфигурацию этим примером: сначала выясните, где хранятся данные и какая база используется. Ниже — один контейнер со стандартной SQLite, без внешнего PostgreSQL и очереди workers.
Подготовка
Установите Docker по официальной инструкции, запустите его и проверьте:
docker version
docker compose version
На Windows используйте Docker с Linux-контейнерами. Команды архивирования ниже с перенаправлением бинарных данных выполняйте в Bash, например в WSL; не копируйте их в старый Windows PowerShell. Для macOS и Linux подойдёт обычный терминал.
Создайте отдельную папку проекта:
mkdir n8n-local
cd n8n-local
Compose-файл с постоянным томом
Сохраните в compose.yaml:
name: n8n-local
services:
n8n:
image: docker.n8n.io/n8nio/n8n:2.35.0
restart: unless-stopped
ports:
- "127.0.0.1:5678:5678"
environment:
GENERIC_TIMEZONE: Europe/Moscow
TZ: Europe/Moscow
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Версия закреплена для воспроизводимости примера. Перед установкой для реальных задач проверьте поддерживаемую версию и изменения в официальных релизах n8n. Не используйте два независимых окружения с одним именем проекта и одним томом.
Порт привязан к 127.0.0.1: редактор доступен с этого компьютера. Том n8n_data подключён к каталогу состояния n8n. Если вы задаёте собственный N8N_ENCRYPTION_KEY, храните его резервную копию отдельно от контейнера и не меняйте при обновлении.
Первый запуск и проверка сохранения
docker compose config --quiet
docker compose up -d
docker compose ps
docker compose logs --tail=50 n8n
curl -i http://127.0.0.1:5678/healthz
После запуска откройте http://localhost:5678, создайте владельца и тестовый workflow с понятным именем, например «Проверка сохранения». Сохраните его. Затем пересоздайте контейнер:
docker compose up -d --force-recreate n8n
Войдите снова и убедитесь, что workflow остался. Пересоздание контейнера отличается от удаления тома: не добавляйте -v к docker compose down, если хотите сохранить данные.
Резервная копия SQLite-окружения
Дождитесь завершения важных выполнений и остановите n8n. Затем создайте архив всего каталога данных через одноразовый контейнер того же сервиса:
docker compose stop n8n
docker compose run --rm --no-deps -T --entrypoint tar n8n -C /home/node/.n8n -czf - . > n8n-backup.tgz
tar -tzf n8n-backup.tgz
docker compose up -d n8n
Каждый раз используйте новое имя архива: перенаправление > перезаписывает существующий файл. Проверяйте код завершения команды и содержимое архива. Остановка исключает запись SQLite во время копирования. Архив содержит чувствительные данные окружения: храните его вне публичной папки и репозитория, вместе с копией Compose-файла и сведениями о версии.
Для проверки восстановления создайте новую пустую папку, скопируйте туда compose.yaml и архив, измените name на n8n-restore-check, а внешний порт на 127.0.0.1:5679:5678. Из этой новой папки выполните:
docker compose run --rm --no-deps -T --entrypoint tar n8n -C /home/node/.n8n -xzf - < n8n-backup.tgz
До запуска восстановленной копии отключите её автоматические workflow, чтобы не повторить реальные события:
docker compose run --rm --no-deps -T n8n unpublish:workflow --all
docker compose up -d n8n
Откройте http://localhost:5679, проверьте вход и сохранённый workflow. Не подключайте этой копии рабочий webhook. Архив для PostgreSQL требует отдельного бэкапа базы; копии .n8n для такого развёртывания недостаточно. Команды управления workflows описаны в CLI n8n.
Обновление
Сначала сделайте и проверьте резервную копию. Изучите изменения целевой версии, поменяйте тег образа в compose.yaml, затем выполните:
docker compose pull n8n
docker compose up -d n8n
docker compose logs --tail=50 n8n
Обычный restart не применяет изменённые переменные окружения и не заменяет образ. После обновления проверьте вход, тестовый workflow и используемые интеграции. При миграции базы простого возврата старого тега может быть недостаточно: восстановление должно использовать совместимые версию приложения и резервную копию данных.
HTTPS и Telegram Trigger
Локальный запуск ещё не даёт внешнему сервису адрес для вебхука. Для тестовых интеграций можно открыть HTTPS-туннель к 5678 и указать внешний URL в n8n. Полная настройка переменной URL, тестового и рабочего webhook и Telegram Trigger — в гайде n8n через HTTPS.
Создайте владельца до открытия туннеля: через него будет доступна и страница входа редактора. Пока компьютер спит или Docker остановлен, автоматизации не работают. restart: unless-stopped помогает после перезапуска Docker, но не превращает ноутбук в круглосуточный сервер.
Готовы запустить свой первый туннель?
Начните использовать TunnelHunt бесплатно уже сегодня и откройте доступ к локальному серверу всего одной командой.
Зарегистрироваться бесплатно →По теме

n8n локально: вебхуки и Telegram Trigger через HTTPS-туннель
11 сентября 2026 г.
Настраиваем публичный URL для n8n на localhost: Docker Compose, N8N_WEBHOOK_URL, тестовый и рабочий webhook, Telegram Trigger и диагностика ошибок.

Docker и TunnelHunt: Как дать временный доступ к контейнеру без боли и страданий
5 сентября 2025 г.
Узнайте, как с помощью одной SSH-команды безопасно предоставить временный доступ к сервису, запущенному в Docker-контейнере, будь то база данных или локальное API.

Как открыть localhost в интернете: публичный HTTPS через SSH
11 сентября 2026 г.
Пошагово открываем локальный сайт из интернета без настройки роутера: SSH-туннель, проверка ссылки, Docker, Vite и диагностика ошибок.

SSH-туннель: примеры -L, -R и -D для проброса портов
12 сентября 2026 г.
Как выбрать локальный, обратный или SOCKS-туннель SSH: команды, проверка соединения, ошибки портов и публичный HTTPS для localhost.