Введение
Команда разработчиков n8n выпускает обновления почти каждую неделю (а иногда и чаще). В новых версиях появляются свежие узлы (Nodes) для популярных сервисов, исправляются критические баги и добавляются мощные фичи, такие как AI Agents или Advanced Execution Logic.
Но у новичков, которые развернули свою первую инсталляцию n8n на сервере (селф-хост), возникает логичный страх: "А что, если я нажму кнопку 'Обновить', и все мои 50 сценариев, ключи API и базы данных просто исчезнут?".
В этой статье мы дадим пошаговую инструкцию, как безопасно обновить n8n через Docker (именно этот способ установки является самым популярным и рекомендуемым), гарантированно сохранив все ваши данные.
Как n8n хранит ваши данные в Docker?
Чтобы понять, почему данные не теряются при правильном обновлении, нужно знать базовый принцип работы Docker: разделение контейнера и данных.
Контейнер n8n — это просто программа. Её можно удалить, остановить или выбросить. А вот данные (ваши
Workflow, настройки, логины) хранятся в специальном месте — Docker Volume (или в
примонтированной папке на вашем сервере, обычно это ~/.n8n). Пока вы физически не удалите эту
папку с жесткого диска сервера, с вашими сценариями ничего не случится, сколько бы раз вы ни удаляли сам
контейнер.
Шаг 1: Подготовка и бэкап (Обязательно!)
Никогда не обновляйтесь без бэкапа. Одно неверное движение — и дни работы насмарку.
Делаем резервную копию файлов
- Подключитесь к вашему серверу по SSH (например, через терминал или PuTTY).
- Остановите текущий контейнер n8n. Если вы запускали его через Docker Compose, перейдите в папку с
файлом
docker-compose.yml и выполните команду:
docker compose down
- Сделайте архив папки с данными. Если ваша папка лежит в домашней директории пользователя
(
~/.n8n), выполните резервное копирование:
tar -czvf n8n_backup_$(date +%F).tar.gz ~/.n8n
docker-compose.yml и выполните команду:
docker compose down
~/.n8n), выполните резервное копирование:
tar -czvf n8n_backup_$(date +%F).tar.gz ~/.n8n
Теперь, даже если сервер сгорит, у вас есть архив n8n_backup...tar.gz, в котором лежат все
ваши сценарии.
Шаг 2: Обновление образа (Image) Docker
Пришло время сказать Docker, чтобы он скачал самую свежую версию программы.
Находясь в папке, где лежит ваш docker-compose.yml, выполните команду:
docker compose pull
Эта команда просмотрит ваш файл конфигурации, увидит, что там указан образ n8nio/n8n:latest
(или другая ветка), и скачает последнюю доступную версию с серверов Docker Hub. Ваши старые контейнеры
при этом не пострадают, Docker просто загрузит новые файлы "на склад".
Шаг 3: Перезапуск n8n с новой версией
Теперь нужно удалить старый контейнер и запустить новый на основе только что скачанного свежего образа. Выполните ту же команду, которой вы изначально запускали n8n:
docker compose up -d
Что происходит в этот момент: Docker видит, что образ обновился. Он останавливает старый
контейнер n8n (если вы не остановили его на шаге 1), удаляет его, создает новый контейнер из свежего
образа и автоматически "пристегивает" к нему вашу старую папку ~/.n8n с данными.
Флаг -d запускает процесс в фоновом режиме.
Шаг 4: Проверка логов базы данных
Иногда при мажорных обновлениях (например, переход с версии 0.223.x на 1.0.0) n8n должен выполнить миграцию базы данных (изменить структуру таблиц в SQLite или PostgreSQL). Этот процесс может занять от пары секунд до нескольких минут, если у вас огромная история выполнения (Execution History).
Чтобы убедиться, что всё прошло гладко, посмотрите логи запуска:
docker compose logs -f
Вы должны увидеть строчку "Editor is now accessible via: http://localhost:5678/". Нажмите
Ctrl+C для выхода из просмотра логов.
Перейдите в браузер по адресу вашего n8n, обновите страницу. Вы должны увидеть старые логины, все свои сценарии и новую версию в нижнем левом углу!
Возможные проблемы и их решение
- Ошибка 502 Bad Gateway: n8n еще не успел запуститься (миграция базы данных). Подождите 2-3 минуты и обновите страницу.
- Ошибка "Database lock": Если вы используете встроенную БД SQLite (по умолчанию),
иногда она блокируется старым процессом. Помогает перезагрузка самого сервера
(
sudo reboot), а затем повторный запускdocker compose up -d. - Краш контейнера после обновления: Если новая версия несовместима с вашими
плагинами, откатитесь назад. Для этого откройте файл
docker-compose.yml(через командуnano docker-compose.yml), найдите строкуimage: n8nio/n8n:latestи заменитеlatestна номер предыдущей стабильной версии, напримерn8nio/n8n:1.45.0. Затем сделайте pull и up. - Deprecated ноды: откройте каждый воркфлоу и проверьте, не подсвечены ли ноды как устаревшие (предупреждающий значок)
- Изменения в выражениях: читайте changelog на странице релиза — иногда меняется обработка null/undefined в expressions
- Кастомные ноды (community nodes): проверьте совместимость установленных сторонних нод с новой версией на их GitHub
- Webhook URL: формат обычно не меняется, но если домен/протокол поменялись — обновите вручную
Заключение
Обновление n8n через Docker — это рутинная задача, занимающая не более минуты. Главное правило: не
используйте команду docker rm -v (которая удаляет volumes), всегда делайте бэкап папки
с базой данных (SQLite) и не бойтесь откатываться на предыдущую точную версию образа (тег версии),
если что-то пошло не так.
Breaking changes: что проверить перед мажорным обновлением
Обновление в рамках одной мажорной версии (например, 1.45 → 1.52) почти всегда безопасно. Переход через мажорную версию (1.x → 2.0) требует внимательности:
Безопасный подход: разверните копию n8n с новой версией на отдельном порту/поддомене, импортируйте туда экспортированные воркфлоу, протестируйте, и только потом обновляйте production.
Автоматизация обновлений через Watchtower
Если не хочется обновлять вручную каждый раз — Watchtower следит за новыми версиями образов и автоматически обновляет контейнеры:
version: "3.8"
services:
watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 86400 n8n # проверка раз в сутки, только контейнер n8n
restart: unless-stopped
Предупреждение: автообновление production-системы без тестирования рискованно. Для критичных воркфлоу лучше отключить автообновление мажорных версий и обновлять вручную после проверки changelog. Watchtower можно настроить только на patch-обновления через явное указание тега вместо latest.
Откат на предыдущую версию: подробная инструкция
Если после обновления что-то сломалось — откат занимает 2 минуты при наличии бэкапа:
# 1. Останавливаем текущий контейнер
docker compose down
# 2. В docker-compose.yml меняем тег версии на предыдущий стабильный
# image: n8nio/n8n:latest → image: n8nio/n8n:1.45.0
# 3. Восстанавливаем бэкап базы данных (если использовался PostgreSQL)
cat backup_before_update.sql | docker exec -i postgres psql -U n8n_user -d n8n
# 4. Запускаем со старой версией
docker compose up -d
Важно: откатывать стоит и схему БД, и образ одновременно — миграции базы данных в новых версиях n8n часто несовместимы со старым кодом приложения в обратную сторону.
Как узнать, на какой версии n8n работает ваш сервер
# Через Docker:
docker exec n8n n8n --version
# Через интерфейс n8n:
# Settings → About → версия указана внизу страницы
# Через API:
curl http://localhost:5678/healthz
Рекомендуется фиксировать версию явно в docker-compose.yml (например n8nio/n8n:1.52.1) вместо latest — это даёт контроль над моментом обновления и исключает неожиданные изменения после случайного docker compose pull.
Часто задаваемые вопросы
Как узнать последнюю версию n8n?
Актуальную версию смотрите на странице релизов github.com/n8n-io/n8n/releases или выполните в контейнере команду docker exec n8n n8n --version. Список тегов Docker-образов — на hub.docker.com/r/n8nio/n8n/tags. Использование тега :latest всегда подтягивает самую свежую стабильную версию при docker compose pull.
Как обновить n8n через Docker одной командой?
Выполните: docker compose pull n8n && docker compose up -d n8n. Перед этим сделайте бэкап базы данных и папки volume. Контейнер пересоздастся с новым образом, данные в volume останутся нетронутыми.
Сколько времени занимает обновление n8n?
Сама команда обновления выполняется 1–3 минуты, включая скачивание нового образа и миграцию базы данных при первом запуске. На время миграции воркфлоу временно недоступны — это нормально, особенно при переходе через несколько мажорных версий.