[grade=B] DC-107: Disaster recovery — one-click full backup + restore
3 endpoints: - POST /api/v1/disaster/backup — complete snapshot (services, config, credentials, Caddyfile, DNS creds, themes, logo, favicon) as downloadable JSON with SHA-256 checksum - POST /api/v1/disaster/restore — restore from uploaded snapshot with checksum verification - GET /api/v1/disaster/status — last backup/restore status Checksum verification prevents restoring corrupted snapshots. Partial restore mode continues on per-file errors. 1633 tests pass.
This commit is contained in:
@@ -65,6 +65,7 @@ const discoverRoutes = require('../routes/discover');
|
||||
const discoverAdoptRoutes = require('../routes/discover-adopt');
|
||||
const catalogRoutes = require('../routes/catalog');
|
||||
const wizardRoutes = require('../routes/wizard');
|
||||
const disasterRoutes = require('../routes/disaster-recovery');
|
||||
const configRoutes = require('../routes/config');
|
||||
const dnsRoutes = require('../routes/dns');
|
||||
const notificationRoutes = require('../routes/notifications');
|
||||
@@ -632,6 +633,14 @@ async function createApp() {
|
||||
APP_TEMPLATES: require('./docker/app-templates'),
|
||||
asyncHandler: ctx.asyncHandler,
|
||||
}));
|
||||
|
||||
// DC-107: Disaster recovery — full backup + restore
|
||||
apiRouter.use(disasterRoutes({
|
||||
servicesStateManager: ctx.servicesStateManager,
|
||||
platformPaths: require('../platform-paths'),
|
||||
log: ctx.log,
|
||||
asyncHandler: ctx.asyncHandler,
|
||||
}));
|
||||
apiRouter.use(updatesRoutes({
|
||||
updateManager: ctx.updateManager,
|
||||
selfUpdater: ctx.selfUpdater,
|
||||
|
||||
Reference in New Issue
Block a user