Введение
Команда разработчиков 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.
Заключение
Обновление n8n через Docker — это рутинная задача, занимающая не более минуты. Главное правило: не
используйте команду docker rm -v (которая удаляет volumes), всегда делайте бэкап папки
с базой данных (SQLite) и не бойтесь откатываться на предыдущую точную версию образа (тег версии),
если что-то пошло не так.