Послезавтра, 15 декабря, выходит n8n 2.0. Обновляется он достаточно часто. Ниже описан безопасный способ обновления при использовании Docker с сохранением данных. В последних 2 пунктах я описал два варианта - при обновлении на стабильную релизную версию и для обновления на бету. Инструкция актуальна для n8n, развернутого через docker.

В этой инструкции предполагается, что n8n запущен в контейнере с названием n8n, a volume с данными для него называется n8n_data. Как установить и настроить такую связку я писал ранее

1. Бэкапим текущий n8n

Если хостинг позволяет делать снэпшоты VPS-ки и откатываться к ним - то можно сделать снэпшот перед обновлением(тогда ручной бэкап из следующего пункта можно не делать и сразу переходить к п.2).

Создадим архив с данными из volume перед обновлением:

docker run --rm \
  -v n8n_data:/data \
  -v $(pwd):/backup \
  busybox \
  tar czf /backup/n8n-backup-$(date +%d-%m-%Y).tar.gz /data

После выполнения в текущей директории появится файл: n8n-backup-DD-MM-YYYY.tar.gz

⚠️ Внимание!
Откат на предыдущую версию не всегда возможен простой заменой образа, так как иногда миграции БД могут быть необратимыми. Убедитесь что архив с бэкапом действительно создался.

‼️ Также учитывайте, что при обновлении с версии 1 на 2 beta некоторые воркфлоу у вас могут сломаться(для этого в последних минорных версиях есть migration tool, доступный в разделе Settings > Migration Report

Проверить наличие созданного архива можно командой:

ls -l

2. Останавливаем и удаляем текущий контейнер n8n

Команда удаления предварительно остановит контейнер:

docker rm -f n8n

3. Качаем образ с нужной версией n8n

Для обновления на последнюю стабильную(релизную) версию:

docker pull docker.n8n.io/n8nio/n8n:latest

Или же(для обновления на бета-версию):

docker pull docker.n8n.io/n8nio/n8n:next

4. Запускаем обновленный n8n

Для стабильной версии:

docker run -d \
  --name n8n \
  --restart=always \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  docker.n8n.io/n8nio/n8n:latest

Для бета-версии:

docker run -d \
  --name n8n \
  --restart=always \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  docker.n8n.io/n8nio/n8n:next

Готово! После того, как выполнили команду, немного ждем и проверяем в веб-интерфейсе, поменялась ли версия.

Как откатиться из бэкапа на предыдущую версию, если что-то пошло не так

Откат n8n и восстановление данных из volume

Если вдруг после обновления n8n предложил создать админскую учетку, а потом запустился «пустым» (без workflows и credentials), то скорее всего, причина в том, что при обновлении был некорректно указан volume(я, например, опечатался). Данные при этом сохранены, но текущий n8n "смотрит" в новый, пустой volume.

Ищем нужный volume с данными n8n

Посмотреть список всех volumes:

docker volume ls

Дальше для каждого "подозрительного" volume выполнить:

docker run --rm \
  -v ИМЯ_VOLUME:/data \
  busybox \
  ls -la /data

В нужном volume должны быть вот эти данные:

  • database.sqlite

  • config

  • workflows

  • credentials

"Запоминаем" жертву и идем смотреть, какой volume используется текущий контейнер n8n**

docker inspect n8n | grep -A 10 Mounts

Если volume отличается от найденного на предыдущем шаге — n8n запущен не с теми данными.

Посмотреть перечень volume-ов и найти «потерявшегося» еще можно в интерфейсе portainer-а, по его наименованию, дате создания и метке Unused

Далее удаляем текущий контейнер n8n

docker rm -f n8n

И запускаем n8n с правильным volume

Перед тем как выполнять команду, нужно обязательно убедиться, что теперь будет указан корректный volume, в котором найден database.sqlite

docker run -d \
  --name n8n \
  --restart=always \
  -p 5678:5678 \
  -v ИМЯ_ПРАВИЛЬНОГО_VOLUME:/home/node/.n8n \
  docker.n8n.io/n8nio/n8n:latest

Ждем, пока n8n запустится и проверяем, появилась ли информация.
На случай если данных нет ни в одном volume - восстанавливаем данные из бекапа.

Инструкция по установке n8n на свой сервер

Комментарии (1)


  1. geniusarea
    13.12.2025 15:39

    Как пробросить интерфейс n8n наружу, не применяя cloudflare?