Перейти к содержанию

Обновление n8n self-hosted: Docker Compose, backup, rollback и проверка workflow

Обновлено: 2026-05-29

Открыть мой план

Обновление n8n нельзя сводить к команде docker compose pull. В self-hosted окружении вместе с версией меняются migrations базы, поведение нод, UI, task runners, community nodes и иногда breaking changes. Чем больше workflows подключено к CRM, платежам, Telegram, webhooks и AI, тем важнее обновляться часто, но контролируемо.

Хорошая стратегия: маленькие регулярные обновления, backup перед релизом, тестовый smoke-набор и готовый rollback. Плохая стратегия: полгода не обновлять, потом прыгнуть на latest ночью и смотреть, почему OAuth, Python Code node или worker ведут себя иначе.

Перед обновлением: короткая карта риска

Что используетсяРискЧто проверить
Webhook от внешних сервисовпотеря входящих заявокактивность workflow, production URL, быстрый ответ
Queue modeworkers не поднимаются после миграцииRedis, одинаковый image tag, логи worker
Code node Python/JSизменение режима выполненияtask runners, зависимости, тестовые executions
Community nodesнесовместимость пакетаверсии пакетов, changelog, тестовый стенд
OAuth credentialsredirect mismatch или refresh-token issueдомен, WEBHOOK_URL, callback URL

Не используйте latest вслепую

Для production лучше фиксировать версию образа:

services:
  n8n:
    image: n8nio/n8n:1.99.1
  n8n-worker:
    image: n8nio/n8n:1.99.1

Тег latest удобен на учебном стенде, но в production он ухудшает воспроизводимость. При rollback вы должны понимать, с какой версии на какую переходили.

Порядок безопасного обновления

  1. Запишите текущую версию n8n и image tag.
  2. Прочитайте release notes между вашей и целевой версией.
  3. Сделайте backup PostgreSQL и сохраните .env.
  4. Остановите входящие webhooks, если есть риск двойной обработки.
  5. Обновите staging или временный тестовый инстанс.
  6. Прогоните smoke-test: webhook, HTTP Request, Telegram, CRM, worker.
  7. Обновите production.

Команды для Docker Compose

cd /opt/n8n
# 1. зафиксировать текущую версию
docker compose exec -T n8n n8n --version || true
docker compose images

# 2. backup базы
./scripts/backup.sh

# 3. обновить образ
docker compose pull n8n n8n-worker

# 4. перезапустить сервисы
docker compose up -d n8n n8n-worker

# 5. посмотреть migrations и ошибки
docker compose logs -f --tail=200 n8n

Если у вас один сервис n8n без worker, команды проще. Если queue mode, следите, чтобы main и worker были на одной версии образа.

Smoke-test после обновления

ТестКак выполнитьЧто считается успехом
UIоткрыть редактор, список workflows, executionsнет ошибок авторизации и бесконечных loaders
Webhookcurl -X POST в тестовый workflowexecution появился, response корректный
Workerзапустить workflow с тяжёлой HTTP/Code операциейworker забрал job, execution завершился
Credentialsнажать Test в ключевых credentialsтокены читаются, нет ошибки расшифровки
Business flowсоздать тестовую заявку в Tilda/CRMзаявка прошла до конечной системы без дублей

Rollback: как откатиться без паники

Самый надёжный rollback — вернуть предыдущий image tag и восстановить backup базы, если migrations уже изменили схему. Просто откатить Docker image иногда недостаточно.

cd /opt/n8n
# вернуть старый tag в docker-compose.yml, затем:
docker compose pull n8n n8n-worker
docker compose stop n8n n8n-worker
./scripts/restore-postgres.sh backups/postgres/n8n_before_update.dump
docker compose up -d n8n n8n-worker

Если обновление затронуло только UI или ноды без migrations, может хватить возврата image tag. Но это нужно подтверждать логами и smoke-test, а не предполагать.

Типовые ошибки после обновления

  • Workers не стартуют. Проверьте одинаковую версию образа, Redis env и команду worker.
  • Credentials cannot be decrypted. Проверьте N8N_ENCRYPTION_KEY, он не должен меняться.
  • Community node сломалась. Временно отключите workflow, обновите пакет или замените на HTTP Request.
  • Python Code node ведёт себя иначе. Проверьте task runners и режим выполнения кода.
  • Webhook даёт 404. Проверьте, активен ли workflow, не изменился ли path, корректен ли WEBHOOK_URL.

Связанные материалы

Практическое применение страницы

Материал «Обновление n8n self-hosted: Docker Compose, backup, rollback и проверка workflow ¶» лучше использовать как точку входа в рабочий маршрут, а не как изолированную справку. Перед внедрением выберите конкретный процесс, источник данных, владельца и ожидаемый результат. Это помогает быстро понять, какая страница базы нужна дальше: рецепт, диагностика, интеграция, нода или production-playbook.

Для любой автоматизации в n8n полезно заранее описать входной item, обязательные поля, внешние сервисы, write-действия и способ отката. Если эти детали не зафиксированы, даже простой workflow может стать неуправляемым: дублирует заявки, теряет часть items, отправляет уведомления не тем людям или ломается при изменении формата API.

Минимальный чеклист

  • Определите, что является успешным результатом и кто его подтверждает.
  • Проверьте happy path, пустой вход, повтор события и сбой внешнего сервиса.
  • Добавьте логирование execution id, source, external id и статуса без секретов.
  • Свяжите страницу с ближайшим рецептом, ошибкой или playbook.
  • Навигатор — открыть связанный материал для проверки контекста.
  • Диагностика — открыть связанный материал для проверки контекста.
  • Рецепты — открыть связанный материал для проверки контекста.
  • Playbooks — открыть связанный материал для проверки контекста.