- сервер отдаёт агенту итоговый каталог (встроенный каталог сервера +
переопределения клиента); если каталог не подходит версии агента —
встроенный каталог агента и предупреждение
- самообновление перед бэкапом: версия сервера новее → скачивание с того же
сервера (только /dl/...), проверка sha256 и запуска новой версии, подмена
с откатом, перезапуск через exec; при ошибке бэкап идёт текущей версией
- галочка «Автообновление» у клиента (по умолчанию включена), версия агента
в списке и карточке, отставшие подсвечены; версия сервера в шапке
- миграция существующей базы: колонки auto_update и agent_version
- backupctl backup --no-update
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Один бинарник backupctl:
- server: API для агентов и restore, веб-морда (один админ), SQLite,
ретеншн GFS, heavy-части, уведомления ntfy, раздача agent.sh/restore.sh;
- backup/plan: сбор по каталогу категорий (files/systemd/xui/compose),
горячие дампы Postgres/Mongo/MySQL, снимок x-ui.db, docker-тома,
digest образов, проверка crontab, потоковая отправка tar.zst;
- restore: провижининг на основе vps_installer с теми же версиями пакетов,
recipes 3x-ui/nebula/sing-box нужных версий, восстановление compose
с заливкой дампов и закреплением образов по digest.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>