# Резервное копирование workflow в приватный GitHub

**Задача:** получать workflow из n8n API, удалять часть чувствительных полей, сравнивать снимок с предыдущим и создавать коммит при изменении.  
**Сложность:** высокая.  
**Схема:** Schedule Trigger → конфигурация → проверка private в GitHub API → постраничный n8n API → очистка → сравнение → GitHub Contents API → Telegram. Отдельная ветка Error Trigger отправляет общее сообщение об ошибке.  
**Узлы:** Schedule Trigger, Code, HTTP Request, IF, Error Trigger, Telegram.  
**Зависимости:** n8n 2.42.6 с доступным API, **приватный** GitHub-репозиторий, Telegram-бот.

## Установка
1. Создайте приватный репозиторий GitHub и ограниченный токен с правами на его содержимое. Проверяйте, что он остаётся приватным и его история доступна только нужным людям.
2. Создайте отдельный n8n API key только с необходимыми правами чтения workflow. В n8n создайте два HTTP Header Auth credential: для n8n заголовок `X-N8N-API-KEY`, для GitHub — `Authorization` со значением вида `Bearer <ваш токен>`. Не записывайте значения в параметры узлов или JSON.
3. В узле «Настройки» замените `n8nBase`, `owner`, `repo`, `branch`, `path`, `chatId`. Укажите HTTPS-адрес собственного n8n. Подключите соответствующие credentials к каждому HTTP-узлу и Telegram-бота к обоим узлам уведомлений; в ветке ошибки отдельно укажите ID чата.
4. Проверьте на тестовом n8n и тестовом приватном репозитории. После проверки включите расписание и настройте часовой пояс. Сценарий останавливается, если API сообщает, что репозиторий не приватный.

## Тест и ожидаемый результат
На тестовом экземпляре с двумя неактивными workflow первый запуск создаёт `n8n/workflows.json` и коммит, второй без изменений не создаёт коммит. Изменение тестового workflow вызывает следующий коммит. Для проверки ошибок временно укажите неверный адрес тестового API: данные не должны заменяться, ошибка фиксируется в n8n.

## Безопасность и ограничения
Проверка приватности обязательна, однако права репозитория могут измениться позднее: не публикуйте его и не делитесь историей без проверки. Автоматическая очистка удаляет credential-ссылки, pin/static data, чувствительные поля по имени и некоторые типовые токены; **она не может гарантировать обнаружение всех секретов и персональных данных**, особенно внутри кода, выражений и произвольного текста. Перед использованием проверьте все workflow и добавьте собственную проверку. API, история выполнения, журнал и GitHub могут содержать чувствительную информацию. Это снимок конфигураций, а не резервная копия БД n8n, учётных данных, файлов, истории или настроек сервера; после восстановления credentials назначаются заново. Снимок неактивен и может требовать ручной адаптации. При восстановлении учтите, что совпадающие ID могут перезаписать существующие workflow. Выгрузка ограничена 100 страницами API. В изолированном тесте использовались фиктивные API с двумя страницами, проверены очистка тестового поля, создание первой версии и отсутствие коммита при повторе; реальные GitHub, n8n API и Telegram не проверялись.

## Совместимость и проверка
Проверка: 10 ноября 2026 г.; n8n 2.42.6, узлы из стандартной поставки. Проверены импорт JSON и выполнение в изолированной тестовой среде с фиктивными данными. Никакие реальные API и чаты при проверке не использовались. В других версиях проверьте соответствующие версии узлов. Импортируйте сценарий выключенным; перед запуском настройте доступы и выполните собственный тест.

При повторном импорте через CLI совпадающий ID может перезаписать существующий workflow: для новой копии измените или удалите ID в копии файла перед импортом.

Учётные данные в файлах не содержатся. Ограничивайте доступ к workflow, результатам выполнения и журналам; в настройках n8n задайте хранение и удаление данных в соответствии с вашими требованиями.
