VPS с самостоятельным администрированием

Бэкап n8n: база, файлы и ключ шифрования

Сохраняйте комплект для восстановления

Экспорт workflow не заменяет полный бэкап. Этой установке нужны база PostgreSQL, постоянный каталог n8n и прежний ключ шифрования. В БД находятся сценарии, аккаунты, credentials и состояние выполнений. В volume могут храниться бинарные файлы выполнений и другие данные. .env содержит секреты для чтения credentials и связи сервисов.

В архиве есть backup.py. Запускайте его из распакованного каталога установки через Python 3.11 или новее. Он приостанавливает n8n и runner на время дампа и архива файлов, затем запускает сервисы, работавшие до бэкапа. Будет короткий простой: заранее остановите приём важных событий или настройте повторную доставку у отправителя. Процедура рассчитана на один экземпляр n8n без других процессов, меняющих эти volumes.

mkdir -p "$HOME/n8n-backups"
python3 backup.py "$HOME/n8n-backups/$(date -u +%Y%m%dT%H%M%SZ)"
docker compose ps

В закрытом каталоге появятся конфигурация, database.dump, n8n-data.tar.gz и manifest SHA-256. При сбое любого шага или запуска сервисов остаётся метка INCOMPLETE. Не используйте такой каталог как успешный snapshot. После неудачного бэкапа также проверьте состояние контейнеров: доступность сервиса и пригодность копии — разные задачи.

В копии есть секреты в открытом виде. Зашифруйте её и перенесите с VPS выбранным закрытым каналом. Второй каталог на том же диске не защищает от потери сервера. Кэш сертификатов Caddy не включён: новый сервер получит сертификаты заново с учётом лимитов центра сертификации.

Репетиция на новой изолированной установке

Восстанавливайте только доверенные копии. Контрольные суммы обнаруживают повреждение, но не подтверждают автора архива. Используйте новый VPS или пустой тестовый Compose-проект без прежних volumes n8n и БД. Эти команды не предназначены для восстановления поверх действующей установки. При любой ошибке остановитесь и не переходите к запуску приложения.

Распакуйте тот же комплект в новый каталог и выполните:

SNAPSHOT_DIR=/secure/path/to/your-snapshot
python3 verify-backup.py "$SNAPSHOT_DIR"
install -m 600 "$SNAPSHOT_DIR/.env" .env
cp "$SNAPSHOT_DIR/compose.yaml" "$SNAPSHOT_DIR/compose.bootstrap.yaml" \
   "$SNAPSHOT_DIR/compose.recovery.yaml" "$SNAPSHOT_DIR/Caddyfile" \
   "$SNAPSHOT_DIR/init-db.sh" .
docker compose pull postgres n8n runners archive restore-data
docker compose -f compose.yaml -f compose.recovery.yaml up -d --wait postgres
docker compose run --rm --no-deps -T restore-data \
  'test -z "$(ls -A /data)" || { echo "Refusing non-empty volume" >&2; exit 1; }; tar -xzf - -C /data; chown -R 1000:1000 /data' \
  < "$SNAPSHOT_DIR/n8n-data.tar.gz"
docker compose -f compose.yaml -f compose.recovery.yaml exec -T postgres \
  pg_restore -U n8n -d n8n --no-owner --no-acl --exit-on-error \
  < "$SNAPSHOT_DIR/database.dump"
docker compose -f compose.yaml -f compose.recovery.yaml run --rm --no-deps -T n8n \
  unpublish:workflow --all
docker compose -f compose.yaml -f compose.recovery.yaml up -d postgres n8n runners

Recovery override помещает n8n, runner и БД во внутреннюю Docker-сеть и не запускает публичный proxy. Пока вы проверяете восстановленную установку, запросы к внешним API заблокированы. Подключитесь через SSH-туннель из инструкции установки.

Проверьте повторы до подключения к сервисам

Снятие с публикации отключает production-триггеры, но не удаляет queued, waiting и уже записанные выполнения. Просмотрите и отмените устаревшие ожидающие задачи. Snapshot откатывает состояние к моменту копирования; внешние системы могли уже обработать события, которые в копии ещё считаются незавершёнными. Повтор способен отправить дубликат сообщения, повторить запись или платный запрос.

Проверьте вход, наличие workflow, файлов и credentials на безвредных данных. Выберите сценарии для отдельной повторной публикации. Только после проверки ожидающих задач остановите recovery-сервисы и верните обычную конфигурацию:

docker compose -f compose.yaml -f compose.recovery.yaml stop n8n runners postgres
docker compose --profile public up -d

Не генерируйте .env заново, не меняйте ключ шифрования без процедуры и не запускайте старый n8n поверх обновлённой БД. Для восстановления после обновления сохраняйте отдельную копию до смены версии.

Все руководства по n8n.

Официальные источники: n8n CLI recovery commands, Docker internal networks.

Тарифы из текущего каталога

Сейчас не удалось загрузить планы. Смотрите актуальные тарифы на странице цен.